私は現在、chainerのLSTMを使って自然言語処理のプログラムを作成しようとしています。
Encoder Decoder Modelのソフト注意機構について、質問したいことがあります。
現在、AttentionDecoderのmodelを次のように定義しています。
python
1class AttentionDecoder(Chain): 2 def __init__(self, vsize, esize, hsize): 3 # Attention ModelのためのDecoderのインスタンス化 4 # :param vsize: 語彙数 5 # :param esize: 単語ベクトルのサイズ 6 # :param hsize: 隠れ層のサイズ 7 super(AttentionDecoder, self).__init__( 8 ye=L.EmbedID(vsize, esize, ignore_label=-1), # 単語を単語ベクトルに変換する層 9 eh=L.Linear(esize, 4 * hsize), # 単語ベクトルを隠れ層の4倍のサイズのベクトルに変換する層 10 hh=L.Linear(hsize, 4 * hsize), # Decoderの中間ベクトルを隠れ層の4倍のサイズのベクトルに変換する層 11 fh=L.Linear(hsize, 4 * hsize), # 順向きEncoderの中間ベクトルの加重平均を隠れ層の4倍のサイズのベクトルに変換する層 12 bh=L.Linear(hsize, 4 * hsize), # 順向きEncoderの中間ベクトルの加重平均を隠れ層の4倍のサイズのベクトルに変換する層 13 he=L.Linear(hsize, esize), # 隠れ層サイズのベクトルを単語ベクトルのサイズに変換する層 14 ey=L.Linear(esize, vsize) # 単語ベクトルを語彙数サイズのベクトルに変換する層
ここで質問ですが、すべての隠れ層において、出力ベクトルサイズを入力ベクトルサイズの4倍にしています。通常は、出力ベクトルサイズは次の層の入力ベクトルサイズにしていると思います。この場合、ネットワークはどのようになっていると考えられますでしょうか。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。