Win10配置CUDA10+cuDNN7(pytorch,tensorflow-gpu)记录
电脑:联系M4400,双显卡(集显和独显),开机过程长按F1进入BIOS,在设置显卡那里要选择独显类型(看英文提示选择)
环境:Python 3.6.5,pip方式安装包(使用的是winpython,轻便,Anoconda太大了,安装还特别慢)
CPU:I5 4200U @ 1.6GHz
RAM: 8GB
显卡:GTX GT 730M(Laptop),很老的显卡,2013年出的,显存2G,CUDA核384个
系统:win10 64位
cudnn下载地址(需要注册):https://developer.nvidia.com/rdp/cudnn-archive
cuda10下载地址:https://developer.nvidia.com/cuda-toolkit
Pytorch安装包(可以单独使用IDM下载whl安装包再pip安装):https://pytorch.org/get-started/locally/
Visual Studio 2015下载地址(在线安装包,需要登陆微软账号):https://my.visualstudio.com/Downloads?q=visual studio 2015&wt.mc_id=omsftvscom~older-downloads
注意事项:网速和耐心!!!特别是安装巨无霸VS2015,可以自己找到安装包安装,使用在线安装受网速限制
GPU-Z下载地址:查看GPU、CPU状态的有用软件,https://www.techpowerup.com/download/gpu-z/
占用容量:VS2015
使用默认方式安装,全部安装完成(VS2015,cuda,cudnn,pytorch,tensorflow等
)之后约占12G
下面是安装过程的记录:
1.首先在官网下载了适应本显卡的最新驱动:417.35-notebook-win10-64bit-international-whql.exe
,417.35为驱动版本号。
2.安装完之后,桌面右键->NVIDIA控制面板->系统信息->组件,查看NVCUDA.DLL版本,显示是10;(这里说明可以直接下载cuda10安装的)
3.刚想起要安装VS巨无霸套餐Visual Studio 2015
(这个版本比较折中,不会太新也不会太老),选择了在线安装版,开始了2小时的漫长安装;安装完VS 2015后继续安装cuda10.
3.1 安装tensorflow-gpu
,经测试1.5,1.6版本
(更高版本更加不行了,看GitHub发布说明的时候1.7版本是最后一个支持cuda8和cudnn6
的,不知道为什么这里1.5和1.6版本
都报错了)均不能使用cuda8
,提示找不到cudart_90.dll
,按照错误来看需要cuda9
,因为时间关系还没测试cuda9
,下面测试了pytorch gpu
版本;
3.2 官网下载pytorch1.0 gpu
版本,选择stable,windows,pip,Python3.6,cuda8:https://download.pytorch.org/whl/cu80/torch-1.0.0-cp36-cp36m-win_amd64.whl
,安装之后执行
import torch
print(torch.cuda.is_available())
如果返回True
则可以使用,经测试可以正常使用,训练时用GPU-Z查看显存负载确实有变化。
3.3 安装tensorflow-gpu 1.4版
本,安装之后导入,提示需要cudnn6
,之前安装的是cudnn7版本
,因此重新下载cudnn6
,解压后将cuda文件夹
下的桑文件夹复制替换到$CUDA
安装目录,覆盖原来cudnn7
的一些文件
3.4 使用cudnn6覆盖cudnn7之后,pytorch依然可以用,tensorflow可以正常导入,但是执行一些keras程序的时候会报错,因为接口已经发生了变化,1.4版本还是低了。
下载
cuda_9.2.148_win10.exe
(备用),cuda_10.0.130_411.31_win10.exe
,以及cudnn-9.2-windows10-x64-v7.4.1.5.zip
(备用),cudnn-10.0-windows10-x64-v7.4.1.5.zip
安装了
cuda10以及cudnn-10.0-windows10-x64-v7.4.1.5
,安装完成后发现右键选项没有了NVIDIA控制面板,暂时无法查看版本号,成功安装了pytorch 1.0 cuda10 GPU版本,torch.cuda.is_available()返回True,说明可以调用gpu计算。
安装tensorflow-gpu 1.12版本,导入时报错:
ImportError: Traceback (most recent call last):File "c:\applications\wpy-3661\python-3.6.6.amd64\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module>from tensorflow.python.pywrap_tensorflow_internal import *File "c:\applications\wpy-3661\python-3.6.6.amd64\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module>_pywrap_tensorflow_internal = swig_import_helper()File "c:\applications\wpy-3661\python-3.6.6.amd64\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)File "c:\applications\wpy-3661\python-3.6.6.amd64\lib\imp.py", line 243, in load_modulereturn load_dynamic(name, filename, file)File "c:\applications\wpy-3661\python-3.6.6.amd64\lib\imp.py", line 343, in load_dynamicreturn _load(spec)
ImportError: DLL load failed: 找不到指定的模块。Failed to load the native TensorFlow runtime.See https://www.tensorflow.org/install/errorsfor some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
- 到此看到这个错误已经不想再折腾
tensorflow-gpu
了,谷歌了一下没有查到有用的信息,让我感觉心累。之前实验室win7配置的cuda9
(cudnn
忘记版本了)最高只能使用tensorflow-gpu 1.6
版本,再高版本就会报错。还是pytorch
方便,下载安装简洁明了,尽管cuda和cudnn
有那么多版本,但是pytorch
最这些的兼容性做的很好,比如前面测试的cuda8
要配合cudnn6
版本时,tensorflow-gpu 1.4
版本才能正常运行,但是我用最新的cudnn7.1.4
配合cuda8
在pytorch
下一样可以正常运行,感觉tensorflow-gpu对cuda
和cudnn
的版本支持太乱了,已经快放弃tensorflow
了,但是又需要用keras
,真实折腾人。在自己的旧电脑测试的,110G固态硬盘只剩24G了~~~
最后给出莫烦的一个简单测试例子:
# -*- coding: utf-8 -*-
"""
View more, visit my tutorial page: https://morvanzhou.github.io/tutorials/
My Youtube Channel: https://www.youtube.com/user/MorvanZhouDependencies:
torch: 1.0
torchvision
"""
import torch
import torch.nn as nn
import torch.utils.data as Data
import torchvision
import time
# torch.manual_seed(1)EPOCH = 1
BATCH_SIZE = 50
LR = 0.001
DOWNLOAD_MNIST = True#if torch.cuda.is_available():
# USE_CUDA = True
#else:
# USE_CUDA = False
USE_CUDA = Falsetrain_data = torchvision.datasets.MNIST(root='./mnist/', train=True, transform=torchvision.transforms.ToTensor(), download=DOWNLOAD_MNIST,)
train_loader = Data.DataLoader(dataset=train_data,batch_size=BATCH_SIZE, shuffle=True)test_data = torchvision.datasets.MNIST(root='./mnist/', train=False)# !!!!!!!! Change in here !!!!!!!!! #
if USE_CUDA:test_x = torch.unsqueeze(test_data.data, dim=1).type(torch.FloatTensor)[:2000].cuda()/255. # Tensor on GPUtest_y = test_data.targets[:2000].cuda()
else:test_x = torch.unsqueeze(test_data.data, dim=1).type(torch.FloatTensor)[:2000]/255. # Tensor on GPUtest_y = test_data.targets[:2000]class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()self.conv1 = nn.Sequential(nn.Conv2d(in_channels=1, out_channels=16, kernel_size=5, stride=1, padding=2,),nn.ReLU(), nn.MaxPool2d(kernel_size=2),)self.conv2 = nn.Sequential(nn.Conv2d(16, 32, 5, 1, 2), nn.ReLU(), nn.MaxPool2d(2),)self.out = nn.Linear(32 * 7 * 7, 10)def forward(self, x):x = self.conv1(x)x = self.conv2(x)x = x.view(x.size(0), -1)output = self.out(x)return outputcnn = CNN()# !!!!!!!! Change in here !!!!!!!!! #
if USE_CUDA:cnn.cuda() # Moves all model parameters and buffers to the GPU.optimizer = torch.optim.Adam(cnn.parameters(), lr=LR)
loss_func = nn.CrossEntropyLoss()start = time.clock()
for epoch in range(EPOCH):for step, (x, y) in enumerate(train_loader):# !!!!!!!! Change in here !!!!!!!!! #if USE_CUDA:b_x = x.cuda() # Tensor on GPUb_y = y.cuda() # Tensor on GPUelse:b_x = xb_y = youtput = cnn(b_x)loss = loss_func(output, b_y)optimizer.zero_grad()loss.backward()optimizer.step()if step % 50 == 0:test_output = cnn(test_x)# !!!!!!!! Change in here !!!!!!!!! #if USE_CUDA:pred_y = torch.max(test_output, 1)[1].cuda().data # move the computation in GPUelse:pred_y = torch.max(test_output, 1)[1].dataaccuracy = torch.sum(pred_y == test_y).type(torch.FloatTensor) / test_y.size(0)print('Epoch: ', epoch, '| train loss: %.4f' % loss.data.cpu().numpy(), '| test accuracy: %.2f' % accuracy)test_output = cnn(test_x[:10])# !!!!!!!! Change in here !!!!!!!!! #
pred_y = torch.max(test_output, 1)[1].cuda().data # move the computation in GPU
print("Time used: {} seconds".format(time.clock()-start))
print(pred_y, 'prediction number')
print(test_y[:10], 'real number')
使用CPU计算用时:345.0442833491752 seconds
使用GPU计算用时: 82.08966625165658 seconds
Win10配置CUDA10+cuDNN7(pytorch,tensorflow-gpu)记录相关推荐
- cuda的安装,及pytorch调用GPU步骤
前言: 深度学习涉及很多向量或多矩阵运算,如矩阵相乘.矩阵相加.矩阵-向量乘法等.深层模型的算法,如BP,Auto-Encoder,CNN等,都可以写成矩阵运算的形式,无须写成循环运算.然而,在单核C ...
- win10 + bazel-0.20.0 + tensorflow-1.13.1 编译tensorflow GPU版本的C++库
win10 + bazel-0.20.0 + tensorflow-1.13.1 编译tensorflow GPU版本的C++库 安装所需软件/库 Step1. 安装vs2015,CUDA 10.0和 ...
- PointNet-环境搭建:win10、cuda10.1、cudnn7、python3.7、tensorflow-gpu1.13 (详细)
一.版本对应关系 版本问题非常关键,不仅仅是cuda和cudnn的版本要严格参照官网的要求,python和tensorflow的版本支持也不可忽视.亲测有效的版本对应关系是:win10.cuda10. ...
- win10+1060显卡安装anaconda+CUDA10.1+pytorch+cuDNN+tensorflow-gpu
win10+1060显卡安装anaconda+CUDA10.1+pytorch+cuDNN+tensorflow-gpu https://www.cnblogs.com/yang520ming/p/1 ...
- 配置服务器pytorch/TensorFlow环境+远程连接vscode
前言:配置环境这种东西比较玄学,以下记录的是个人总结的一点操作经验,后续这个板块有新的问题和发现也会更新blog,欢迎评论指正和点赞支持~ 目录 关于软件下载 服务器TensorFlow.pytorc ...
- TensorFlow GPU 版本安装个人总结:Win10 + Python3.5 + CUDA 9.0.176 + cudnn v7.5.0.56 + TensorFlow 1.12.0
TensorFlow GPU 版本安装个人总结:Win10 + Python3.5 + CUDA 9.0.176 + cudnn v7.5.0.56 + TensorFlow 1.12.0 接触机器学 ...
- tensorflow GPU配置失败的几个解决方法
tensorflow GPU配置失败的几个解决方法 折腾了两天终于把tensorflow的gpu配上了,记录一下血泪教训,希望大家以后少走点弯路. 我的环境 cuda版本10.2.tensorflow ...
- (Tensorflow学习) Win10+mx250 tensorflow gpu版安装
我在笔记本上一开始跑cpu版本的tensorflow,感觉太慢了,跑个posenet卡成狗,就换成gpu版的. 记录下安装步骤 我的笔记本win10系统64位,mx250显卡.IDE是用的是pycha ...
- cuda10安装_Win10安装GPU版本的Tensorflow 2.1
日期:2020年10月17日 首先,下载Anaconda个人版,最新版本是3.7,安装的时候推荐把Anaconda添加到系统环境变量中. https://www.anaconda.com/produc ...
最新文章
- 游戏杆编程心得二:如何判断按钮的有效按下
- leetcode 496, 503, 556. Next Greater Element I, II, III | 496, 503, 556. 下一个更大元素 I,II,III(单调栈)
- Spartacus image alt属性的绑定实现
- 使用ST05分析IBASE search identical select
- 【RK3399Pro学习笔记】九、ROS客户端Client的编程实现
- selenium 保持窗口一直开启_Python+selenium自动化测试
- 【实习之T100开发】T100 基础架构、命名原则
- php重写mysql类_如何成功重写旧的mysql-php代码与已弃用的mysql_ *函数?
- 【2.0版本】Capi文档生成帮助类,一键生成WebApi接口说明文档,方法异常处理,模拟请求接口(使用Hplus模版)
- android仿微信红包动画,如何在Android中实现一个硬币转动微信红包动画效果
- 干货收藏 | Python语音识别终极指南
- 技术分析:细说3D投影机技术原理
- 今天母亲节,作为程序员,我是这样表达爱的……
- html 页面北京怎么设置,怎么给html设置背景色
- Android仿虾米音乐播放器之布局介绍
- CentOS7图形界面启动报错unable to connect to X server
- SSM整合步骤(超详细)
- 乐2的android版本,乐视2高通|MIUI10|安卓6.0|最终完美版|极速_最新最全的乐2高通版ROM刷机包下载、刷机...
- OSChina 娱乐弹弹弹——程序猿眼中的女人
- 计算机技术中常用的术语CAE是指_,计算机技术中常用的术语CAE是指______。A:计算机辅助设计B:计算机辅助制造C:计算机辅助工程D:计...
热门文章
- 【力扣·每日一题】913. 猫和老鼠(C++ 记忆化搜索 博弈)
- Apache Doris 使用sream load导入本地json文件
- pandas 将字符串映射为数字的方法
- jquery设置html样式无效果,jquery 改变css不生效问题
- 多线程高并发编程(8) -- Fork/Join源码分析
- Android - Error: quot;java.io.IOException: setDataSource failed.: status=0x80000000quot;
- 这款录音转文字工具让你的录音转写更加便捷
- JVM——垃圾收集器
- 从servlet传值到jsp页面
- 巧用awk快速拷贝ldd库文件依赖