2017-05-27 8 views
2

CNNを使用してtext classification modelを実装しようとしています。私が知る限り、テキストデータの場合、1d Convolutionを使用する必要があります。私はConv2dを使用しているPytorchの例を見ましたが、私はどのようにConv1dをテキストに適用できますか?または、実際には不可能ですか?PyTorchのテキスト入力用の畳み込みNN

Number of in-channels: 1, Number of out-channels: 128 
Kernel size : 3 (only want to consider trigrams) 
Batch size : 16 

だから、私は、< 16、1、28、300の形状のテンソルを提供します> 28は、文の長さ:

は、ここに私のモデルのシナリオです。私はConv1dを使って、長さ26の128個の特徴マップを与えたいと思っています(私はトリグラムを考えています)。

この設定でnn.Conv1d()を定義する方法はわかりません。私はConv2dを使うことができますが、Conv1dを使って同じことを達成することは可能ですか?

+0

どこから来ていますか? –

+0

300が埋め込み寸法です。 –

答えて

1

RNNへのConv1dおよびPool1d層のこのexampleが私の問題を解決しました。

したがって、次のようにnn.Conv1dを使用している間は、埋め込み次元をインチャネルの数として考慮する必要があります。

m = nn.Conv1d(200, 10, 2) # in-channels = 200, out-channels = 10 
input = Variable(torch.randn(10, 200, 5)) # 200 = embedding dim, 5 = seq length 
feature_maps = m(input) 
print(feature_maps.size()) # feature_maps size = 10,10,4 
0

私はテキストデータでは動作しませんが、現在のフォームの入力テンソルはconv2dを使ってのみ動作します。 conv1dを使用する1つの可能な方法は、テンソルの形状の埋め込みを連結することである。 < 16,1,28 * 300>。入力をviewで再整形することができます。

関連する問題