Tensorflow 1.3版本更新概览

距离Tensorflow的1.2.1版本发布才过去一个月,但新发布的1.3版本已经包含了诸多更新。开发者可以在Tensorflow Github页找到完整的发布报告。本文则会概述开发者在升级到1.3版本之前和之后应知晓的最重要变化。

从cuDNN 5.1到cuDNN 6

开发者要从1.2.1升级到1.3,还需要升级系统中的cuDNN版本。1.3的编译版本是用NVIDIA的cuDNN 6编译的,而1.2.1用的是cuDNN 5.1。不想升级的开发者还是可以从源代码创建自己的编译版本。cuDNN新版显著提升了softmax层的性能。cuDNN 6新增的一个有趣的功能是膨胀卷积(dilated convolution),Tensorflow已经支持此特性。需要注意的是,从1.1.0版本开始,Tensorflow不再支持Mac上的GPU。虽然开发者还是能得到补丁,但不能保证它能正常运行。

tf.contrib.data.Dataset类

tf.contrib.data.Dataset类获得了一些重要更新。开发者可以使用这个类为自己在Tensors中的数据创建统一的输入流水线,输入来源可以是内存、文件或磁盘,支持多种数据格式。它还能用来对使用Dataset.map()的各个独立元素应用函数,或者对所有使用Dataset.batch()的元素应用函数。这个类中缺少嵌套结构的函数现在把列表隐式地转换成tf.Tensor对象。不想用它的用户可以使用元组来代替。Dataset类中还提供了几个新函数:

  • Dataset.list_files(file_pattern):返回一个Dataset,包含了与file_pattern模式相匹配的文件名字符串。
  • Dataset.interleave(map_func,cycle_length):赋予程序员更大的自由度来处理函数到元素的映射。它仍会对整个dataset应用map_func,但会交叉结果,这样有助于同时处理多个输入文件。
  • ConcatenateDataset:用于扩展了Dataset类的一个类。它的init函数接受两个Dataset作为参数,通过已有的Dataset.concatenate()函数将它们连接起来。

要了解更多信息,开发者应该参阅Github上的开发者指南中关于使用Dataset类的说明。

高级API函数和统计分布

虽然Keras和TFlearn用户已有很多高级API函数可用,Tensorflow又在库中增加了下列函数:DNNClassifier、 DNNRegressor、LinearClassifer、LinearRegressor、DNNLinearCombinedClassifier、DNNLinearCombinedRegressor。这些estimator是tf.contrib.learn包的一部分,使用方法可参阅Tensorflow文档。

新增的一项内容是多重统计分布。使用一个类表示一个统计分布,并用定义这个分布的参数进行初始化。现有很多单变量和多变量的分布。开发者也能扩展已有的类,但是必须继续支持Distribution基类中现有的函数。为避免无效的属性,开发者可以让程序抛出一个异常,或者选择用NaN值处理。下面的例子展示了开发者如何从一个均匀分布中获取一个带有随机变量的张量:

已有函数的改动

已有的函数也有一些改动。tf.gather函数是用来在张量中选取变量的,现在加入了坐标轴参数,可以更灵活地收集数据。

tf.pad函数用来在已有张量周围插入值,现在可支持“CONSTANT”实参。使用这个实参时,padding到已有张量时会使用0来填充已有张量。之前已有的模式是“REFLECT”和“SYMMETRIC”。

推荐文章

沪公网安备 31010702002009号