0
コードを実行するとこのエラーが発生します。リカレントニューラルネットワークを使用した言語モデルの構築
例外:入力配列は、ターゲット配列と同じ数のサンプルを持つ必要があります。 12196個の入力サンプルと1個のターゲットサンプルが見つかりました。
以下は私が訓練しているモデルです。
from keras.models import Sequential
from keras.layers.core import Dense
from keras.utils import np_utils
from keras.layers.embeddings import Embedding
from keras.layers.recurrent import LSTM
from keras.regularizers import l2
from keras.layers.wrappers import TimeDistributed
n_in = x_train.shape[1]
n_hidden = 100
n_out = word_vecs.shape[0]
number_of_epochs = 10
batch_size = 35
model = Sequential()
model.add(Embedding(output_dim=word_vecs.shape[1], input_dim=word_vecs.shape[0],input_length=n_in, weights=[word_vecs], mask_zero=True))
model.add(LSTM(n_hidden, W_regularizer=l2(0.0001), U_regularizer=l2(0.0001), return_sequences=True))
model.add(TimeDistributed(Dense(n_out, activation='softmax', W_regularizer=l2(0.0001))))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
私は列車データの1つのホットベクトルもエンコードしました。
以下コード
new_instance = []
for instance in train_y :
new_vector = np.zeros(shape=(instance.shape[0], word_vecs.shape[0]))
print(instance.shape[0], word_vecs.shape[0])
new_vector[np.arange(new_vector.shape[0]), instance ] =1
new_instance.append(new_vector)
new_instance = np.array(new_instance)
であり、これはpleseは私を許し、私はこれに新しいです1つのホットベクトル
(260, 4075)
(260, 4075)
(260, 4075)
(260, 4075)
(260, 4075)
(260, 4075)
(260, 4075)
(260, 4075)
(260, 4075)
(260, 4075)
(260, 4075)
(260, 4075)
(260, 4075)
(260, 4075)
(260, 4075)
[[[ 1. 0. 0. ..., 0. 0. 0.]
[ 1. 0. 0. ..., 0. 0. 0.]
[ 1. 0. 0. ..., 0. 0. 0.]
...,
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 1. ..., 0. 0. 0.]]]
し、最終的に
for epoch in range(number_of_epochs):
start_time = time.time()
#Train for 1 epoch
model.fit(train_x, new_instance, nb_epoch=1, batch_size=batch_size, verbose=False, shuffle=True)
print("%.2f sec for training" % (time.time() - start_time))
sys.stdout.flush()
のための私の出力であります。ありがとうございました