升级到Tensorflow 2.0 踩坑

https://blog.csdn.net/javastart/article/details/102525102

Tensorflow 2.0发布已经有一段时间了,各种基于新API的教程看上去的确简单易用,一个简单的mnist手写识别只需要下面不到20行代码就OK了,

?
?

import tensorflow as tf

mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(512, activation=tf.nn.relu), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation=tf.nn.softmax)])model.compile(optimizer=‘adam‘, loss=‘sparse_categorical_crossentropy‘, metrics=[‘accuracy‘])

model.fit(x_train, y_train, epochs=5)model.evaluate(x_test, y_test)

?
?

于是我一激动,直接更新到了最新版本,直接执行

  • ?
    ?

pip install –upgrade tensorflow-gpu

完成更新,打开以前写的程序,然后我就悲剧了。不管是简单的还是复杂的代码演示,惊讶的发现没有一个可以跑的,最后发现我以前写的tensorflow+Kears教程居然可以跑,结果一跑一个更大的悲剧等着我,直接跟我说CUDA版本不是10.0的版本,版本太低。于是我就认真重新看了tensorflow2.0的版本release说明,发现这么一句话:

Many APIs are either gone or moved in TF 2.0. Some of the major changes include removing tf.app, tf.flags, and tf.logging in favor of the now open-source absl-py, rehoming projects that lived in tf.contrib, and?cleaning up the main tf.* namespace?by moving lesser used functions into subpackages like tf.math.

我终于对这段话有了很深刻与痛苦的领悟。是真的该删的删,该移的移!该抛弃的抛弃、完全没有考虑到开发者的切身感受。

?当你开始运行程序时候,一般会顺序给你下面几个惊喜!

?AttributeError: module
‘tensorflow‘ has no attribute ‘get_variable‘AttributeError: module
‘tensorflow‘ has no attribute ‘placeholder‘AttributeError: module
‘tensorflow‘ has no attribute ‘Session‘

?还有没有天理了,这些不是在tensorflow1.x中必须的吗,怎么说没就没有了,告诉你是真的没有,在tensorflow2.0中,如果还想让它有怎么办?

?用tf.compat.v1.xxxx上面的那些no attribute错误就会解决了。举例

???????tf.Session()改为tf.compat.v1.Session()

然后我很高兴的去继续运行程序,就发现一个大BUG在等我

tensorflow.python.framework.errors_impl.internalerror: cudagetdevice() failed. status: cudageterrorstring symbol not found.

?原因:

找不到cudart64_100.dll,这个是CUDA10.0的,我之前安装的是CUDA9.0,tensorflow2.0不支持了,所以这个必须换,怎么办,一顿卸载安装+配置猛如虎,我终于全部搞定了。在windows10系统下面 Tensorflow 2.0 + VS2015 + CUDA10.0 终于工作了,这个我只是改好了第一个代码,这样改下去,什么时候才完,别担心,后来我又发现了tensorflow官方提供的另外一个神器,可以帮助它代码自动的从v1版本转换到v2版本,可能连tensorflow官方自己也不好意思它跨度这么大的版本更新,所以还算提供了一个贴心的工具。直接cmd之后在命令行运行即可实现代码的自动转换:

?如果你完全不想改动v1版本的代码,怎么办,这么操作即可:???????

import tensorflow.compat.v1 as tftf.disable_v2_behavior()

亲测好用!

?

原文地址:https://www.cnblogs.com/xiexiaokui/p/12339685.html

时间: 2024-08-02 12:38:14

升级到Tensorflow 2.0 踩坑的相关文章

AI相关 TensorFlow -卷积神经网络 踩坑日记之一

上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是google开源出来的人工智能库,由python语言写的 官网地址:http://www.tensorflow.org/   请用科学上网访问 中文地址:http://www.tensorfly.cn/ 当然还有其他AI库,不过大多数都是由python 写的 .net 的AI库叫 Accord.net

nginx + gunicorn + django 2.0 踩坑

部署踩坑 部署踩坑提前准备服务器端准备安装nginx使用uwsgi部署使用gunicorn配置配置nginx配置django中的路径url 提前准备 在本地能够 python(3) manage.py runserver 服务器端准备 安装nginx 为了防止python的某些包没有安装 请先 sudo apt-get install python-dev 然后 sudo apt-get install nginx 使用uwsgi部署 求求你了 别用uwsgi 玩了4个小时 试了不下15种配置方

Win10 安装配置 MongoDB 4.0 踩坑记

redis 官方没有 Windows 版的,微软维护的已经好久没更新了,所以就在想着换成 MongoDB. 于是一趟被我复杂化的踩坑之旅就开始了,同时也记录一下,避免有人遇见跟我一样的问题. 首先在 官网 上下载 msi 安装包开始安装.   我不喜欢把软件装在系统盘,所以我选择 Custom,自己选要装在哪里,然后就跳出来下面这张图.针对下面这张图我翻译一下官方文档上的内容作为解释.  从 MongoDB 4.0 开始,默认情况下,你可以在安装期间配置和启动 MongoDB 作为服务,并在成功

vue2.0 踩坑记录之组件

- did you register the component correctly? For recursive components, make sure to provide the "name" option. 出现如上错误的原因大致有以下三点(我踩坑只踩到了这四种情况,如果还有 之后会更新) 1.未能正确的拼好components单词. 这是个低级错误,应该作为第一步排查的可能 2.定义子组件时没有在父组件的内部定义 子组件一定要在父组件中局部注册 3.局部注册的定义写在了实

.NET CORE 2.0 踩坑记录之ConfigurationManager

在之前.net framework 中使用的ConfigurationManager还是很方便的,不过在.NET CORE 2.0中SDK默认已经不存在ConfigurationManager. 那么如果想向以前一样使用ConfigurationManager 方法 在nugut 上安装System.Configuration.ConfigurationManager 然后在项目中添加app.config 文件 by the way :为啥是app.config?而不是web.config,这是

Angular4.0踩坑之路:探索子路由和懒加载

参考文章: Angular4路由快速入门  http://www.jianshu.com/p/e72c79c6968e Angular2文档学习的知识点摘要--Angular模块(NgModule)http://lib.csdn.net/article/angularjs/59697?knId=641 随着需求的增加,项目的功能也渐渐复杂起来.这个时候,需要将项目模块化,将组件.指令和管道打包成内聚的功能块,正好可以探索一下Angular4中的子路由以及模块的懒加载. 之前在开发的时候,已经在根

.NET Core 从1.1升级到2.0记录(Cookie中间件踩坑)

.NET Core 2.0 新时代 万众瞩目的.NET Core 2.0终于发布了,原定于9.19的dotnetconf大会的发布时间大大提前了1个月,.NET Core 2.0/.NET Standard 2.0的正式发布是.NET 开源跨平台的一个重大里程碑. .NET Core 2.0 SDK下载地址:https://www.microsoft.com/net/download/core#/sdk Visual Studio 2017 15.3下载地址:https://www.visual

人工智能(AI)库TensorFlow 踩坑日记之二

上次 踩坑日志之一 遗留的问题终于解决了,所以作者(也就是我)终于有脸出来写第二篇了. 首先还是贴上 卷积算法的示例代码地址 :https://github.com/tensorflow/models   这个库里面主要是一些常用的模型用tensorflow实现之后的代码.其中我用的是 models/tree/master/tutorials/image/cifar10 这个示例,上一篇也大致讲过了. 关于上次遇到问题是: 虽然训练了很多次,但是每次实际去用时都是相同的结果.这个问题主要原因是

jQuery升级踩坑大全

背景 jQuery想必各个web工程师都再熟悉不过了,不过现如今很多网站还采用了很古老的jQuery版本.其实如果早期版本使用不当,可能会有DOMXSS漏洞,非常建议升级到jQuery 1.9.x或以上版本.前段时间我就主导了这件事情,把公司里我们组负责的项目jQuery版本从1.4.2升级到了jQuery 1.11.3.jQuery官方也为类似升级工作提供了jQuery Migrate插件. 言归正传. 坑从何处来 jQuery 1.11.3是1.x时代的最后一个版本(作者更新:2016年1月