私は次のNNアーキテクチャを持っています:
パート1:
nn.Sequential {
[input -> (1) -> (2) -> (3) -> (4) -> (5) -> (6) -> (7) -> output]
(1): nn.TemporalConvolution
(2): nn.TemporalMaxPooling
(3): nn.TemporalConvolution
(4): nn.TemporalMaxPooling
(5): nn.Reshape(14336)
(6): nn.Dropout(0.500000)
(7): nn.Linear(14336 -> 128)
}
パート2:
nn.Sequential {
[input -> (1) -> (2) -> (3) -> output]
(1): nn.Linear(4 -> 8)
(2): nn.ReLU
(3): nn.Linear(8 -> 4)
}
私がやりたいことは、これら2つの部分の出力を別の部分への入力として使用することです:
nn.Sequential {
[input -> (1) -> (2) -> (3) -> (4) -> (5) -> (6) -> output]
(1): nn.Linear(132 -> 32)
(2): nn.ReLU
(3): nn.Linear(32 -> 32)
(4): nn.ReLU
(5): nn.Linear(32 -> 2)
(6): nn.LogSoftMax
}
パーツ 1 には 128 の出力があり、パーツ 2 には 4 があり、最後にパーツ 3 には 132 の入力があることに注意してください。したがって、基本的には、2 種類の入力 (パート 1 はテキスト用、パート 2 は数値ベクトル用) を受け取り、これらの両方の情報を 3 番目のレイヤーで 2 クラス分類に使用するネットワークが必要です。
さまざまなコンテナを見てきましたが、必要なものはないようです。具体的には、nn.Parallel を見てきましたが、ドキュメントからは、まったく異なることをしているように見えます (2 つの異なるモジュールに対する同じ入力)。最初の問題は、ネットワークの入力がどのように見えるかです (各部分は異なるタイプのテンソルを使用するため、最初の要素が 2D テンソルで、2 番目の要素が 1D テンソルである単純なテーブル (配列) で十分だと思いました)。 ) そして、その出力を別のネットワークに接続して、通常どおり前方/後方呼び出しを使用できるようにする方法。
これを行う方法はありますか?
ありがとう!