深度學習Pytorch的模型調用——細節使用

Introduction

學習使用了深度學習Pytorch差不多一年半多了,今天在這裏呢,來總結一些不怎麼使用的細節方面的代碼知識點,爲以後方便查找和使用。

1、Pytorch模型調用相關函數
加載模型使用:

model=cnn() #cnn()這裏表示爲你定義的神經網絡模型
model.eval() #這裏表示爲測試使用
model.load_state_dict(torch.load(param_file))  # load模型

若當你的模型或者你調用他人的模型爲在gpu上訓練的,但你想cpu上載入時:

model.load_state_dict(t.load(params_file, map_location='cpu'))

2.Pytorch模型測試與單一數據使用
當你需要單獨地一個數據來測試時,你可以使用下面的代碼:

img0 = Image.open(img0_tuple[0])
img0 = img0.convert("L")
img0 = transform(img0) #這裏需要跟你訓練數據中的transform一樣
img0= Variable(img0.unsqueeze(0)) #添加維度(eg:3->4)
output1 = model(Variable(img0) #Vaariable可求導變量

在這裏,我需要強調以下爲什麼要添加維度,首先我們要知道由於在訓練時,我們餵給神經網絡的數據格式時這樣的:(batch_size,in_channel,height,width),因此呢,我們單一加載一個數據時,也需要滿足四個維度。

3、訓練結果數據可視化

#首先定義兩組數組
loss_history= [] #用來保存訓練過程中的loss值
Accuracy_history= [] #用來保存訓練時的準確率值

epoch_number = 0

loss_history.append(loss_contrastive.item())
Accuracy_history.append((accuray.item())
epoch_number += 1
#這裏保存的數據值爲每一次epoch時保存一次.
#注意:當結束完訓練時,跳出訓練循環時
show_plot(epoch_number,loss_history,Accuracy_history)
#show_plot爲自己定義的函數

其中show_plot函數定義如下:

def show_plot(iteration, loss,Accuracy_history):
    plt.plot(iteration, loss,color='red',abel="loss_history")
    plt.plot(iteration,Accuracy_history,abel="Accuracy_history")
    plt.ylabel('loss')
    plt.xlabel('Number of training')
    plt.show()

當然了,你要是想用上位機界面顯示效果的話,可以採用PyQT,這裏你可以參考我的另一篇博客

4、一些數據轉換
numpy中的ndarray轉化成pytorch中的tensor : torch.from_numpy()

pytorch中的tensor轉化成numpy中的ndarray : numpy()
例如:

將Variable張量轉化爲numpy:
V_data = V_data.data.numpy()

import numpy as np
import torch

np_arr = np.array([1,2,3,4])
tensor_=torch.from_numpy(np_arr)
ten_numpy=tensor_.numpy()

這裏需要注意的是,你定義的numpy數組或者tensor使用了Variable時,想要轉換爲tensor或者numpy時,例如:

#mydata爲Variable(tensor)類型時,轉換爲numpy
mydata=mydata.data.numpy()

有待補充。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章