天天看點

模型訓練總結

模型訓練中的幾個問題:

1.在建立model時做好詳細的頂層設計,每個模型的作用,輸入、輸出以及參數等都規劃好,及時拉長時間線也能繼續按照之前的思路續寫代碼

2.在建立自己的基礎模型:比如模型中的LSTMCell,參數尺寸設定用self.weight = Parameter()包裝起來,初始化隐層的函數即傳回隐層的初始值需要用Variable(tensor).to(device)或者Variable(tensor).cuda(device)包裝,不然會報參數不在gpu上的錯誤

3.建立基礎模型時,參數初始化可用self.parameters()傳回weight:

for weight in self.parameters():
	weight.data.uniform_(-std,std)						
           

指定裝置:

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

指定多塊gpu:

if torch.cuda.device_count() > 0:
        model = nn.parallel.DistributedDataParallel(model, find_unused_parameters=True)
           

torch.from_numpy将numpy轉為tensor,但是資料類型不變,且不會有複制。

torch.Tensor是torch.floatTensor的預設

tensor.dtype資料類型

numpy.dtype資料類型

tensor.type_as(B)轉換為B類型

tensor.float()轉為float類型

吃透torch.nn.CrossEntropyLoss():

吃透torch.nn.CrossEntropyLoss()

同目錄下from .baseModels import *為啥要加點

with torch.no_grad作用和model.eval()作用

繼續閱讀