我不是神经网络专家。您能否解释一下有关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模型什么都学不到。
您能解释一下吗?如何修改我的模型以解决此任务?谢谢。