【发布时间】:2017-12-12 00:49:34
【问题描述】:
我知道 RNN、LSTM、神经网络、激活函数是如何工作的,但是从各种可用的 LSTM 模型中,我不知道应该在什么时候使用什么数据。我创建了这 5 个模型作为我见过的不同 LSTM 模型的样本,但我不知道应该使用哪个最佳序列数据集。我对这些模型的第二/第三行感到困惑。 model1 和 model4 一样吗?为什么 model1.add(LSTM(10, input_shape=(max_len, 1), return_sequences=False)) 与 model4.add(Embedding(X_train.shape[1], 128, input_length=max_len)) 不同。如果有人能用简单的英语解释这五个模型,我将不胜感激。
from keras.layers import Dense, Dropout, Embedding, LSTM, Bidirectional
from keras.models import Sequential
from keras.layers.wrappers import TimeDistributed
#model1
model1 = Sequential()
model1.add(LSTM(10, input_shape=(max_len, 1), return_sequences=False))
model1.add(Dense(1, activation='sigmoid'))
model1.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print model1.summary()
#model2
model2 = Sequential()
model2.add(LSTM(10, batch_input_shape=(1, 1, 1), return_sequences=False, stateful=True))
model2.add(Dense(1, activation='sigmoid'))
model2.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print model2.summary()
#model3
model3 = Sequential()
model3.add(TimeDistributed(Dense(X_train.shape[1]), input_shape=(X_train.shape[1],1)))
model3.add(LSTM(10, return_sequences=False))
model3.add(Dense(1, activation='sigmoid'))
model3.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print model3.summary()
#model4
model4 = Sequential()
model4.add(Embedding(X_train.shape[1], 128, input_length=max_len))
model4.add(LSTM(10))
model4.add(Dense(1, activation='sigmoid'))
model4.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print model4.summary()
#model5
model5 = Sequential()
model5.add(Embedding(X_train.shape[1], 128, input_length=max_len))
model5.add(Bidirectional(LSTM(10)))
model5.add(Dense(1, activation='sigmoid'))
model5.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print model5.summary()
【问题讨论】:
标签: machine-learning keras deep-learning lstm recurrent-neural-network