用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案


Posted in Python onMarch 03, 2021

训练的时候当然用gpu,速度快呀。

我想用cpu版的tensorflow跑一下,结果报错,这个错误不太容易看懂。

用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案

大概意思是没找到一些节点。

后来发现原因,用gpu和cpu保存的pb模型不太一样,但是checkpoints文件是通用的。

使用tensorflow-cpu再把checkpoints文件重新转换一下pb文件就可以了。

完美解决!

补充:tensflow-gpu版的无数坑坑坑!(tf坑大总结)

自己的小本本,之前预装有的pycharm+win10+anaconda3+python3的环境

2019/3/24重新安装发现:目前CUDA10.1安装不了tensorflow1.13,把CUDA改为10.0即可(记得对应的cudann呀)

如果刚入坑,建议先用tensorflw学会先跑几个demo,等什么时候接受不了cpu这乌龟般的速度之时,就要开始尝试让gpu来跑了。

cpu跑tensorflow只需要在anaconda3下载。

安装cpu跑的tensorflow:

我的小本本目前已经是gpu版本,cpu版本下红圈里那个版本就好了!

用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案

安装好了后直接在python命令中输入

import tensorflow as tf

如果不报错说明调用成功。

查看目前tensorflow调用的是cpu还是gpu运行:

import tensorflow as tf
import numpy as np
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
print(sess.run(c))

然后把这段代码粘贴到编译器中运行,

看一下运行的结果中,调用运行的是什么

用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案

看给出的是gpu还是cpu就能判断目前运行的是哪一个了

安装gpu版本的tensorflow:

首先第一步要确定你的显卡是否为N卡,

然后上https://developer.nvidia.com/cuda-gpus去看看你的显卡是否被NVDIA允许跑机器学习

用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案

对于CUDA与cudann的安装:

需要到nvdia下载CUDA与cudann,这里最重要的是注意CUDA与cudann与tensorflow三者的搭配,

注意版本的搭配!!!

注意版本的搭配!!!

注意版本的搭配!!!

tensorflow在1.5版本以后才支持9.0以上的CUDA,所以如果CUDA版本过高,会造成找不到文件的错误。

在官网也可以看到CUDA搭配的cudann

用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案

在安装完了cudann时,需要把其三个文件复制到CUDA的目录下,并且添加3个新的path:

用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案

3个path,

用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案

当使用gpu版的tf时,就不再需要安装原来版本的tf,卸载了就好,安装tf-gpu版,

判断自己是否有安装tf包,对于pycharm用户,可以在setting那看看是否安装了tf-gpu

用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案

我使用的环境为:tf1.2+CUDA8.0+cudann5.1

当全部正确安装时

import tensorflow as tf 仍然出错

cudnn64_6.dll问题

关于导入TensorFlow找不到cudnn64_6.dll,其实下载的的是cudnn64_7.dll(版本不符合),把其修改过来就行了。

目录是在:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin下

对于不断尝试扔失败运行GPU版本,可以把tf先删除了重新下

import tensorflow as tf
print(tf.__version__)

查询tensorflow安装路径为:

print(tf.__path__)

成功用GPU运行但运行自己的代码仍然报错:

如果报错原因是这个

ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[10000,28,28,32]

最后关于这个报错是因为GPU的显存不够,此时你可以看看你的代码,是训练集加载过多还是测试集加载过多,将它一次只加载一部分即可。

对于训练集banch_xs,banch_ys = mnist.train.next_batch(1000) 改为

banch_xs,banch_ys = mnist.train.next_batch(100)即可,

而测试集呢print(compute_accuracy(mnist.test.images[:5000], mnist.test.labels[:5000])) 改为

print(compute_accuracy(mnist.test.images, mnist.test.labels))即可

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
深入解析Python中的线程同步方法
Jun 14 Python
Python中单、双下划线的区别总结
Dec 01 Python
Django后台获取前端post上传的文件方法
May 28 Python
python实现windows壁纸定期更换功能
Jan 21 Python
详解Python:面向对象编程
Apr 10 Python
Python入门Anaconda和Pycharm的安装和配置详解
Jul 16 Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
Feb 25 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
Mar 23 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
Jul 01 Python
python time.strptime格式化实例详解
Feb 03 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
Mar 23 Python
神经网络训练采用gpu设置的方式
Mar 03 #Python
解决TensorFlow训练模型及保存数量限制的问题
Mar 03 #Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
Mar 03 #Python
python上下文管理的使用场景实例讲解
Mar 03 #Python
pip install命令安装扩展库整理
Mar 02 #Python
python实现杨辉三角的几种方法代码实例
Mar 02 #Python
python爬虫破解字体加密案例详解
Mar 02 #Python
You might like
php桌面中心(二) 数据库写入
2007/03/11 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
2013/06/20 PHP
PHP函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
简单的JS多重继承示例
2008/03/13 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
详解React 16 中的异常处理
2017/07/28 Javascript
javaScript实现游戏倒计时功能
2018/11/17 Javascript
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
Python 网络编程起步(Socket发送消息)
2008/09/06 Python
如何将python中的List转化成dictionary
2016/08/15 Python
python使用代理ip访问网站的实例
2018/05/07 Python
Python饼状图的绘制实例
2019/01/15 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
python如何实现图片压缩
2020/09/11 Python
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
大专毕业生简历的自我评价
2013/10/20 职场文书
自我评价怎么写正确呢?
2013/12/02 职场文书
买房委托公证书
2014/04/08 职场文书
教代会闭幕词
2015/01/28 职场文书
Python pygame实现中国象棋单机版源码
2021/06/20 Python
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
python双向链表实例详解
2022/05/25 Python