1.torch.randn(1, 3, 3, 3)
生成隨機(jī)數(shù)向量
2.torch.Tensor.view(3, 9)
變換維度,如把上面的四維 1 * 3 * 3 * 3 變成二維 3 * 9 ,方式就是順序排列下來(lái)
view(-1, 3) 會(huì)把數(shù)據(jù)變成 n * 3 維度
3.nn.Linear(in_features = 3 * 3, out_features = 1)
全連接層,輸入必須是二維
input是 (3, 9)的情況下,in_features是9,output是 (3, 1)
4.torch.cat((A, B), dim = 1)
拼接兩個(gè)Tensor,dim = 0 豎著拼,dim = 1 橫著拼
5.nn.module
定義自己的網(wǎng)絡(luò)
需要繼承nn.Module類,并實(shí)現(xiàn)forward方法。
一般把網(wǎng)絡(luò)中具有可學(xué)習(xí)參數(shù)的層放在構(gòu)造函數(shù)init()中,
不具有可學(xué)習(xí)參數(shù)的層(如ReLU)可放在構(gòu)造函數(shù)中,也可不放在構(gòu)造函數(shù)中(而在forward中使用nn.functional來(lái)代替)
只要在nn.Module的子類中定義了forward函數(shù),backward函數(shù)就會(huì)被自動(dòng)實(shí)現(xiàn)(利用Autograd)。
在forward函數(shù)中可以使用任何Variable支持的函數(shù),畢竟在整個(gè)pytorch構(gòu)建的圖中,是Variable在流動(dòng)。還可以使用if,for,print,log等python語(yǔ)法.
注:Pytorch基于nn.Module構(gòu)建的模型中,只支持mini-batch的Variable輸入方式,
比如,只有一張輸入圖片,也需要變成 N x C x H x W 的形式:
input_image = torch.FloatTensor(1, 28, 28)
input_image = Variable(input_image)
input_image = input_image.unsqueeze(0) # 1 x 1 x 28 x 28