最近手欠更新了一下TensorFlow,一下子更新到了2.1版本,其实之前已经看过一些1.x更新到2.0的血泪史,但笔者考虑2.0版本以面世半年之多,是时候更新一下了,于是乎笔者抱着试试看的心态更新了一下,然后就是。。。惨痛的教训,之前的程序完全不能用,本想着该几个程序函数就可以,结果发现哪里是那么简单,下面介绍一下TensorFlow2.0+版本的变化:
1、TensorFlow2.0
TensorFlow 2.0 将包含许多 API 变更,例如,对参数进行重新排序、重新命名符号和更改参数的默认值。手动执行所有这些变更不仅枯燥乏味,而且容易出错。为简化变更过程并让您尽可能顺畅地过渡到 TensorFlow 2.0,TensorFlow 工程团队创建了实用程序 tf_upgrade_v2,可帮助您将旧代码转换至新 API。
某些 API 符号可能无法仅使用字符串替代方案简单升级。为确保 TensorFlow 2.0 仍支持您的代码,升级脚本加入了 compat.v1 模块。此模块将以等效的 tf.compat.v1.foo 引用代替表单 tf.foo 的调用。不过,建议您手动检查此类替代方案,并尽快将其迁移至 tf.* 命名空间(代替 tf.compat.v1.* 命名空间)中的新 API。
此外,由于我们弃用了某些模块(例如 tf.flags 和 tf.contrib),您将无法通过切换至 compat.v1 来实现 TensorFlow 2.0 中的某些变更。升级使用这些模块的代码可能需要额外使用一个库(如 absl.flags)或切换至 tensorflow/addons 中的软件包。
以上内容翻译自国外资料,虽然TensorFlow团队尽力了,但笔者看来毕竟是1到2的飞跃,想迅速熟悉2并不是一件很轻松的事情。
2、compat.v1兼容处理
对于TensorFlow1.x中很多函数:variable_scope、placeholder等好多函数,这里就不列举了,详见TensorFlow官方文档:https://tensorflow.google.cn/api_docs/python/tf/Variable,这里在tf.compat.v1可以找到之前1代的函数,也就是说如果想把之前一代的程序移植过来,都要大刀阔斧的改。
但是,这里不仅仅是改程序就能解决所有的问题,如placeholder函数,之后的博客会具体说,觉不不仅仅是那么简单,笔者已崩溃。
如果对于TensorFlow1.x已经很熟悉了,给大家推荐个文章:tensorflow兼容处理 tensorflow.compat.v1,这篇文章用一个例子,教给大家对于一般的程序如何在1.x的情况下迁移到2.0.
3、TensorFlow2.1
同时,本次更新的重点是增加了对 TPU 的多项支持,而 tf.keras 和 tf.data 这两个常用的 API 也得到了很多新的更新。
在对操作系统的支持上,Windows 和 Linux 系统的 TensorFlow pip 版本默认支持 GPU。进一步支持 TPUTensorFlow 2.1 最大的亮点在于进一步增加对 TPU 的支持。
发行说明地址:https://github.com/tensorflow/tensorflow/releases
如果想详细了解tensorflow2.1请到官方地址查看。
4、一些更老版本的函数更新:
- 1.tf.scalar_summary 修改为:tf.summary.scalar(‘batch_loss’, loss)原因:新版本做了调整
- 2.AttributeError: ‘module’ object has no attribute ‘histogram_summary’修改为:tf.summary.histogram
- 3.tf.merge_all_summaries()改为:tf.summary.merge_all()
- 4.AttributeError: ‘module’ object has no attribute ‘SummaryWriter’:tf.train.SummaryWriter改为tf.summary.FileWriter