TensorFlow 1.0 中改变的API集合

tensorflow升级为1.0之后的版本,很多API发生了改变.
为了帮助您升级现有的TensorFlow,Python代码以匹配以下API更改,tensorflow准备了一个转换脚本.详见:
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/compatibility,在这边我将一些改变列举出来,供您参考。

一、综述:
XLA(实验版):初始版本的XLA,针对TensorFlow图(graph)的专用编译器,面向CPU和GPU。
TensorFlow Debugger(tfdbg):命令行界面和API。
添加了新的python 3 docker图像。
使pip包兼容pypi。TensorFlow现在可以通过 [pip install tensorflow] 命令安装。
更改了几个python API的调用方式,使其更类似 NumPy。
新的(实验版)Java API。
Android:全新人物检测+跟踪演示实现——“Scalable Object Detection using DNN”(带有额外的YOLO对象检测器支持)。
Android:全新基于摄像头的图像风格转换演示,使用了神经网络艺术风格转换技术。

二、重大 API 变动

1、TensorFlow / models已经被移动到一个单独的github库。
2、除法和模运算符(/,//,%)现在匹配Python(flooring)语义。这也适用于 [tf.div] 和 [tf.mod]。要获取基于强制整数截断的行为,可以使用 [tf.truncatediv] 和      [tf.truncatemod]。
3、现在推荐使用 [tf.divide()] 作为除法函数。[tf.div()] 将保留,但它的语义不会回应 Python 3 或 [from future] 机制。
4、tf.reverse() 现在取轴的索引要反转。例如 [tf.reverse(a,[True,False,True])] 现在必须写为 [tf.reverse(a,[0,2])]。 [tf.reverse_v2()] 将保持到     TensorFlow 1.0 最终版。
5、[tf.mul,tf.sub ] 和 [tf.neg] 不再使用,改为 [tf.multiply],[tf.subtract] 和 [tf.negative]。
6、[tf.pack] 和 [tf.unpack] 弃用,改为 [tf.stack] 和 [tf.unstack]。
7、[TensorArray.pack] 和 [TensorArray.unpack] 在弃用过程中,将来计划启用 [TensorArray.stack] 和 [TensorArray.unstack]。
8、tf.merge_all_summaries弃用,改为 tf.summary.merge_all
9、tf.train.SummaryWriter弃用,改为 tf.summary.FileWriter

三、以下Python函数的参数在引用特定域时,全部改为使用 [axis]。目前仍将保持旧的关键字参数的兼容性,但计划在 1.0 最终版完成前删除。
1、tf.listdiff已重命名为tf.setdiff1d以匹配NumPy命名。
2、tf.inv已被重命名为tf.reciprocal(组件的倒数),以避免与np.inv的混淆,后者是矩阵求逆。
3、tf.round现在使用banker的舍入(round to even)语义来匹配NumPy。
4、tf.split现在以相反的顺序并使用不同的关键字接受参数。我们现在将NumPy order 匹配为tf.split(value,num_or_size_splits,axis)。
5、tf.sparse_split现在采用相反顺序的参数,并使用不同的关键字。我们现在将NumPy order 匹配为tf.sparse_split(sp_input,num_split,axis)。注意:我们暂时要求   tf.sparse_split 需要关键字参数。
6、tf.concat现在以相反的顺序并使用不同的关键字接受参数。特别地,我们现在将NumPy order匹配为tf.concat(values,axis,name)。
7、默认情况下,tf.image.decode_jpeg使用更快的DCT方法,牺牲一点保真度来提高速度。通过指定属性dct_method =’INTEGER_ACCURATE’,可以恢复到旧版行为。
8、tf.complex_abs已从Python界面中删除。 tf.abs支持复杂张量,现在应该使用 tf.abs。
9、Template.var_scope属性重命名为.variable_scope
10、SyncReplicasOptimizer已删除,SyncReplicasOptimizerV2重命名为SyncReplicasOptimizer。
11、tf.zeros_initializer()和tf.ones_initializer()现在返回一个必须用initializer参数调用的可调用值,在代码中用tf.zeros_initializer()替换tf.zeros_initializer。
12、SparseTensor.shape已重命名为SparseTensor.dense_shape。与SparseTensorValue.shape相同。
13、分别替换tf.scalar_summary,tf.histogram_summary,tf.audio_summary,tf.image_summary与tf.summary.scalar, tf.summary.histogram,         tf.summary.audio, tf.summary.image。新的摘要ops以名字而不是标签作为它们的第一个参数,意味着摘要ops现在尊重TensorFlow名称范围。
14、使用tf.summary.FileWriter和tf.summary.FileWriterCache替换tf.train.SummaryWriter和tf.train.SummaryWriterCache。
15、从公共API中删除RegisterShape。使用C++形状函数注册。
16、Python API 中的 _ref dtypes 已经弃用。
17、在C++ API(in tensorflow/cc)中,Input,Output等已经从tensorflow::ops命名空间移动到tensorflow。
18、将{softmax,sparse_softmax,sigmoid} _cross_entropy_with_logits的arg order更改为(labels,predictions),并强制使用已命名的args。

四、Bug 修改及其他变动
1、新的运算 op:parallel_stack。
2、为RecordReader/RecordWriter 增加了 tf io 压缩选项常量。
3、添加了 sparse_column_with_vocabulary_file,指定将字符串特征转换为ID的特征栏(feature column)。
4、添加了index_to_string_table,返回一个将索引映射到字符串的查找表。
5、添加string_to_index_table,返回一个将字符串与索引匹配的查找表。
6、添加ParallelForWithWorkerId函数。
7、添加string_to_index_table,返回一个将字符串与索引匹配的查找表。
8、支持从contrib / session_bundle中的v2中的检查点文件恢复会话。
9、添加了tf.contrib.image.rotate函数,进行任意大小角度旋转。
10、添加了tf.contrib.framework.filter_variables函数,过滤基于正则表达式的变量列表。
11、make_template()可以添加 custom_getter_ param。
12、添加了关于如何处理recursive_create_dir现有目录的注释。
13、添加了QR因式分解的操作。
14、Python API中的分割和mod现在使用flooring(Python)语义。
15、Android:预构建的libs现在每晚构建。
16、Android: TensorFlow 推理库 cmake/gradle build 现在归在 contrib/android/cmake下面
17、Android:更强大的会话初始化(Session initialization)代码。
18、Android:当调试模式激活时,TF stats现在直接显示在demo和日志中
19、Android:全新/更好的 README.md 文档
20、saved_model可用作tf.saved_model。
21、Empty op 现在是有状态的。
22、提高CPU上ASSIGN运算的scatter_update的速度。
23、更改reduce_join,使其处理reduction_indices的方式与其他reduce_ops相同。
24、将TensorForestEstimator移动到contrib/tensor_forest。
25、默认情况下启用编译器优化,并允许在configure中进行配置。
26、使指标权重 broadcasting 更加严格。
27、添加新的类似队列的StagingArea和新运算 ops:stages 和 unstage。
持续更新中。。。。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TensorFlow 1.0和2.0是不兼容的版本。如果您有使用TensorFlow 1.0编写的代码,并且想要将其转换为TensorFlow 2.0,您需要进行一些更改。 TensorFlow 2.0具有更加简化的API,并且将eager execution作为默认执行模式。这意味着您无需再显式地构建计算图,而可以直接在代码使用类似Python的语法。 对于TensorFlow 1.0代码的转换,可以使用tf_upgrade_v2脚本来帮助自动转换代码。该脚本将会自动更改您的TensorFlow 1.0代码,并将其转换为TensorFlow 2.0代码。但是,这并不是一个完美的转换过程,因此您仍然需要检查代码是否按照预期工作,并进行必要的手动更改。 另外,TensorFlow 2.0的API和架构与TensorFlow 1.0有很大的不同。因此,如果您想开始使用TensorFlow 2.0,最好的方法是从头开始学习并编写新的代码,而不是直接将TensorFlow 1.0代码转换为TensorFlow 2.0代码。 ### 回答2: TensorFlow 2.0是与先前版本不同的重大更新。虽然TensorFlow 1.x系列被广泛应用于许多领域,但在使用和维护方面仍然存在一些困难。 TensorFlow 2.0旨在使TensorFlow更加易于使用,并降低应用机器学习的门槛。 TensorFlow 2.0具有以下特点: 1. 张量作为默认运算对象,与NumPy兼容性更高。 2. 动态计算图,避免了烦人的图构建过程。 3. 引入Keras作为主要API,使得模型开发和训练更加简单。 4. 使得模型定义、训练和评估的流程更加连贯。 TensorFlow 2.0 API的主要变化是: 1. 弃用了tf.Session(),代之以使用即时执行的Eager Execution。 2. 引入了tf.function(),允许开发者将Python函数转化为TensorFlow图。 3. 融合了Keras API,并提供了更多的高层API组件。 对于TensorFlow 1.x代码,将其转换为TensorFlow 2.0代码并不困难。下面列出了一些方法: 1. 尝试使用tf.compat.v1模块,它提供了许多与TensorFlow 1.x兼容的函数。 2. 使用tf_upgrade_v2工具将代码自动转换为TensorFlow 2.0格式。但是,需要手动解决代码的任何错误和警告。 3. 逐渐采用TensorFlow 2.0的新API,通过重写旧代码来实现。可以先从一些简单的代码开始,逐渐提高难度。 在TensorFlow 2.0使用新的API将带来几个优点。首先,新API是更高级的,更易于使用和维护。其次,API本身集成更紧密,使得深度学习任务的定义、训练和调试更加顺畅。最后,TensorFlow 2.0的动态图机制将使得代码编写更加自然和直观。 ### 回答3: TensorFlow 1.0和2.0是两个版本TensorFlow,其TensorFlow 2.0是TensorFlow的最新版本。虽然它们有很多共同之处,但也有一些不同之处。下面将介绍如何将TensorFlow 1.0代码转换为TensorFlow 2.0代码。 首先,TensorFlow 2.0将eager execution作为默认设置。因此,在TensorFlow 1.0,需要在代码添加一些操作才能启用eager execution。在TensorFlow 2.0,无需启用eager execution,可以直接使用。如果要支持TensorFlow 1.0和2.0,可以使用`tf.enable_eager_execution()`或`tf.compat.v1.enable_eager_execution()`。 其次,TensorFlow 2.0对于一些API进行了更改或删除。例如,用于创建变量的`tf.Variable()`在TensorFlow 2.0被替换为`tf.compat.v1.Variable()`。还有一些其他的API已经被删除,需要将它们替换为相应的新API。 同时,TensorFlow 2.0还引入了一些新的API和功能,例如Keras API、tf.function、tf.data等。Keras API是一个高级API,可以更方便地构建神经网络模型。tf.function是一个装饰器,可以将Python函数转换为TensorFlow的一个可计算的节点,提高图的性能和可移植性。tf.data是一个用于构建输入管道的API,可以更高效地读取和处理数据。 最后,TensorFlow 2.0默认使用了更现代化的特性,例如tf.keras、eager execution、TensorFlow Lite、TensorFlow.js等。 总之,将TensorFlow 1.0转换为TensorFlow 2.0需要注意一些API的更改和新功能的引入。并且建议使用更现代化的特性和API,以获得更好的体验和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值