最近剛開始學習深度學習,參考了一篇深度學習的入門文章,原文連接:https://medium.freecodecamp.org/everything-you-need-to-know-to-master-convolutional-neural-networks-ef98ca3c7655。python
文章內容就是kaggle上的一個competition,識別圖像中是否存在航拍仙人掌,使用了Pytorch框架,原文代碼有些許錯誤,經改正後代碼以下:瀏覽器
1 import numpy as np 2 import pandas as pd 3 from pathlib import Path 4 from fastai import * 5 from fastai.vision import * 6 import torch 7 get_ipython().run_line_magic('matplotlib', 'inline') 8 9 train_df=pd.read_csv("train.csv") #讀取csv文件到train_df 10 data_folder=Path(".") #path爲默認位置 11 train_images=ImageList.from_df(train_df,path=data_folder,folder='train')#記住讀取方法 12 print(torch.cuda.is_available()) 13 a=torch.ones(1,1) 14 print(a.cuda()) 15 16 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) 17 #train_img = train_img.transform(transformations, size=128)#錯誤句子,直接刪除 18 19 test_df=pd.read_csv("sample_submission.csv") 20 test_img=ImageList.from_df(test_df,path=data_folder,folder='test') 21 train_img = (train_images 22 .split_by_rand_pct(0.01)#把訓練數據分出一小部分作驗證集 23 .label_from_df() 24 .add_test(test_img) 25 .transform(trfm, size=128) 26 .databunch(path='.', bs=14, device= torch.device('cuda:0'))#進行批處理,bs由顯存決定,太大跑不了。過小跑得慢 27 .normalize(imagenet_stats)#圖像歸一化 28 ) 29 30 learn = cnn_learner(train_img, models.densenet161, metrics=[error_rate, accuracy])#用 cnn_leaner 建立一個訓練器 31 #用移動網絡開熱點下載快,用聯通的網就下載的很慢 32 33 #單週期策略,暴力搜索(大了:訓練過程快,容易錯過偏差邊界,甚至會跳出可控範圍,沒法收斂;小了:訓練慢) 34 learn.lr_find() 35 learn.recorder.plot() 36 37 lr = 3e-02 38 learn.fit_one_cycle(5, slice(lr)) 39 40 preds,_ = learn.get_preds(ds_type=DatasetType.Test) 41 test_df.has_cactus = preds.numpy()[:, 0] 42 43 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,通過一番折騰,找到了解決辦法,以下:框架
一、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:url
二、NVDIA官網(https://developer.nvidia.com/cuda-downloads)下載CUDA,首先應確認本身的電腦是否有NVDIA顯卡,並肯定是否支持CUDA,直接一路下一步安裝便可,這裏就不放圖片了。spa
三、jupyter notebook中運行上述代碼,若 print(torch.cuda.is_available()) 爲True則證實CUDA調用成功,另外注意 bs 數值要根據本身的顯存大小來設置。操作系統
note:筆記本通常都是雙顯卡(一個位集成顯卡,一個爲NVDIA獨立顯卡),作桌面模式win10能夠自動切換使用獨立顯卡調用CUDA,並不用特地設置NVDIA控制面板,以前走過不少彎路,覺得筆記本上無法用CUDA加速,後來發現就是版本或者安裝的問題。
經過這樣一番設置,應該就能夠調用CUDA了,關鍵點有幾個:64位,離線安裝whl,NVDIA顯卡。
下面就盡情享受CUDA的快感吧,cpu運行上述代碼須要幾個小時,用CUDA加速後幾十分鐘就完成了。