用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获取电脑硬件信息及状态的实现方法
Aug 29 Python
Python中装饰器兼容加括号和不加括号的写法详解
Jul 05 Python
python+selenium实现QQ邮箱自动发送功能
Jan 23 Python
python文件选择对话框的操作方法
Jun 27 Python
pandas 时间格式转换的实现
Jul 06 Python
Python交互式图形编程的实现
Jul 25 Python
Python 堆叠柱状图绘制方法
Jul 29 Python
python 实现按对象传值
Dec 26 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
Python tkinter 下拉日历控件代码
Mar 04 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 Python
Python基于gevent实现文件字符串查找器
Aug 11 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 和 XML: 使用expat函数(一)
2006/10/09 PHP
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
PHP时间函数使用详解
2019/03/21 PHP
浅谈Javascript 数组与字典
2015/01/29 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
最全面的JS倒计时代码
2016/09/17 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
2017/07/05 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
Python基于Floyd算法求解最短路径距离问题实例详解
2018/05/16 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
村级四风对照检查材料
2014/08/24 职场文书
民族团结演讲稿范文
2014/08/27 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android