(一)資料集
面對問題的時候,我們已知的資料集可以被用來測試,訓練模型,然後再利用模型對未知的資料集來進行推理**,其中在學習的時候我們知道輸出的結果,可以通過結果來對模型進行糾正,這種學習過程叫做監督學習。在監督學習的過程中我們可獲得的已知的資料集被分為測試集和訓練集,其中測試集的資料在訓練過程中不能使用,來計算模型的相關指標,並對模型進行糾正。
注意:我們得到的資料集不一定是符合聯合分布的,概率論中告訴我們要讓模型具有普遍性應該要有足夠多的樣本才可以實現,所以如果我們的模型在資料集擬合的非常好,可能會導致過擬合的現象,而我們希望我們的模型有比較好的泛化能力,所以我們通常會把我們的訓練集分成兩部分,一部分叫做訓練集,另一部分叫做開發集(dev)
(二)模型的選擇
在遇到乙個模型時候,我們一般會使用線性模型來測試下,訓練的時候我們則考慮 w 和 b 的值來,在機器學習中我們一般使用隨機猜測來確定這兩個未知量的值,然後通過窮舉法來找到最優值,使用損失函式來評估模型的效能,當我們的誤差函式值最小的時候,即可以代表最優的效能,通過每個樣本的損失函式值,我們可以求得平均平方誤差(mse),來得到樣本的綜合性能。
(三)**例項
接下來用**來表示這個線性擬合的過程:
import
numpy as np
import
matplotlib.pyplot as plt
x_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]
defforward(x): //定義線性模型y = x*w
return x*w
defloss(x,y): //定義損失函式 loss=(x*w-y)2
y_pred =forward(x)
return (y_pred - y)*(y_pred -y)
w_list = //用空列表儲存權重以及相應權重的損失值
mse_list =
for w in np.arange(0.0,4.1,0.1):
print('w='
,w) l_sum =0
for x_val,y_val in
zip(x_data,y_data): //zip函式可用於將可迭代變數中的每個元素轉換為對應的元組
y_pred_val =forward(x_val)
loss_val =loss(x_val,y_val)
l_sum +=loss_val
print('\t'
,x_val,y_val,y_pred_val,loss_val)
print('
mse=
',l_sum/3)
plt.plot(w_list,mse_list) //繪製損失與權重關係圖
plt.ylabel('loss')
plt.xlabel('w')
plt.show
所得到的圖:
在深度學習中,我們也經常會要繪製這樣的圖,但是我們一般是拿訓練的輪數作為橫座標而不是權重,因為我們在深度學習中我們很難判斷什麼時候結果會收斂,通常訓練資料隨著訓練輪數增加其損失函式會不斷減小最後趨於平緩,而如果此時拿開發集的資料去跑就會發現,開發集的損失函式會先伴隨著訓練集的減小而減小,而後開始上公升,因此我們要找到那個開發集上公升前的臨界點,這時候我們可以用這個圖,即視覺化來幫助我們判斷。一般我們可以利用visdom來實時依據輸出資料來畫圖
pytorch 深度學習
pytorch深度學習實踐 訓練集 開發集 模型評估 測試集。f x wx b f x wx b f x w x bloss 乙個樣本 cost mean square error training set 區域性最優,不一定全域性最優。鞍點 梯度為0,但無法繼續迭代。w w c ost ww w ...
深度學習 安裝pytorch
1 官網 2 cmd中執行 注意 直接複製run this command 裡面的安裝 注意 把pip3的3刪除 第一步 pip install i 第二步 pip install torchvision 注意 第一步和第二步可以合併為pip install i torchvision 3 安裝技巧...
PyTorch 深度學習 筆記
方差 偏差 線性回歸來確定兩種或兩種以上變數間相互依賴的定量關係。線性回歸對於輸入x和輸出y有乙個對映 類似ax b 而我們是訓練a b這兩個引數。以下 使用pytorch建立乙個線性的模型來對其進行擬合,即訓練過程。def linear ex x np.random.rand 256 noise ...