Sırayla sonraki öğeyi tahmin etmek için Keras kullanarak bir LSTM ile bazı vanilya desen tanımayı yapmaya çalışıyorum.Keras'ta değişken uzunlukta bir girdi LSTM nasıl oluştururum?
Benim verileri bu gibi görünebilir: alıştırma dizisinin etiket listesindeki son öğedir
: X_train['Sequence'][n][-1]
.
Benim Sequence
sütununun sırayla değişken sayıda öğesi olabileceğinden, kullanmak için en iyi modelin bir RNN olduğuna inanıyorum. Ben Ancak
Length of training is 13
Training set is [1, 3, 13, 87, 1053, 28576, 2141733, 508147108, 402135275365, 1073376057490373, 9700385489355970183, 298434346895322960005291, 31479360095907908092817694945]
: Aşağıda keras bir LSTM inşa etmek benim girişimi:
# Build the model
# A few arbitrary constants...
max_features = 20000
out_size = 128
# The max length should be the length of the longest sequence (minus one to account for the label)
max_length = X_train['Sequence'].apply(len).max() - 1
# Normal LSTM model construction with sigmoid activation
model = Sequential()
model.add(Embedding(max_features, out_size, input_length=max_length, dropout=0.2))
model.add(LSTM(128, dropout_W=0.2, dropout_U=0.2))
model.add(Dense(1))
model.add(Activation('sigmoid'))
# try using different optimizers and different optimizer configs
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
Ve burada benim modeli eğitmek girişiminde edebilirsiniz:
# Train the model
for seq in X_train['Sequence']:
print("Length of training is {0}".format(len(seq[:-1])))
print("Training set is {0}".format(seq[:-1]))
model.fit(np.array([seq[:-1]]), [seq[-1]])
Benim çıkış şudur aşağıdaki hatayı edinin:
Exception: Error when checking model input: expected embedding_input_1 to have shape (None, 347) but got array with shape (1, 13)
I Eğitim adımımın doğru şekilde kurulduğuna inanıyorum, bu yüzden model yapmam yanlış olmalı. 347'nin max_length
olduğunu unutmayın.
Keras'ta değişken uzunluklu bir girdi LSTM'yi doğru şekilde nasıl oluşturabilirim? Verileri doldurmamayı tercih ederim. İlgili olup olmadığından emin değilim, ancak Theano arka ucunu kullanıyorum.
Bu girdiyi input_shape değerini belirterek ve rastgele uzunluk için Yok kullanarak gerçekleştirmeyi başardım. – Benjamin
Belki de benim kendi sorumuzun size faydası olabilir: http://stackoverflow.com/questions/38265922/recurrent-convolutional-blstm-neural-network-arbitrary-sequence-lengths – Benjamin