Tensorflow 1.3.0版本的变更概述
2017年08月02日 由 yining 发表
88739
0
尽管距离Tensoflow 1.2.1版本发布才仅仅一个月,但是1.3.0版本中的软件已经发生了很多变化。开发人员可以在Tensorflow的
Github页面上找到一个详细的发布报告。本文将列出开发人员在升级到Tensorflow v1.3.0之后的一些重要更改。
从cuDNN5.1到cuDNN6
从1.2.1升级到1.3.0版本之后,开发人员也需要更新他们的pc上的cuDNN版本。
二进制发布包(binary distribution)是遵照
NVIDIAs cuDNN进行编译的,其中1.2.1版本使用了cuDNN 5.1。不希望升级的开发人员仍然可以从
源代码中构建自己的二进制文件。
新的cuDNN版本对softmax层有显著的性能改进。一个被添加到cuDNN6的有趣的特征是TensorFlow已经支持的Dilated Convolutions,意为空洞卷积或是扩张卷积。
需要注意的是,自从Tensorflow发布1.1.0版本以来,Mac上的GPU已经不再被支持。尽管开发人员仍然欢迎补丁,但是并不能保证它是否可以工作。
tf.contrib.data.数据集类
tf.contrib.data.数据集类有几个重要的变化。通过使用这个类,开发人员可以从内存中的张量(Tensors)、磁盘上的文件、许多数据格式中创建一个统一的输入管道。它还可以使用dataset.map()函数对每个单独的元素应用函数,或者使用dataset.batch()函数对所有元素进行应用。
这个类中期望嵌套结构(nested structures)的函数现在毫无保留地将列表转换为tf.Tensor。不想用这个函数的用户可以使用元组(tuples)。此外,在Dataset类中也有几个新函数:
如果你想要获得更多的信息,可以参考一下在Github上的
程序员向导中使用数据集类的指南。
高级API函数和统计分布
尽管已经有许多高级API函数被Keras和TFLearn用户使用,Tensorflow在之前的基础上又添加以下功能库:深度神经网络(DNN)分类器,深度神经网络回归量,线性分类器,DNN线性组合分类器,DNN线性组合回归量。它们都是tf.contrib.学习包的一部分,并且Tensorflow的
文档描述了如何使用它们。
一个新的增加功能是
许多统计分布。一个类表示一个统计分布,并使用定义该分布的参数进行初始化。现在已经有很多单变量和多变量分布了。开发人员还可以扩展现有的类,但是必须支持
分布基类中存在的所有函数。对于无效的属性,开发人员可以要求他们的程序引发异常,或者他们可以选择处理NaN值。
下面是一个简短的例子,说明开发人员如何从均匀分布中获得一个随机变量的张量:
现有函数的改动
新版本对现有的函数也有一些小的改动。tf.gather函数,被用于在一个张量中选择变量,现在增加了一个轴参数,将会允许更灵活的收集。
tf.pad函数用于在现有张量周围放置数值,现在支持“常量(constant)”参数。有了这个参数,数值0作为padding被添加为一个现有的张量。现在已经可用的模式是“反射(reflect)”和“对称(symmetric)”。
总体来说,TensorFlow的1.3.0版本的变更还是很值得一看(用)的。
此文为编译作品,作者Roland Meertens,原网址:
https://www.infoq.com/news/2017/07/changes-tensorflow-1-3