如何使用Google Colab 提供的免費GPU

文章推薦指數: 80 %
投票人數:10人

今天我將介紹該如何使用Google 免費提供的GPU —— 使用Colab 這個線上平台!Colab 的使用方法與著名的Jupyter notebook 一樣,相信有用過Jupyter ... 如何使用GoogleColab提供的免費GPU Clay2019-09-292021-04-11MachineLearning GoogleColab的全名為GoogleColaboratory,顧名思義,是個由Google所提供的服務。

Colab最大的優點在於它提供了後台的免費GPU,雖然有著一天只能使用十二小時的時限、以及訓練太長的模型會被認為是在做加密貨幣的挖掘而被ban調——但總體而言,Colab仍然是手邊沒有GPU的人們最適合進行機器學習的平台。

Colab是一個線上Python執行平台,其底層的運作方法與著名的Jupyternotebook十分相像。

在Colab的常見問題說明裡頭,也是這樣說明的: 相信使用過Jupyternotebook的朋友肯定不陌生Colab這樣的操作模式。

那麼,以下我就使用我曾寫過的《使用CNN進行MNIST的手寫數字辨識——byKeras(實戰篇)》來進行該如何使用Colab的說明吧! 擁有Google帳號 要使用Colab最重要的事情,便是擁有一個Google帳號!現代的人們大多已經有了,因為Google提供了太多服務、實在是太方便了。

如果你還沒有Google帳號,那麼我極力推薦你註冊一個。

使用GPU 搜尋GoogleColab,大概在你搜尋結果的第一項,就是Colab的網址。

點開後,大概會顯示下面這樣的畫面。

Good!這代表你順利地來到Colab了! 點擊File->NewPython3notebook創建一個新的筆記本,並在裡頭貼上Python程式碼: #-*-coding:utf-8-*- importos fromkeras.modelsimportSequential,load_model fromkeras.layersimportDense,Dropout,Flatten,Conv2D,MaxPool2D fromkeras.utilsimportnp_utils,plot_model fromkeras.datasetsimportmnist importmatplotlib.pyplotasplt importpandasaspd #MnistDataset (X_train,Y_train),(X_test,Y_test)=mnist.load_data() x_train=X_train.reshape(60000,1,28,28)/255 x_test=X_test.reshape(10000,1,28,28)/255 y_train=np_utils.to_categorical(Y_train) y_test=np_utils.to_categorical(Y_test) #ModelStructure model=Sequential() model.add(Conv2D(filters=32,kernel_size=3,input_shape=(1,28,28),activation='relu',padding='same')) model.add(MaxPool2D(pool_size=2,data_format='channels_first')) model.add(Flatten()) model.add(Dense(256,activation='relu')) model.add(Dense(10,activation='softmax')) print(model.summary()) #Train model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy']) model.fit(x_train,y_train,epochs=10,batch_size=64,verbose=1) #Test loss,accuracy=model.evaluate(x_test,y_test) print('Test:') print('Loss:%s\nAccuracy:%s'%(loss,accuracy)) #Savemodel model.save('./CNN_Mnist.h5') #LoadModel model=load_model('./CNN_Mnist.h5') #Display defplot_img(n): plt.imshow(X_test[n],cmap='gray') plt.show() defall_img_predict(model): print(model.summary()) loss,accuracy=model.evaluate(x_test,y_test) print('Loss:',loss) print('Accuracy:',accuracy) predict=model.predict_classes(x_test) print(pd.crosstab(Y_test.reshape(-1),predict,rownames=['Label'],colnames=['predict'])) defone_img_predict(model,n): predict=model.predict_classes(x_test) print('Prediction:',predict[n]) print('Answer:',Y_test[n]) plot_img(n) if__name__=='__main__': all_img_predict(model) #-*-coding:utf-8-*- importos fromkeras.modelsimportSequential,load_model fromkeras.layersimportDense,Dropout,Flatten,Conv2D,MaxPool2D fromkeras.utilsimportnp_utils,plot_model fromkeras.datasetsimportmnist importmatplotlib.pyplotasplt importpandasaspd #MnistDataset (X_train,Y_train),(X_test,Y_test)=mnist.load_data() x_train=X_train.reshape(60000,1,28,28)/255 x_test=X_test.reshape(10000,1,28,28)/255 y_train=np_utils.to_categorical(Y_train) y_test=np_utils.to_categorical(Y_test) #ModelStructure model=Sequential() model.add(Conv2D(filters=32,kernel_size=3,input_shape=(1,28,28),activation='relu',padding='same')) model.add(MaxPool2D(pool_size=2,data_format='channels_first')) model.add(Flatten()) model.add(Dense(256,activation='relu')) model.add(Dense(10,activation='softmax')) print(model.summary()) #Train model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy']) model.fit(x_train,y_train,epochs=10,batch_size=64,verbose=1) #Test loss,accuracy=model.evaluate(x_test,y_test) print('Test:') print('Loss:%s\nAccuracy:%s'%(loss,accuracy)) #Savemodel model.save('./CNN_Mnist.h5') #LoadModel model=load_model('./CNN_Mnist.h5') #Display defplot_img(n): plt.imshow(X_test[n],cmap='gray') plt.show() defall_img_predict(model): print(model.summary()) loss,accuracy=model.evaluate(x_test,y_test) print('Loss:',loss) print('Accuracy:',accuracy) predict=model.predict_classes(x_test) print(pd.crosstab(Y_test.reshape(-1),predict,rownames=['Label'],colnames=['predict'])) defone_img_predict(model,n): predict=model.predict_classes(x_test) print('Prediction:',predict[n]) print('Answer:',Y_test[n]) plot_img(n) if__name__=='__main__': all_img_predict(model) COPY 不過先別執行,我們最好將我們的後端調整為有GPU的類型。

這也是Colab最吸引人的地方。

點擊Runtime->ChangeRuntimeType->將Hardwareaccelerator選擇為GPU。

Save存檔後,你應該就會連接上有GPU的後端。

按下ctrl+Enter就會開始執行程式碼。

有GPU的加持,Mnist應該會跑得非常非常地快。

你可以任意地替換你的任務,盡情地使用這免費的GPU吧! 分享此文:分享到Twitter(在新視窗中開啟)按一下以分享至Facebook(在新視窗中開啟)分享到LinkedIn(在新視窗中開啟)分享到Reddit(在新視窗中開啟) 相關 Tags:MachineLearning LeaveaReply 取消回覆 Language 中文(台灣) English Search Searchfor... CategoriesCategories 選取分類 AndroidStudio  (6) Apple  (39)    AppleScript  (6)    iPad  (3)    MacOS  (36) C/C++  (120)    C  (10)    C++  (111) C#  (1) Computer  (4) CSS  (3) Dart  (3) Database  (9)    MySQL  (6)    SQLite  (2) Excel  (1) Flutter  (44)    IntellijIDEA  (2) Game  (21)    NS  (6)    PS4  (13)    PS5  (2) Git  (10)    Github  (9) GoogleSheets  (3) HTML  (10) Java  (2) JavaScript  (9) Kotlin  (3) LeetCdoe  (94) Linux  (134) MachineLearning  (83)    Keras  (7)    PyTorch  (53)    Scikit-Learn  (7)    Tensorflow  (3) Movie  (1) News  (4) NLP  (27) Novel  (9) Others  (6) PHP  (14) Python  (361)    Flask  (4)    Others  (4)    Packages  (55)    PyCharm  (11)    Pygame  (5)    PyQt5  (35)    PySide6  (4)    PythonTutorial  (17) Ruby  (1) Tools  (16) Unity  (26) VisualStudio  (2) VisualStudioCode  (2) Windows  (12) Word  (5) WordPress  (59) 圍棋  (3) 未分類  (6) 漫畫  (2) 資料結構  (4) 隨筆  (2) Archives Archives 選取月份 2022年4月 (15) 2022年3月 (29) 2022年2月 (17) 2022年1月 (28) 2021年12月 (21) 2021年11月 (14) 2021年10月 (20) 2021年9月 (11) 2021年8月 (20) 2021年7月 (24) 2021年6月 (24) 2021年5月 (32) 2021年4月 (26) 2021年3月 (31) 2021年2月 (14) 2021年1月 (18) 2020年12月 (17) 2020年11月 (25) 2020年10月 (24) 2020年9月 (21) 2020年8月 (17) 2020年7月 (21) 2020年6月 (19) 2020年5月 (28) 2020年4月 (31) 2020年3月 (24) 2020年2月 (25) 2020年1月 (32) 2019年12月 (39) 2019年11月 (53) 2019年10月 (34) 2019年9月 (15) 2019年8月 (18) 2019年7月 (15) 系列文章 隨筆散記 機器學習筆記 Python筆記 TAGSAndroidStudio(6) Apple(29) AppleScript(6) C#(1) C++(111) Comic(2) CSS(3) C語言(10) Dart(3) Database(9) Docker(2) Excel(1) Flask(4) Flutter(43) Game(18) Git(6) Github(9) GoogleSheets(3) HTML(10) IntellijIDEA(2) iPad(3) Java(2) JavaScript(10) Keras(7) Kotlin(3) LeetCode(94) Linux(133) MachineLearning(79) MacOS(36) Microsoft(6) Movie(1) MySQL(6) News(4) NLP(28) Novel(9) NS(6) Others(8) PHP(14) PS4(13) PS5(2) PyCharm(11) PyQt5(34) PySide6(3) Python(350) PythonPackages(53) PythonTutorial(14) PyTorch(53) Qt(1) Ruby(1) RuneFactory4(2) Scikit-Learn(7) SQLite(2) Tensorflow(3) Tools(16) Unity(25) VIM(7) VisualStudio(2) VisualStudioCode(2) Windows(9) Word(5) WordPress(58) 圍棋(3) 資料結構(4) 軌跡(4) 隨筆(1) 電腦(4) RecentPosts LeetCode:230-KthSmallestElementinaBST解題紀錄 [Python]函式使用可變物件當作參數預設值存在的問題 LeetCode:897-IncreasingOrderSearchTree解題紀錄 [MachineLearning]持續在KaggleNotebook上訓練模型(關閉session也在遠端訓練) [已解決]RuntimeError:CUDAerror:devicekernelimageisinvalid-CUDAkernelerrorsmightbeasynchronouslyreportedatsomeotherAPIcall... Calender 2019年9月 一 二 三 四 五 六 日  1 2345678 9101112131415 16171819202122 23242526272829 30   «8月   10月» SubscriptionName*Email* SocialMedia Follow@clayatlas2022 ClicktoCopy



請為這篇文章評分?