最近刚开始学习深度学习,参考了一篇深度学习的入门文章,原文链接:https://medium.freecodecamp.org/everything-you-need-to-know-to-master-convolutional-neural-networks-ef98ca3c7655。

  文章内容就是kaggle上的一个competition,识别图像中是否存在航拍仙人掌,使用了Pytorch框架,原文代码有些许错误,经改正后代码如下:

 import numpy as np
import pandas as pd
from pathlib import Path
from fastai import *
from fastai.vision import *
import torch
get_ipython().run_line_magic('matplotlib', 'inline') train_df=pd.read_csv("train.csv") #读取csv文件到train_df
data_folder=Path(".") #path为默认位置
train_images=ImageList.from_df(train_df,path=data_folder,folder='train')#记住读取方法
print(torch.cuda.is_available())
a=torch.ones(1,1)
print(a.cuda()) trfm=get_transforms(do_flip=True,flip_vert=True,max_rotate=10.0,max_zoom=1.1,max_lighting=0.2,max_warp=.2,p_affine=0.75,p_lighting=0.75)
#train_img = train_img.transform(transformations, size=128)#错误句子,直接删除 test_df=pd.read_csv("sample_submission.csv")
test_img=ImageList.from_df(test_df,path=data_folder,folder='test')
train_img = (train_images
.split_by_rand_pct(0.01)#把训练数据分出一小部分做验证集
.label_from_df()
.add_test(test_img)
.transform(trfm, size=128)
.databunch(path='.', bs=14, device= torch.device('cuda:0'))#进行批处理,bs由显存决定,太大跑不了。太小跑得慢
.normalize(imagenet_stats)#图像归一化
) learn = cnn_learner(train_img, models.densenet161, metrics=[error_rate, accuracy])#用 cnn_leaner 创建一个训练器
#用移动网络开热点下载快,用联通的网就下载的很慢 #单周期策略,暴力搜索(大了:训练过程快,容易错过误差边界,甚至会跳出可控范围,无法收敛;小了:训练慢)
learn.lr_find()
learn.recorder.plot() lr = 3e-02
learn.fit_one_cycle(5, slice(lr)) preds,_ = learn.get_preds(ds_type=DatasetType.Test)
test_df.has_cactus = preds.numpy()[:, 0] test_df.to_csv('submission.csv', index=False)

  以上就是全部的代码,运行环境为win10 64位操作系统,Python3.7,Pytorch1.1.0,CUDA10.1.120,NVDIA驱动程序431.36。

  开始时使用CUDA运行遇到困难,测试print(torch.cuda.is_available()) 总是显示false,经过一番折腾,找到了解决办法,如下:

  1、Pytorch在国内通过pip安装会有问题,最好通过在PyTorch官网(https://pytorch.org/)下载后,然后本地安装whl文件(再次提醒,一定要本地安装,这样才能保证安装的Pytorch是完整包含CUDA的):

    ①官网图片,直接浏览器中打开如下https网站,可能会慢一些;或者将网站拷贝到迅雷中下载,这样可能会快一点。

另外一定要注意安装Python3.7的64位,并且win10/win7也要是64位,因为Pytorch仅支持64位!

    ②本地文件系统图片和通过命令行(管理员模式)安装图片,cmd中两个whl文件都要安装,我这里只演示一个,如果之前装过Pytorch但是没法调用CUDA,就先卸载(一定要用管理员模式的命令行)再安装,卸载指令为 pip uninstall torch 和 pip uninstall torchvision:

  2、NVDIA官网(https://developer.nvidia.com/cuda-downloads)下载CUDA,首先应确认自己的电脑是否有NVDIA显卡,并确定是否支持CUDA,直接一路下一步安装即可,这里就不放图片了。

  3、jupyter notebook中运行上述代码,若  print(torch.cuda.is_available())  为True则证明CUDA调用成功,另外注意  bs 数值要根据自己的显存大小来设置。

note:笔记本一般都是双显卡(一个位集成显卡,一个为NVDIA独立显卡),做桌面模式win10可以自动切换使用独立显卡调用CUDA,并不用特意设置NVDIA控制面板,之前走过很多弯路,以为笔记本上没法用CUDA加速,后来发现就是版本或者安装的问题。

  通过这样一番设置,应该就可以调用CUDA了,关键点有几个:64位,离线安装whl,NVDIA显卡。

  下面就尽情享受CUDA的快感吧,cpu运行上述代码需要几个小时,用CUDA加速后几十分钟就完成了。

PyTorch在笔记本上实现CUDA加速的更多相关文章

  1. 适用于Linux 2的Windows子系统上的CUDA

    适用于Linux 2的Windows子系统上的CUDA Announcing CUDA on Windows Subsystem for Linux 2 为了响应大众的需求,微软在2020年5月的构建 ...

  2. Linux 2 的 Windows 子系统上发布 CUDA

    Linux 2 的 Windows 子系统上发布 CUDA 为响应大众需求,微软 宣布 在 2020 年 5 月的 建造 大会上推出了 建造 ( WSL 2 ) – GPU 加速功能.这一特性为许多计 ...

  3. 15分钟在笔记本上搭建 Kubernetes + Istio开发环境

    11月13~15日,KubeCon 上海大会召开,云原生是这个秋天最火热的技术.很多同学来问如何上手 Kubernetes和Istio 服务网格开发.本文将帮助你利用Docker CE桌面版,15分钟 ...

  4. Pytorch 使用不同版本的 cuda

    由于课题的原因,笔者主要通过 Pytorch 框架进行深度学习相关的学习和实验.在运行和学习网络上的 Pytorch 应用代码的过程中,不少项目会标注作者在运行和实验时所使用的 Pytorch 和 c ...

  5. 在C++工程上添加CUDA编译环境

    1.直接在新建工程的时候选择CUDA,这样的工程既能编译C++也能编译CU 2.在已有的C++工程上添加CUDA编译环境 右键工程-->生成依赖项-->生成自定义-->勾选CUDA ...

  6. 深度学习-使用cuda加速卷积神经网络-手写数字识别准确率99.7%

    源码和运行结果 cuda:https://github.com/zhxfl/CUDA-CNN C语言版本参考自:http://eric-yuan.me/ 针对著名手写数字识别的库mnist,准确率是9 ...

  7. linux笔记本上安装了双显卡驱动(intel+nvidia)

    为了提高linux图形性能并降低功耗,独特的文章. 我用的系统Fedora 20 Xfce x64,在安装驱动程序,以确保系统是最新的版本号. 最好安装gcc.kernel-devel和其他包.己主动 ...

  8. Windows(华硕/联想)笔记本上安装黑苹果与win双系统教程

    声明:电脑小白者请谨慎安装,如有需要可私聊或留言提供安装工具 首先说明:Windows PC的文件操作系统也就是磁盘格式是FAT32或 NTFS ,而 Mac 的文件操作系统格式是 HFS ,所以这时 ...

  9. 『PyTorch』第四弹_通过LeNet初识pytorch神经网络_上

    总结一下相关概念: torch.Tensor - 一个近似多维数组的数据结构 autograd.Variable - 改变Tensor并且记录下来操作的历史记录.和Tensor拥有相同的API,以及b ...

随机推荐

  1. pikachu

    题目链接:http://127.0.0.1/pikachu-master/vul/sqli/sqli_id.php 题目来源:pikachu-->SQL-inject-->数字型注入(po ...

  2. MyEclipse下安装FreeMark插件

    现在大多人人喜欢用FreeMark模板.但是这个模板在myeclipse或者是eclipse下却是不能只能提示,一大堆只是没有颜色区分的显示在哪里.万能天国总是有办法. 点我去官网下载(比较慢) 我的 ...

  3. C++学习想法

    今天是周一,今天做早操的时候舍友说准备买一本C++基础的书.我觉得这样的想法很好,突然想到自己最近几天因为自己私人原因事情很忙,蛋这不能成为我不学C++的理由.所以我在这规划了我这一周的学习进程.首先 ...

  4. Day3 AntV/G2图表的组成

    简介 为了更好的使用G2进行数据可视化,我们需要先了解G2图表的组成及其相关概念. 完整的G2图表组成如下图所示:可以看出图表主要由axes(坐标轴axis的复数),tooltip(提示信息),gui ...

  5. Spring boot中的 JsonConverter

    上图是spring-web包的部分目录 为了找出调用了哪种类型的Convert 我找到父类 HttpMessageConverter 查看了它的引用 在spring-boot-autoconfigur ...

  6. 关于在taro使用wx.parse那些事

    好久不见,好久没更新博客,最近工作也比较忙,今天在使用解决富文本的时候遇到两个bug,由于第一次使用wx.parse经验不足,走了很多弯路,今天特地把自己修复bug的感想分享一下,希望能帮助更多的小伙 ...

  7. [ZJOI2011]看电影(组合数学,高精度)

    [ZJOI2011]看电影 这题模型转化很巧妙.(神仙题) 对于这种题首先肯定知道答案就是合法方案除以总方案. 总方案显然是\(k^n\). 那么考虑怎么算合法方案. 当\(n>k\)的时候显然 ...

  8. Flutter学习笔记(21)--TextField文本框组件和Card卡片组件

    如需转载,请注明出处:Flutter学习笔记(21)--TextField文本框组件和Card卡片组件 今天来学习下TextField文本框组件和Card卡片组件. 只要是应用程序就少不了交互,基本上 ...

  9. 1.Sentinel源码分析—FlowRuleManager加载规则做了什么?

    最近我很好奇在RPC中限流熔断降级要怎么做,hystrix已经1年多没有更新了,感觉要被遗弃的感觉,那么我就把眼光聚焦到了阿里的Sentinel,顺便学习一下阿里的源代码. 这一章我主要讲的是Flow ...

  10. HTML连载34-背景关联和缩写以及插图图片和背景图片的区别

    一.背景属性缩写的格式 1.backgound:背景颜色  背景图片  平铺方式  关联方式  定位方式 2.注意点: 这里的所有值都可以省略,但是至少需要一个 3.什么是背景关联方式 默认情况下,背 ...