LSTM模型行为

时间:2019-07-11 14:54:00

标签: python lstm

我不是神经网络专家。您能否解释一下有关LSTM的一些事实。最近,我玩过Keras库,发现了一些奇怪的行为。

第一个示例,非常简单的逻辑:

for i in range (samples):
    tmp_x = [random() for _ in range(items)]
    if sum(tmp_x[:5])>3 and sum(tmp_x[5:])<3:
        tmp_y=0
    else:
        tmp_y=1
    x.append(tmp_x)
    y.append(tmp_y)

X,y = array(x), array(y)
X = X.reshape(samples,items,1)
X_train, X_val_and_test, Y_train, Y_val_and_test = train_test_split(X, y, test_size=0.3)
X_val, X_test, Y_val, Y_test = train_test_split(X_val_and_test, Y_val_and_test, test_size=0.5)

model = Sequential()
model.add(LSTM(20, input_shape=(items, 1)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
history = model.fit(X_train, Y_train, epochs=100, validation_data=(X_val,Y_val), shuffle=False)

LSTM可以轻松解决此任务。

另一个例子:

for i in range (samples):
    tmp_x = [random() for _ in range(items)]
    if int(sum(tmp_x)*100)%2 == 0:
        tmp_y=0
    else:
        tmp_y=1
    x.append(tmp_x)
    y.append(tmp_y)
X,y = array(x), array(y)

我的LSTM模型什么都学不到。

您能解释一下吗?如何修改我的模型以解决此任务?谢谢。

0 个答案:

没有答案