2015 年 11 月份,谷歌宣布开源了深度学习框架 TensorFlow,一年之后,TensorFlow 就已经成长为了 GitHub 上最受欢迎的深度学习框架(参见机器之心文章《深度 | TensorFlow 开源一周年:这可能是一份最完整的盘点》),尽管那时候 TensorFlow 的版本号还是 v0.11。现在,TensorFlow 的一岁生日之后两个月,TensorFlow 社区终于决定将 TensorFlow 的版本号升至 1.x,并也已于昨日发布了 TensorFlow 1.0.0-alpha,其新增了实验性的 Java API,并且提升了对 Android 的支持。
发布地址
官网:https://www.tensorflow.org/versions/r1.0/
GitHub:https://github.com/tensorflow/tensorflow/releases
主要特性和提升
TensorFlow Debugger (tfdbg):命令行接口和 API
增加新的 python 3 docker 镜像
使 pip 包兼容 pypi。现在可以通过 pip install tensorflow 命令来安装 TensorFlow 了
Android:人员检测+跟踪演示,是通过使用了深度神经网络的可扩展目标检测实现的
Android:预构建的 libs 现在每晚(nightly)构建
新的(实验性的)Jave API:https://github.com/tensorflow/tensorflow/tree/master/tensorflow/java
API 的重要更改
TensorFlow/models 被移到了一个单独的 GitHub repository.
除法和取模运算符(/, //, %)现已匹配 Python(flooring)语义。这也适用于 tf.div 和 tf.mod。为了获取强制的基于整数截断的行为,你可以使用 tf.truncatediv 和 tf.truncatemod.
tf.divide 现在是推荐的除法函数。tf.div 还将保留,但其语义将不会响应 Python 3 或 from future 机制.
tf.reverse 现在是将轴的索引反转。例如,tf.reverse(a, [True, False, True]) 现在必须写成 tf.reverse(a, [0, 2])。tf.reverse_v2() 暂时保留,直到 1.0 final 版.
tf.mul、tf.sub 和 tf.neg 被弃用,现在使用的是 tf.multiply、tf.subtract 和 tf.negative.
tf.pack 和 tf.unpack 被启用,现在使用的是 tf.stack 和 tf.unstack.
TensorArray.pack 和 TensorArray.unpack 将被启用,取而代之的是 TensorArray.stack 和 TensorArray.unstack.
以下 Python 函数有参数修改,以在引用特定维度时使用 axis. 我们目前基于兼容性的考量而保留了原来的关键词参数,但我们将在 1.0 final 版中移除它们。
tf.argmax: dimension 变成 axis
tf.argmin: dimension 变成 axis
tf.count_nonzero: reduction_indices 变成 axis
tf.expand_dims: dim 变成 axis
tf.reduce_all: reduction_indices 变成 axis
tf.reduce_any: reduction_indices 变成 axis
tf.reduce_join: reduction_indices 变成 axis
tf.reduce_logsumexp: reduction_indices 变成 axis
tf.reduce_max: reduction_indices 变成 axis
tf.reduce_mean: reduction_indices 变成 axis
tf.reduce_min: reduction_indices 变成 axis
tf.reduce_prod: reduction_indices 变成 axis
tf.reduce_sum: reduction_indices 变成 axis
tf.reverse_sequence: batch_dim 变成 batch_axis, seq_dim 变成 seq_axis
tf.sparse_concat: concat_dim 变成 axis
tf.sparse_reduce_sum: reduction_axes 变成 axis
tf.sparse_reduce_sum_sparse: reduction_axes 变成 axis
tf.sparse_split: split_dim 变成 axis
tf.listdiff 已被重命名为 tf.setdiff1d 以匹配 NumPy 命名.
tf.inv 已被重命名为 tf.reciprocal(分量互逆)以避免和矩阵求逆的 np.inv 混淆
tf.round 现在使用了四舍六入五留双规则语义,以匹配 NumPy.
tf.split 现在以相反的顺序取参数,并使用了不同的关键词。特别地,我们现在将 NumPy 顺序匹配成了 tf.split(value, num_or_size_splits, axis).
tf.sparse_split 现在以相反的顺序取参数,并使用了不同的关键词。特别地,我们现在将 NumPy 顺序匹配成了 tf.sparse_split(sp_input, num_split, axis). 注意:现在我们暂时让 tf.sparse_split 需要关键词参数.
启用 tf.concat 运算符,现在请暂时切换成 tf.concat_v2 . 在 Beta 版中,我们将更新 tf.concat 以匹配 tf.concat_v2 的参数顺序.
tf.image.decode_jpeg 默认使用更快的 DCT 方法. 速度的提升牺牲了一点保真度。你可以通过特定属性 dct_method='INTEGER_ACCURATE'来恢复原来的行为.
tf.complex_abs 已被从 Python 接口移除. 应该使用 tf.abs,它支持复数张量.
模板.var_scope 属性重命名为 .variable_scope
SyncReplicasOptimizer 被移除,SyncReplicasOptimizerV2 重命名为 SyncReplicasOptimizer.
tf.zeros_initializer() 和 tf.ones_initializer() 现在返回一个 callable,其必须用 initializer 参数调用,在你的代码中用 tf.zeros_initializer() 替代 tf.zeros_initializer.
SparseTensor.shape 重命名为 SparseTensor.dense_shape. SparseTensorValue.shape 也一样.
移除了原来的 tf summary 运算符,比如 tf.scalar_summary 和 tf.histogram_summary. 取而代之的是 tf.summary.scalar 和 tf.summary.histogram .
移除 tf.train.SummaryWriter 和 tf.train.SummaryWriterCache.
从公共 API 中移除 RegisterShape . 现在使用 C++ 形状函数注册.
从 Python API 弃用 _ref dtypes .
漏洞修复和其它更改
新指令: parallel_stack.
为 RecordReader/RecordWriter 引入常见的 tf io 压缩选项常量.
添加 sparse_column_with_vocabulary_file,其能指定一个将字符串特征转换为 ID 的特征列(feature column),其中的映射是通过一个词汇表文件定义的.
添加 index_to_string_table,其返回一个将索引映射到字符串的查找表.
添加 string_to_index_table,其返回一个将字符串匹配到索引的查找表.
添加一个 ParallelForWithWorkerId 函数.
支持从 contrib/session_bundle 中的 v2 中的检查点恢复会话.
添加了一个用于任意角度的 tf.contrib.image.rotate 函数.
添加了 tf.contrib.framework.filter_variables,这是一个用于基于正则表达式过滤变量列表的方便函数.
make_template() 加入了一个可选的 custom_getter_ param.
添加了关于现有目录如何被 recursive_create_dir 处理的注释.
添加了用于 QR 因式分解的指令.
Python API 中的除法和取模现在使用 flooring (Python) 语义.
Android:在 contrib/android/cmake 下,用于 TensorFlow Inference 库的 cmake/gradle build
Android:远远更加稳健的会话初始化代码.
Android:当 debug 模式激活时,TF stats 直接出现在演示和日志中.
Android:新的更好的 README.md 文档.
致谢我们的贡献者
这个版本包含了来自谷歌很多人的贡献,此外还有以下贡献者:
我们也非常感激所有提交了问题或帮助解决它们的所有人——提出和回答问题也是激发讨论的一部分。
下载源代码
zip :https://github.com/tensorflow/tensorflow/archive/v1.0.0-alpha.zip
tar.gz:https://github.com/tensorflow/tensorflow/archive/v1.0.0-alpha.tar.gz