pytorch模型輸入兩個引數

2021-10-03 15:32:23 字數 1359 閱讀 8114

最近用pytorch需要用到兩個輸入,發現有很多朋友也沒有找到解決方法,今天來分享一下我的做法。

**

def

forward

(self, x1, x2)

: feature = self.conv1(x1)

out = torch.cat(

[feature, x2]

, dim=1)

out1 = self.layer1(out)

out2 = self.layer2(out1)

out = torch.cat(

[out1, out2]

, dim=1)

out3 = self.layer3(out)

out = torch.cat(

[out1, out2, out3]

, dim=1)

out = self.layer4(out)

out = out + x1

return out

只需要在原來forward(self,x)再加乙個引數即可

**

def

split_input

(input

, band=12)

:# 輸入為四維資料,第一維是batch,第二維才是band

input1 =

input[:

, band:band +1]

# 注意這裡要使用band:band+1才不會改變input的維度

input2 = np.delete(

input

, band, axis=1)

return input1, input2

這裡的input是dataset返回的inputs

**

summary(model.cuda(),

[[1,

30,30]

,[24,

30,30]

], batch_size=

16)

dummy_input1 = torch.randn(16,

1,30,

30)dummy_input2 = torch.randn(16,

24,30,

30)with summarywriter(comment=

'rdnet'

)as w:

w.add_graph(model,

(dummy_input1,dummy_input2)

)

以上測試均能成功。

注意目前tensorboardx還不支援pytorch1.4.0要回退到1.3.0,graph才能正常生成。

pytorch 快速計算兩個tensor的歐式距離

給定兩個tensor a 和 b。a的維度為 m,h b的維度為 n,h 要求每兩行之間計算他們的歐氏距離,返回乙個維度為 m,n 的tensor。要求不能使用迴圈,也不能擴充複製乙個tensor。解 將歐式距離的公式展開,根號下面是 所以 為 def euclideandistances a,b ...

檢視模型各層引數(Pytorch

這個實驗用到的資料集是mnist資料集,維度是1 28 28 import torch.nn as nn class cnn nn.module def init self super cnn,self init 卷積層 self.conv1 nn.sequential in channels 1,...

兩個較快的輸入掛

來自杭電多校7標程上的 主要是讀入整數型別 includeusing namespace std namespace fastio return p1 inline bool blank char ch inline void read int x 這裡int x,實參需為int,這裡改為ll x,...