深度學習快速入門:一小時帶你做完十個練手項目(附完整代碼)

每天給小編五分鐘,小編用自己的代碼,讓你輕鬆學習人工智能。本文將帶你用具體代碼做完十個深度學習練手小項目,讓你只用一小時,快速熟悉深度學習開發,打牢人工智能基礎。野蠻智能,小白也能看懂的人工智能。

深度學習快速入門:一小時帶你做完十個練手項目(附完整代碼)

如果你現在還沒有搭建好你的深度學習環境,那麼小編建議你搭建好一個pytorch的cpu版本,具體參考小編的 ,快速搭建你的深度學習開發環境。下面我們進入實戰環節,帶你做完十個深度學習練手小項目!

第一個:創建一個矩陣,並對矩陣進行求導

乾貨快遞站:

  1. 如果你對矩陣不瞭解,那也沒關係,本文不涉及數學知識。你只需知道:矩陣就是用來存儲數的一個單元。在一個矩陣中可以存入大量的數字,而不用去挨個指定它們的含義,這樣可以方便我們對大量數字進行各種操作,所以在數據處理領域,會大量用到矩陣。
  2. 導數對於人工智能的重要意義是:導數可以表現變量變化的速度,通過求導可以找到變量變化速度最快的方向,然後令參數向那個方向收斂,以此來加快訓練速度。下面小編帶你創建一個矩陣,然後對它進行求導。
深度學習快速入門:一小時帶你做完十個練手項目(附完整代碼)

代碼配送營

第一步,把安裝好的框架導入進來,也就是import + 這個框架的名字(torch):import torch

第二步,在pytorch中,默認的數據類型是Tensor,直接翻譯的意思是張量,你可以直接理解為一個能力強大的數,這個數可以表示矩陣,所以我們可以直接定義一個矩陣(4行2列):matrix = torch.ShortTensor([[1,2],[3,5],[7,8],[9,7]])。但是這個矩陣本身是不能直接求導數的,需要先把矩陣變成一個變量,所以我們要導入一個這樣功能的函數Variable:from torch.autograd import Variable(autograd這個部分完成的就是自動求導的功能,grad是導數的意思)

第三步,matrix現在還是一個單純的矩陣,Variable(matrix,requires_grad =True),經過這一步就把matrix變成了一個變量,就可以在計算圖中對這個變量進行求導了,計算圖可以理解為:用來計算的式子,或者是一個計算的過程,在後邊的練習項目裡我會再提到,所以我們這裡構建一個簡單的計算圖,:y = matrix*2。

第三步,下面進行求導,輸入代碼:y.backward(torch.Tensor([1,0.1,0.01,0.001])),y保存的是matrix*2這個計算圖的結果,backward函數對我們剛才定義的變量matrix進行自動求導。這裡邊的參數的含義是:定義一個數組,這個數組有四個數,每個數都會對應到矩陣中的一行,與求得的導數相乘。這一步驟應用的十分廣泛,因為我們在進行梯度下降時,並不能直接把計算得到的梯度直接來用,而要衰減一下,防止參數變得太快,錯過了最佳參數,這就是衰減係數。

第四步,取出導數:print(matrix.grad)

下圖是我的代碼和運算結果,大家可以作為參考。

深度學習快速入門:一小時帶你做完十個練手項目(附完整代碼)

深度學習快速入門:一小時帶你做完十個練手項目(附完整代碼)

第二個,實現線性迴歸

乾貨快遞站:

1,線性迴歸快速理解:如果你單身,那你一定還沒有結婚。那麼,每個丈母孃選女婿都有一定的標準,比如,人品,財力等等,它們都有一定的權重(W1,W2,W3……),你在每個標準上都有一定的得分(X1,X2,X3……),那麼將你的得分和對應的權重相乘(W1*X1+W2*X2+W3*X3……),就得到了你的最終得分。那麼你就可以知道你是不是一個合格的女婿了。一句話來總結,線性迴歸就是權重乘以得分,深度學習就是根據歷史的數據,學習到這個權重,然後在新的數據上預測出結果。

2,線性迴歸雖然看起來很簡單,但它確是非常實用的,因為它的數學理論紮實,可解釋性強,每一個標準對應的權重,結果都很明朗。所以在工業界獲得了很好的應用,在很多項目上,如果沒有太好的解決方案,就首先拿這個線性迴歸來試一試。所以,牢牢掌握線性迴歸是非常重要的。

代碼配送營:

1,創建數據集,我們這裡為了學習的方便,就直接自己創建一組數據,這組數據的特點是,不是嚴格的直線上的點,讓模型自己去擬合。

x_train = np.array([[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]],dtype=np.float32)

y_train = np.array([[2.1],[3.4],[5.6],[6.7],[7.8],[7.6],[7.9],[8.6],[10.9],[11.8],[14.3],[12.1]],dtype=np.float32)

創建好了點,我們可以使用matplotlib把這12個點畫出來。代碼如下:

import matplotlib.pyplot as plt

import numpy as np

plt.scatter(x_train,y_train)

plt.show()

然後會得到如下結果:

深度學習快速入門:一小時帶你做完十個練手項目(附完整代碼)

2,還和之前一樣導入torch導入Variable,然後這裡多了一個新的小夥伴,就是nn模塊,nn指的是neaural network,神經網絡的意思,這個模塊可以用來實現神經網絡的很多操作:import torch.nn as nn

下面看具體的代碼:

深度學習快速入門:一小時帶你做完十個練手項目(附完整代碼)

代碼就是這樣,為了直觀,先給大家看一下運行結果:

深度學習快速入門:一小時帶你做完十個練手項目(附完整代碼)

關於具體的代碼分析,由於略微複雜一些,我會在下篇文章進行講解。剩下的小項目也會在這幾天陸續寫出來。歡迎大家一起來進步!野蠻智能,小白也能看懂的人工智能。大家有什麼問題或者見解可以在評論區留言。


分享到:


相關文章: