こんにちは私は初心者ケラスです。Keras(深層学習ライブラリ)では、RepeatVector + TimeDistributed = Error?
私はいくつかのモデルを作っています。
ステップ1.入力バッチと単語リスト、(BATCH_SIZE、WORD_INDEX_LIST) ステップ2.取得ワード埋め込み各単語(BATCH_SIZE、WORD_LENGTH、EMBEDDING_SIZE) ステップ3.平均各バッチにおけるそれぞれ各ワード埋め込み。 (BATCH_SIZE、EMBEDDING_SIZE) ステップ4を繰り返しベクトルN、(BATCH_SIZE、N、EMBEDDING_SIZE) ステップ5.したがって、各時間ステップ
緻密層を適用し、私はコードを書きます。
MAX_LEN = 20 (= WORD_INDEX_LIST)
step 1
layer_target_input = Input(shape=(MAX_LEN,), dtype="int32", name="layer_target_input")
# step2
layer_embedding = Embedding(input_dim = n_symbols+1, output_dim=vector_dim,input_length=MAX_LEN,
name="embedding", weights= [embedding_weights],trainable = False)
encoded_target = layer_embedding(layer_target_input)
# step 3
encoded_target_agg = KL.core.Lambda(lambda x: K.sum(x, axis=1))(encoded_target)
#step 4
encoded_target_agg_repeat = KL.RepeatVector(MAX_LEN)(encoded_target_agg)
# step 5
layer_annotated_tahn = KL.Dense(output_dim=50, name="layer_tahn")
layer_annotated_tahn_td = KL.TimeDistributed(layer_annotated_tahn) (encoded_target_agg_repeat)
model = KM.Model(input=[layer_target_input], output=[ layer_annotated_tahn_td])
r = model.predict({ "layer_target_input":dev_targ}) # dev_targ = (2, 20, 300)
しかし、私はこのコードを実行すると、 結果は怒鳴るです。
Traceback (most recent call last):
File "Main.py", line 127, in <module>
r = model.predict({ "layer_target_input":dev_targ})
File "/usr/local/anaconda/lib/python2.7/site-packages/Keras-1.0.7-py2.7.egg/keras/engine/training.py", line 1180, in predict
batch_size=batch_size, verbose=verbose)
File "/usr/local/anaconda/lib/python2.7/site-packages/Keras-1.0.7-py2.7.egg/keras/engine/training.py", line 888, in _predict_loop
outs[i][batch_start:batch_end] = batch_out
ValueError: could not broadcast input array from shape (30,20,50) into shape (2,20,50)
なぜバッチサイズが変更されるのですか? 私は間違っていますか?
これは完璧な説明と答えます。 私の問題を解決するのに役立つかもしれません。 ありがとうございます! –