255和254掩码区别(255255248掩码长度)〔255.255.254 掩码的ip范围〕

  

  原文泉源 :呆板 人圈

  概要:冲破 对tf.contrib.data.Dataset API盼望 有一个嵌套布局 的更改 。列表现 在被隐式转换为tf.Tensor。你大概 必要 在现有代码中将列表的用法更改为元组。别的 ,如今 还支持程序具有嵌套布局 。

  Tensorflow

  重要 特性 和改进

?在Tensorflow库中添加封装评估量 。所添加的评估量列表如下:

1. 深度神经网络分类器(DNN Classifier)

2. 深度神经网络回归量(DNN Regressor)

3. 线性分类器(Linear Classifier)

4. 线性回归量(Linea rRegressor)

5. 深度神经网络线性组合分类器(DNN Linear Combined Classifier)

6. 深度神经网络线性组合回归量(DNN Linear Combined Regressor)

?我们全部 预构建的二进制文件都是用cuDNN 6构建的。

?import tensorflow如今 运行要快得多。

?将文件缓存添加到GCS文件体系 中,此中 文件内容具有可设置 的最大失效期(configurable max staleness) 。这答应 跨关闭/开放边界 缓存文件内容。

?将轴参数(axis parameter)添加到tf.gather中。

?向tf.pad中添加一个constant_values关键字参数 。

?添加Dataset.interleave转换。

?添加ConcatenateDataset以毗连 两个数据集。

?在TensorFlow中为Poets练习 脚本添加Mobilenet 的支持 。

?将块缓存添加到具有可设置 块巨细 和计数的GCS文件体系 中。

?添加SinhArcSinh Bijector。

?添加Dataset.list_files API 。

?为云TPU引进新的操纵 和Python绑定。

?添加与tensorflow-android相对称的TensorFlow-iOS CocoaPod。

?引入集群分析 器(Cluster Resolver)的根本 实现。

?同一 TensorShape和PartialTensorShape的内存表现 。因此,张量如今 最多有254个维度,而不是255个。

?更改对LIBXSMM的引用版本 ,利用 1.8.1版本。

?TensorFlow调试器(tfdbg):

1. 利用 -s标记 表现 数字张量值的概要,用下令 print_tensor或pt 。

2. 利用 curses UI中的print_feed或pf下令 和可点击链接表现 Feed值。

3. op级别和Python源代码行级别的运行分析器(Runtime profiler)利用 run -p下令 。

?统计分布库tf.distributions的初始版本 。

?一元tf.where和tf.nn.top_k的GPU内核和速率 改进。

?将单调留意 包装器(Monotonic Attention wrappers)添加到tf.contrib.seq2seq。

?添加tf.contrib.signal,一个用于信号处理 惩罚 原语的库 。

?添加tf.contrib.resampler ,它包罗 CPU和GPU操纵 ,用于区分图像的重采样。

  API的突破性更改

?当tf.RewriterConfig在1.2版本的候选版本中可用(它从来没有在实际 版本中应用)后将其从Python API中删除,图重写(Graph rewriting)仍旧 可用 ,只是不像tf.RewriterConfig那样。而是添加显式导入 。

?冲破 对tf.contrib.data.Dataset API盼望 有一个嵌套布局 的更改。列表现 在被隐式转换为tf.Tensor。你大概 必要 在现有代码中将列表的用法更改为元组。别的 ,如今 还支持程序具有嵌套布局 。

  contrib API的更改

?添加tf.contrib.nn.rank_sampled_softmax_loss,这是一个可以进步 秩丧失 (rank loss)的采样softmax变体。

?当他们看到小于或便是 1个单位 的权重时 ,tf.contrib.metrics {streaming_covariance,streaming_pearson_correlation}修改为返回nan。

?在contrib中添加时间序列模子 。有关具体 信息,请参阅contrib / timeseries / README.md。

?在tensorflow / contrib / lite / schema.fbs中添加FULLY_CONNECTED操纵 。

  错误修正以及其他更改

?在python中利用 int64 Tensor index举行 切片时 ,修复strides和begin 范例 失配题目 。

?改进卷积padding文件。

?添加标签常量,gpu,以表现 基于GPU支持的图形。

?saved_model.utils如今 显然是支持SparseTensors的 。

?非最大克制 (non-max suppression)更为有效 的实现。

?除了对在线L2的支持之外,还增长 了对从紧缩 型L2到FtrlOptimizer的支持。

?固定矩盘算 中的负方差 。

?拓展UniqueOp基准测试 ,以涵盖更多的collision案例。

?进步 Mac上GCS文件体系 的稳固 性。

?在HloCostAnalysis中添加时间评估。

?修复Estimator中的错误,即构造函数中的参数不是对用户提供参数的深度复制 。这个错误偶然 中使得用户在创建Estimator之后突变参数,从而导致潜伏 的未界说 的举动 。

?在saver.restore中添加了无查抄 生存 路径。

?在device_mgr中以旧名称注册装备 ,以便轻松转换到集群规范传播 (cluster spec-propagated)的设置 。

?将向量指数添加到分布中。

?添加一个具有bitwise_and,bitwise_or,bitwise_xor和invert函数的按位模块(bitwise module)。

?添加固定网格的ODE集成例程 。

?答应 将边界 转达 到scipy最优化接口。

?将fft_length参数修正为tf.spectral.rfft&tf.spectral.irfft。

?利用 “猜测 ”方法导出的模子 署名 将不再使其输入和输出密钥被静默地忽略 ,且被重写为“输入 ”和“输出” 。假如 一个模子 在1.2版本之前以差别 的名称导出,而且 如今 利用 tensorflow / serving,它将担当 利用 'inputs'和'outputs'的哀求 。从1.2版本开始 ,如许 的模子 将担当 导出时指定的密钥。因此,利用 “输入”和“输出”的推理哀求 大概 会开始有所失败 。为了办理 这个题目 ,请更新任何推理客户端 ,以发送具有练习 器代码所利用 的实际 输入和输出密钥的哀求 ,大概 相反地,更新练习 器代码以分别定名 输入和输出张量为'inputs'和 'outputs'。利用 “分类 ”和“回归”方法的署名 不会受此更改的影响;它们将继承 像从前 一样规范其输入和输出键。

?将内存中的缓存添加到Dataset API中。

?将数据集迭代器中的默认end_of_sequence变量设置为false 。

? [Performance]通过利用 nn.bias_add将use_bias = True设置为2x,可以进步 tf.layers.con2d的性能。

?更新iOS示例以利用 CocoaPods ,并移动到tensorflow / examples / ios中。

?在tf.summary操纵 中添加一个family =attribute,以答应 控制Tensorboard中用于构造 择要 的选项卡名称 。

?当设置 GPU时,假如 在configure脚本中存在哀求 ,则可根据哀求 主动 构建GPU,而不必要 --config = cuda。

?修复CPU / GPU多项式中小概率的不精确 采样。

?在session上添加一个list_devices()API以列出集群中的装备 。别的 ,此更改增长 了装备 列表中的重要 API以支持指定session。

?答应 利用 过参数化的可分离卷积。

?TensorForest多重回归错误修复 。

?框架如今 支持armv7 ,cocoapods.org如今 可表现 精确 的页面。

?为CocoaPods创建iOS框架的脚本。

?如今 ,TensorFlow的Android版本已经被推到了jcenter,以便更方便地集成到应用中 。

?TensorFlow调试器(tfdbg):

1.修复了一个制止 tfdbg利用 多GPU设置的错误。

2.修复了一个制止 tfdbg利用 tf.Session.make_callable的错误。

  Pytorch0.2.0

这里是PyTorch的下一个重要 版本 ,恰好 赶上了国际呆板 学习大会(ICML)。

我们引入了等待 已久的功能,如广播、高级索引 、高蹊径 度梯度,末了 是分布式PyTorch 。

由于引入了广播 ,某些可广播环境 的代码举动 与0.1.12中的举动 差别 。这大概 会导致你现有代码中出现错误。我们在“紧张 破坏 息争 决方法”部分 中提供了轻松辨认 此含糊 代码的方法 。

目次 :

?张量广播(numpy样式)

?张量和变量的高级索引

?高蹊径 度

?分布式PyTorch(多节点练习 等)

?神经网络层和特性 :SpatialTransformers、WeightNorm、EmbeddingBag等

?torch 和 autograd的新应用:矩阵相乘、逆矩阵等

?更轻易 调试,更好的错误信息

?Bug修复

?紧张 的破坏 息争 决方法

张量广播(numpy样式)

简而言之,假如 PyTorch操纵 支持广播,则其张量参数可以主动 扩展为雷同 巨细 (不复制数据)。

PyTorch广播语义密切跟随numpy式广播。假如 你认识 数字广播 ,可以按照之前流程实行 。

一样平常 语义学

假如 以下规则创建 ,则两个张量是“可广播的 ”:

?每个张量具有至少一个维度。

?当从尺寸巨细 开始迭代时,从尾部维度开始 ,尺寸巨细 必须相称 ,此中 一个为1,或此中 一个不存在。

比方 :

  

假如 两个张量x 、y是“可广播”的 ,则所得到的张量巨细 盘算 如下:

?假如 x和y的维数不相称 ,则将尺寸缩小到尺寸较小的张量的前端,以使其长度相称 。

?然后 ,对于每个维度巨细 ,天生 的维度巨细 是沿该维度的x和y的巨细 的最大值。

比方 :

# can line up trailing dimensions to make reading easier

x=torch.FloatTensor(5,1,4,1)

y=torch.FloatTensor( 3,1,1)

(x+y).size()

torch.Size([5, 3, 4, 1])

# error case

x=torch.FloatTensor(5,2,4,1)

y=torch.FloatTensor( 3,1,1)

(x+y).size()

RuntimeError: The size of tensor a (2) must match the size of tensor b (3) at non-singleton dimension 1

更多细节可以在PyTorch文档网站上找到。别的 ,每个torch函数列出了其文档中的广播语义 。

张量和变量的高级索引

PyTorch如今 支持NumPy样式的高级索引的子集。这答应 用户利用 雷同 的[]-样式操纵 在Tensor的每个维度上选择恣意 索引 ,包罗 不相邻的索引和重复的索引。这使得索引战略 更机动 ,而不必要 调用PyTorch的索引[Select, Add, ...]函数。

我们来看一些例子:

  x = torch.Tensor(5, 5, 5)

纯整数组索引—在每个维度上指定恣意 索引

  x[[1, 2], [3, 2], [1, 0]]

  -- yields a 2-element Tensor (x[1][3][1], x[2][2][0])

也支持广播、副本

255和254掩码区别(255255248掩码长度) 255和254掩码区别(255255248掩码长度)〔255.255.254 掩码的ip范围〕 新闻资讯

  x[[2, 3, 2], [0], [1]]

  -- yields a 3-element Tensor (x[2][0][1], x[3][0][1], x[2][0][1])

答应 恣意 索引器外形

  x[[[1, 0], [0, 1]], [0], [1]].shape

  -- yields a 2x2 Tensor [[x[1][0][1], x[0][0][1]], [x[0][0][1], x[1][0][1]]]

可以利用 冒号、省略号

  x[[0, 3], :, :]x[[0, 3], ...]

  -- both yield a 2x5x5 Tensor [x[0], x[3]]

也可以利用 张量来索引!

  y = torch.LongTensor([0, 2, 4])x[y, :, :]

  -- yields a 3x5x5 Tensor [x[0], x[2], x[4]]

假如 选择小于ndim,请留意 利用 逗号

  x[[1, 3], ]

  -- yields a 2x5x5 Tensor [x[1], x[3]]

  高蹊径 度

如今 你可以评估PyTorch中的高阶微分 。比方 ,你可以盘算 Hessian-Vector ,处罚 你的模子 的梯度梯度的范数,实行 unrolled GAN和改良WGAN等。

在0.2版本中,我们已经可以或许 为torch.XXX函数和最盛行 的nn层盘算 更高阶的梯度。别的 的将出如今 下一个版本中 。

这是一个简短的例子 ,处罚 了Resnet-18模子 的权重梯度的范数,使权重的数量 变革 迟钝 。

  

  我们在这里看到两个新概念:

?torch.autograd.grad是一个输入[输出,输入列表(你必要 梯度)]的函数,并返回梯度wrt。这些输入作为元组 ,而不是将梯度累加到.grad属性中 。假如 你想进一步操纵 梯度,这对你会很有效 。

?你可以对梯度举行 操纵 ,并向后调用()。

支持更高蹊径 度的nn层的列表有:

? AvgPool*d, BatchNorm*d, Conv*d, MaxPool1d,2d, Linear, Bilinear 。

? pad, ConstantPad2d, ZeroPad2d, LPPool2d, PixelShuffle。

? ReLU6, LeakyReLU, PReLU, Tanh, Tanhshrink, Threshold, Sigmoid, HardTanh, ELU,Softsign, SeLU。

? L1Loss, NLLLoss, PoissonNLLLoss, LogSoftmax, Softmax2d 。

别的 的将在下一个版本中启用。

为了实现更高阶的梯度 ,我们引入了一种新的autograd.Function写入格式。(写入函数的当前/旧样式完全向后兼容)。你可以点击此处链接阅读更多关于新样式的函数 。

大多数人不写本身 的autograd.Function,它们是低级基元使得autograd引擎完成新操纵 ,你可以指定正向和反向调用。

  分布式PyTorch

我们先容 torch.distributed包 ,答应 你在多台呆板 之间互换 张量。利用 此软件包,你可以通过多台呆板 和更大的小批量扩展网络练习 。比方 ,你将可以或许 实现《Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour》这篇论文。

distributed软件包依照 MPI风格的编程模子 。这意味着你可以得到很多 函数,如send ,recv,all_reduce,它将在节点(呆板 )之间互换 张量 。

对于每个呆板 ,起首 辨认 相互 并分配唯一的数字(品级 ),我们提供简单 的初始化方法:

?共享文件体系 (要求全部 进程 可以访问单个文件体系 )

?IP组播(要求全部 进程 都在同一个网络中)

?环境 变量(必要 你手动分配品级 并知道全部 进程 可访问节点的地点 )

我们的包文档中包罗 有关初始化和可用后端的更多具体 信息,但以下是利用 多播地点 举行 初始化的示例:

  mport torch.distributed as distdist.init_process_group(backend='tcp',

  init_method='tcp://[ff15:1e18:5d4c:4cf0:d02d:b659:53ba:b0a7]:23456',

  world_size=4)

  print('Hello from process {} (out of {})!'.format( dist.get_rank(), dist.get_world_size()))

这将在第3台呆板 上打印Hello from process 2 (out of 4)。

world巨细 是参加 工作的过程的数量 。每个将被分配一个品级 ,它是0和world_size-1之间的数字,在此作业中是唯一的 。它将用作进程 标识符,而且 将被代替 地点 利用 ,比方 ,指定张量应被发送到哪个进程 。

这是一个代码段,表现 怎样 实行 简单 的点对点通讯 :

  

异步p2p函数(isend,irecv)也可用。

然而 ,一些通讯 模式出现频仍 ,导致已经开辟 出更有效 的团体 调用 。他们通常参加 整个过程组,而且 比利用 send / recv的单纯算法要快得多。一个例子是all_reduce:

分布式软件包是相称 低级别的,因此它答应 实现更先辈 的算法 ,并将代码定制到特定的目标 ,但数据并行练习 是我们为此创建高级辅助工具的常见方法。

因此,我们引入了DistributedDataParallel ,这意味着险些 可以更换 nn.DataParallel。

以下是一个代码段,展示了将其添加到现有练习 代码中所需的更改:

  你可以在这里看到更完备 的Imagenet练习 示例

  新的nn层:SpatialTransformers,WeightNorm ,EmbeddingBag等

  新功能

?引入forward_pre_hook来在调用forward函数之前实行 用户指定的闭包 。

?方便访问非叶梯度(non-leaf gradients):

如今 ,要访问并查抄 中心 值的梯度,我们必须利用 钩(hooks)。这不方便举行 简单 的查抄 ,因此,我们引入retain_grad。最好通过一个例子来表明 :

  

?DataParallel如今 支持dicts作为输入

  新图层

?空间变更 神经网络通过F.grid_sample和F.affine_grid 。

?nn.SeLU和nn.AlphaDropout被引入,论文:《自标准 化神经网络》。

?nn.GLU(门控线性单位 )被引入 ,论文:《卷积序列到序列学习》。

?权重归一化如今 通过torch.utils.weight_norm来实现 。

? 如今 可以利用 ignore_index参数盘算 cross_entropy_loss和nll_loss来忽略特定的目标 索引。这是实现掩码的便宜 实用方式,你可以在此中 利用 在盘算 丧失 时忽略的掩码索引。

?F.normalize 实现了按维度的重归一化 。

?F.upsample和nn.Upsample将多个Upsampling层归并 成一个函数。它实现了2d和3d双线性/三线性/近来 的上采样。

?nn.EmbeddingBag:当构建词袋模子 时,实行 一个Embedding 跟Sum或Mean是很常见的 。对于可变长度序列,盘算 降维包涉及掩码。我们提供了一个单一的nn.EmbeddingBag ,它能高效和快速地盘算 降维包,特别 是对于可变长度序列。

?通过bce_with_logits数值稳固 的二进制交错 熵丧失 。

?通过PoissonNLLLoss举行 目标 泊松分布的负对数似然丧失 。

?cosine_similarity:返回x1和x2之间的余弦相似度,沿着dim盘算 。

  练习 效用

学习率调治 程序:torch.optim.lr_scheduler提供了几种无声和智能的方法来调解 当前的学习率。它们在练习 中相称 方便 ,为用户想要做的事变 提供方便 。

提供各种战略 ,可以根据得当 环境 利用 ,更多可以在文档包中阅读:

?ReduceLROnPlateau ,LambdaLR,StepLR,MultiStepLR ,ExponentialLR

ConcatDataset是一个方便的数据集元类,可以归并 和毗连 两个单独的数据集。

torch 和 autograd的新应用

?全部 reduce函数如sum和mean,如今 默认压缩缩小的维度。比方 ,torch.sum(torch.randn(10,20))返回1D Tensor 。

?x.shape,雷同 于numpy。 一个方便的属性,相称 于x.size()。

?torch.matmul,雷同 于np.matmul 。

?按位和 ,或,xor,lshift ,rshift。

?autograd支持反向,gesv,cumprod ,atan2。

?无毛病 的var和std如今 可以通过关键字参数选项 。

?torch.scatter_add - torch.scatter,除了碰到 重复索引时,这些值被求和。

?当没有给出参数时 ,torch.median的举动 雷同 于torch.sum,即它减小全部 尺寸,并返回扁平化Tensor的单个中值。

?masked_copy_已重定名 为masked_scatter_(在masked_copy_上已弃用)。

?torch.manual_seed如今 也seed全部 的CUDA装备 。

?你如今 可以通过关键字参数torch.rand(1000 ,generator = gen)指定随机数天生 器对象。

  错误修复和小改进

如今 ,当将变量转换为bool时,我们会发堕落 误。比方 :

  b = Variable(torch.zeros(1))if b[0]: # errors now

?在CUDA中办理 qr分解中的精确 性错误 。

?支持IBM PowerPC64平台。

255和254掩码区别(255255248掩码长度) 255和254掩码区别(255255248掩码长度)〔255.255.254 掩码的ip范围〕 新闻资讯

?查抄 编译时的CuDNN版本是否在运行时是雷同 的版本。

?改进CUDA分叉子进程 中的错误消息 。

?在CPU上更快的转置拷贝。

?改进InstanceNorm中的错误消息。

?为各种例程添加更多的参数查抄 ,特别 是BatchNorm和Convolution例程 。

?围绕CPU后端的外形 陈诉 更好的错误消息。

?支持每台呆板 高出 8个GPU(办理 CUDA p2p限定 )。

?访问不存在的属性时 ,改进错误消息 。

?变量的T()与Tensor同等 。

?当退出p = 1时,防止除以零。

?修复在非当前装备 上共享CUDA张量。

?当BNε答应 的CuDNN值时,回退到THNN 。

?对于MKL和OMP利用 差别 数量 的线程时 ,修复线程丢失。

?改善利用 CuDNN RNN时的内存利用 。

?用负的padding将ZeroPad2d向后修复 。

?添加假造 tensor.data属性,为用户提供可表明 的错误消息。

?修复Python3的原位分别 。

?在0-dim数组上调用from_numpy时进步 偏差 。

?空的张量在多处理 惩罚 器间共享时不会堕落 。

?修复扩展张量的baddbmm。

?让parallel_apply担当 恣意 输入 。

?张量和变量中的关键字参数如今 是同等 的。

?当Magma不可用时修复torch.inverse。

?为ByteTensor添加逻辑非运算符 。

?在分散/网络 内核中添加装备 判定 提示。

  紧张 的破坏 息争 决方法

如你所见,我们引入了两个不能向后兼容的紧张 更改:

?Numpy样式广播。

?还原函数如sum(1)如今 默以为 keepdim = False。

我们提供差别 级别的Python告诫 ,你可以启用以告诫 你,假如 你利用 不同意 的举动 ,大概 你的代码的举动 已更改 。

  择要

这是一个代码片断 ,你可以添加到脚本的顶部。

添加此代码将天生 突出表现 不兼容代码的告诫 。

修复代码不再天生 告诫 。

  

一旦全部 告诫 消散 ,你可以删除代码段。

  详情

如今 ,让我们看看这三个不相容的变革 与例子。

  利用 (现已弃用)1维视图点分函数

PyTorch的先前版本答应 某些点函数在差别 外形 的张量上实行 ,只要每个张量中的元素数量 相称 即可 。 然后通过将每个张量视为一维来实行 点操纵 。 PyTorch如今 支持广播。 “一维”点举动 被以为 是不保举 的,而且 在张量不可广播但具有雷同 数量 的元素的环境 下会产生Python告诫 。

比方 :

  

在从前 没有发生过的代码中举行 广播

在两张张量不雷同 的环境 下,广播的引入大概 导致向后不兼容的变革 ,但是可以广播并具有雷同 数量 的元素。

比方 :

   torch.add(torch.ones(4,1), torch.randn(4))

从前 会产生一个尺寸为:torch.Size([4,1])的张量 ,但如今 生产的尺寸为:torch.Size([4,4])。

为了资助 辨认 你的代码中大概 存在向后引入的不兼容性的环境 ,你可以将torch.utils.backcompat.broadcast_warning.enabled设置为True,在这种环境 下会天生 一个python告诫 。

比方 :

   torch.utils.backcompat.broadcast_warning.enabled=True

   torch.add(torch.ones(4,1), torch.ones(4))__main__:1: UserWarning: self and other do not have the same shape, but are broadcastable, and have the same number of elements.

请留意 ,此设置可以触发广播有效 利用 的告诫 (包罗 库代码),因此你大概 盼望 在迁徙 代码后关闭此告诫 。

还原函数的KeepDim = False。

要在利用 默认的keepdim参数利用 维度缩减功能时发出告诫 ,请将torch.utils.backcompat.keepdim_warning.enabled设置为True。 比方 :

   torch.sum(torch.ones(2,3), 1)__main__:1: UserWarning: backwards compatibility: call to "sum" uses default value for keepdim which has changed default to False. Consider passing as kwarg.

  3

  3

  [torch.FloatTensor of size 2]

与torch.utils.backcompat.broadcast_warning.enabled一样 ,此告诫 可以从有效 的代码触发,因此你很大概 盼望 在迁徙 代码后禁用此告诫 。

还要留意 ,利用 keepdim = False可以使你现有的代码与广播“正常工作 ”。 比方 :

  

  泉源 : 呆板 人圈

你可能想看: