刚刚,TensorFlow发布了1.5.0正式版,很多人都期待已久,最重大的改动是支持CUDA 9和cuDNN 7,这承诺将使Volta GPUs/FP16上的训练速度翻倍。
此外,Eager execution预览版可用,也将吸引不少初学者。
下面是这次更新的重大变动及错误修复。
重大变动
现在预编译的二进制文件是针对CUDA 9和cuDNN 7构建的。
从1.6版本开始,预编译二进制文件将使用AVX指令。这可能会破坏老式CPU上的TF。
主要特点和改进
Eager execution
预览版现在可用。
TensorFlow Lite
dev预览现在可用。
提供CUDA 9和cuDNN 7支持。
加速线性代数(XLA):
将complex64支持添加到XLA编译器。
bfloat支持现在被添加到XLA基础设施。
使ClusterSpec propagation与XLA设备一起工作。
使用决定性执行程序来生成XLA图。
tf.contrib:
tf.contrib.distributions:
添加tf.contrib.distributions.Autoregressive。
使tf.contrib.distributions QuadratureCompound类支持批处理
从参数中推断tf.contrib.distributions.RelaxedOneHotCategorical dtype。
使tf.contrib.distributions正交族参数化为quadrature_grid_and_prob vs quadrature_degree。
auto_correlation添加到tf.contrib.distributions
添加tf.contrib.bayesflow.layers,一个概率(神经)层的集合。
添加tf.contrib.bayesflow.halton_sequence。
添加tf.contrib.data.make_saveable_from_iterator。
添加tf.contrib.data.shuffle_and_repeat。
添加新的自定义转换:tf.contrib.data.scan()。
tf.contrib.distributions.bijectors:
添加tf.contrib.distributions.bijectors.MaskedAutoregressiveFlow。
添加tf.contrib.distributions.bijectors.Permute。
添加tf.contrib.distributions.bijectors.Gumbel。
添加tf.contrib.distributions.bijectors.Reshape。
支持形状推理(即,包含-1的形状)在Reshape bijector。
添加streaming_precision_recall_at_equal_thresholds,streaming精度计算方法和 O(num_thresholds +预测的大小)时间和空间的复杂性。
更改RunConfig默认行为,不设置随机种子,使得随机行为在分布式Worker上独立随机。期待这一点普遍提高训练效果。依靠determinism的模型应明确设置一个随机种子。
用absl.flags取代了tf.flags的实现。
在fp16 GEMM中添加对CUBLAS_TENSOR_OP_MATH的支持
在NVIDIA Tegra设备上添加对CUDA的支持
错误修复和其他更改
文档更新:
说明只能在64位机器上安装TensorFlow。
添加了一个简短的文档,解释了Estimators如何保存检查点。
为tf2xla网桥支持的操作添加文档。
修复SpaceToDepth和DepthToSpace文档中的小错别字。
在mfcc_mel_filterbank.h和mfcc.h中更新了文档注释,说明输入域是幅度谱的平方,权重是在线性幅度谱(输入的平方)上完成的。
更改tf.contrib.distributions docstring示例以使用tfd别名,而不是ds,bs。
修复tf.distributions.bijectors.Bijector中的文档字符串错别字。
tf.assert_equal不再引发ValueError。现在提出InvalidArgumentError。
更新入门文档和API介绍。
Google云端存储(GCS):
为GCS客户端添加用户空间DNS缓存。
为GCS文件系统定制请求超时。
改进GCS文件系统缓存。
Bug修复:
修正分区整型变量得到错误形状的问题。
修正Adadelta的CPU和GPU实现中的correctness bug。
修复import_meta_graph在处理分区变量时的错误。警告:这可能会破坏使用带有非空的import_scope参数的import_meta_graph后保存的分区变量的图形加载检查点。
修复离线调试器中阻止查看事件的错误。
将WorkerService.DeleteWorkerSession方法添加到gRPC接口来修复内存泄漏。确保主服务器和工作服务器运行相同版本的TensorFlow,以避免兼容性问题。
修复BlockLSTM单元的窥视孔peephole实现中的bug。
通过将dtype的log_det_jacobian转换为与TransformedDistribution中的log_prob匹配来修复bug。
修复import_meta_graph在处理分区变量时的错误,确保tf.distributions.Multinomial不会在log_prob中下溢。在这个变化之前,整型变量的所有分区都用未分区变量的形状初始化; 在这个改变之后他们被正确地初始化。
其他
为bfloat16添加必要的形状util支持。
添加一个方法来使用MonitoredSession的step函数运行ops。
添加DenseFlipout概率层。
训练时有一个新的标志ignore_live_threads。如果设置为True,它会在成功完成训练后,忽略在拆除基础架构时仍然运行的线程,而不是抛出一个RuntimeError。
重新标准化DenseVariational作为其他概率的简单模板层。
tf.data现在支持数据集元素中的tf.SparseTensor组件。
现在可以遍历Tensors。
允许SparseSegmentReduction操作缺少段ID。
修改自定义导出策略以说明多维稀疏浮动分割。
Conv2D,Conv2DBackpropInput,Conv2DBackpropFilter现在支持具有GPU和cuDNNv6支持的任意扩展。
估算器现在支持数据集:input_fn可以返回数据集,而不是张量。
添加RevBlock,这是可逆残留层的高效内存实现。
减少BFCAllocator内部碎片。
将cross_entropy和kl_divergence添加到tf.distributions.Distribution。
添加启用反向传播的tf.nn.softmax_cross_entropy_with_logits_v2 w.r.t.标签。
GPU后端现在使用ptxas编译生成的PTX。
BufferAssignment的协议缓冲区转储现在是确定性的。
将嵌入操作更改为使用DynamicStitch的并行版本。
添加对稀疏多维特征列的支持。
加快只有1个值的稀疏浮点列的情况。
允许稀疏浮动分割以支持多值特征列。
将分位数添加到tf.distributions.TransformedDistribution。
在GPU上添加对tf.depth_to_space的NCHW_VECT_C支持。
在GPU上为tf.space_to_depth添加NCHW_VECT_C支持。
API的更改
在Squeeze操作的C ++ API中将SqueezeDims属性重命名为Axis。
Stream :: BlockHostUntilDone现在返回Status而不是bool。
次要重构:将统计文件从随机移动到常见并移除随机。
贡献者致谢
照例,每次新版发布都离不开那些虽然不是TF团队,但积极工作并作出贡献的开发者,谷歌TensorFlow对下面的开发者致谢,能看到不少中国名字:
Adam Zahran, Ag Ramesh, Alan Lee, Alan Yee, Alex Sergeev, Alexander, Amir H. Jadidinejad, Amy, Anastasios Doumoulakis, Andrei Costinescu, Andrei Nigmatulin, Anthony Platanios, Anush Elangovan, arixlin, Armen Donigian, ArtëM Sobolev, Atlas7, Ben Barsdell, Bill Prin, Bo Wang, Brett Koonce, Cameron Thomas, Carl Thomé, Cem Eteke, cglewis, Changming Sun, Charles Shenton, Chi-Hung, Chris Donahue, Chris Filo Gorgolewski, Chris Hoyean Song, Chris Tava, Christian Grail, Christoph Boeddeker, cinqS, Clayne Robison, codrut3, concerttttt, CQY, Dan Becker, Dan Jarvis, Daniel Zhang, David Norman, dmaclach, Dmitry Trifonov, Donggeon Lim, dongpilYu, Dr. Kashif Rasul, Edd Wilder-James, Eric Lv, fcharras, Felix Abecassis, FirefoxMetzger, formath, FredZhang, Gaojin Cao, Gary Deer, Guenther Schmuelling, Hanchen Li, Hanmin Qin, hannesa2, hyunyoung2, Ilya Edrenkin, Jackson Kontny, Jan, Javier Luraschi, Jay Young, Jayaram Bobba, Jeff, Jeff Carpenter, Jeremy Sharpe, Jeroen BéDorf, Jimmy Jia, Jinze Bai, Jiongyan Zhang, Joe Castagneri, Johan Ju, Josh Varty, Julian Niedermeier, JxKing, Karl Lessard, Kb Sriram, Keven Wang, Koan-Sin Tan, Kyle Mills, lanhin, LevineHuang, Loki Der Quaeler, Loo Rong Jie, Luke Iwanski, LáSzló Csomor, Mahdi Abavisani, Mahmoud Abuzaina, ManHyuk, Marek ŠUppa, MathSquared, Mats Linander, Matt Wytock, Matthew Daley, Maximilian Bachl, mdymczyk, melvyniandrag, Michael Case, Mike Traynor, miqlas, Namrata-Ibm, Nathan Luehr, Nathan Van Doorn, Noa Ezra, Nolan Liu, Oleg Zabluda, opensourcemattress, Ouwen Huang, Paul Van Eck, peisong, Peng Yu, PinkySan, pks, powderluv, Qiao Hai-Jun, Qiao Longfei, Rajendra Arora, Ralph Tang, resec, Robin Richtsfeld, Rohan Varma, Ryohei Kuroki, SaintNazaire, Samuel He, Sandeep Dcunha, sandipmgiri, Sang Han, scott, Scott Mudge, Se-Won Kim, Simon Perkins, Simone Cirillo, Steffen Schmitz, Suvojit Manna, Sylvus, Taehoon Lee, Ted Chang, Thomas Deegan, Till Hoffmann, Tim, Toni Kunic, Toon Verstraelen, Tristan Rice, Urs KöSter, Utkarsh Upadhyay,Vish (Ishaya) Abrams, Winnie Tsang, Yan Chen, Yan Facai (颜发才), Yi Yang, Yong Tang, Youssef Hesham, Yuan (Terry) Tang, Zhengsheng Wei, zxcqwe4906, 张志豪, 田传武
文章来源:新智元
《Python机器学习Kaggle案例实战》课程以案例作为基本讲解单元,围绕案例讲解分析思路,特征和模型选择,编写代码等。每周固定时间提供微信分享答疑。点击下方二维码报名课程