近日,TensorFlow 1.4.0 版本公布在了 GitHub 上,它更新和完善了一些主要功能,修复了一些 bug,并做出了其他变动,其中 API 方面的变动较大。
GitHub 地址:https://github.com/tensorflow/tensorflow/releases/tag/v1.4.0
主要功能与提升
- tf.keras 现在是 TensorFlow API 内核的一部分。
- tf.data 现在是 TensorFlow API 内核的一部分。
- API 现在让步于后向兼容性保证。
- 有关从 tf.contrib.dataAPI 迁移的指导,请参见 https://github.com/tensorflow/tensorflow/blob/r1.4/tensorflow/contrib/data/README.md。
- 主要的新功能包括用于从 Python 生成器构建输入通道的 Dataset.from_generator() 和应用自定义转换功能的 Dataset.apply() 方法。
- 若干个自定义转换功能已添加,包括 tf.contrib.data.batch_and_drop_remainder() 和
- 为简单的分布式 Estimator 训练添加 train_and_evaluate。
- 为计算 DCT-II 而添加 tf.spectral.dct。
- (通过 GPU 和梯度支持)把梅尔频率倒谱(Mel-Frequency Cepstral)系数支持添加到 tf.contrib.signal。
- 为 Windows DLL 问题在 import tensorflow 上添加一个自我检查。
- 在 GPU 上为 tf.depth_to_space 添加 NCHW 支持。
- TensorFlow 调试器(tfdbg):
- 添加 eval 指令,以允许评估 tfdbg 命令行接口中独断的 Python/numpy 表达式。详情参见调试 TensorFlow 程序:https://www.tensorflow.org/programmers_guide/debugger。
- 可用性改进:常用的张量滤波器 has_inf_or_nan 现在被添加到 Session 包装器,并默认 hook。因此没有必要为客户端再次调用.add_tensor_filter(tf_debug.has_inf_or_nan)。
- SinhArcsinh (scalar) 分布被添加到 contrib.distributions。
- 开源 GANEstimator。
- Estimator.export_savedmodel() 现在包含所有有效的、可从服务性输入接收器(Serving Input Receiver)和所有可用的 ExportOutput 构建的服务性签名。比如,除了分类性的输出,一个分类器也许可以提供回归和预测性的输出。从这些输出中构建签名允许 TF 服务通过不同的 API(分类、回归和预测)满足请求。进而,serving_input_receiver_fn() 现在也许可指定作为输入的节点的替代性子集。比如,这允许为接受原始张量而不是系列化的 tf.Example 分类器生成一个预测签名。
- 添加 tf.contrib.bayesflow.hmc。
- 添加 tf.contrib.distributions.MixtureSameFamily。
- 每次默认迭代之后总是重新调整 Dataset.shuffle()。
- 添加 tf.contrib.bayesflow.metropolis_hastings。
- 添加 log_rate parameter to tf.contrib.distributions.Poisson。
- 扩展 tf.contrib.distributions.bijector API 以处理一些 non-injective 转换。
- Java:
- 用于提高类型安全性的泛型。
- 支持多维度弦张量。
- 支持在 Linux 和 OS X 上加载自定义运算。
- 我们所有的预构建二进制已通过 CUDA 8 和 cuDNN 6 构建完成。我们将发行带有 CUDA 9 和 cuDNN 7 的 TensorFlow 1.5 版本。
Bug 修复与其他改变
- tf.nn.rnn_cell.DropoutWrapper 现在更在意放弃 LSTM 状态。具体来讲,它不再放弃一个 LSTMStateTuple 的 c(内存)状态。新的行为为 LSTM 和堆栈 LSTM 带来了合适的 dropout 行为。这一 Bug 修复遵从了已发表文献的建议,但是一个行为改变。状态 dropout 行为也许通过新的 dropout_state_filter_visitor 参数被自定义。
- 删除 tf.contrib.training.python_input。通过新的 tf.contrib.data.Dataset.from_generator 方法,相同行为在一个更加灵活和可重用的工具包中是可用的。
- 修复 tf.contrib.distributions.Affine 错误计算的 log-det-jacobian。
- 修复 tf.random_gamma 错误处理的非批处理、标量绘制。
- 在 TensorForest TreePredictionsV4Op 中重新解决一个竞赛条件。
- 谷歌云存储文件系统、Amazon S3 文件系统和 Hadoop 文件系统支持现在是默认的构建选项。
- 自定义操作库必须链接到 ibtensorflow_framework.so(安装在 tf.sysconfig.get_lib())。
- 改变 RunConfig 默认行为从而不设置一个随机种子,保持随机行为在分布式工作器上独立地随机。我们期待这可从整体上提升训练性能。依赖于决定论的模型应该明确地设置一个随机种子。
API 的突破性改变
- tf.contrib.data.rejection_resample() 功能的签名已被改变。它现在返回到一个可用作 Dataset.apply() 参数的函数。
- 删除 tf.contrib.data.Iterator.from_dataset() 方法,并使用 Dataset.make_initializable_iterator()。
- 删除很少使用的和不必要的 tf.contrib.data.Iterator.dispose_op()。
- 通过非后向、可兼容的方式重新排序一些 TFGAN 损失函数。
已知问题
- 在 Python 3 中,Dataset.from_generator() 不支持 Unicode 字符串。你必须早生成器产生它们之前把所有字符串转化为字节对象。
下载
- 源代码(zip):https://github.com/tensorflow/tensorflow/archive/v1.4.0.zip
- 源代码(tar.gz):https://github.com/tensorflow/tensorflow/archive/v1.4.0.tar.gz