RNN 模型不学习任何东西

RNN model not learning anything

我正在用 RNN 练习。我随机创建 5 个整数。如果第一个整数是奇数,则 y 值为 1,否则 y 为 0(因此,只有第一个 x 有效)。问题是,当我 运行 这个模型时,它不会 'learn':val_loss 和 val_accuracy 不会随着时间的推移而改变。会是什么原因?

from keras.layers import SimpleRNN, LSTM, GRU, Dropout, Dense
from keras.models import Sequential
import numpy as np

data_len = 300
x = []
y = []
for i in range(data_len):
    a = np.random.randint(1,10,5)
    if a[0] % 2 == 0:
        y.append('0')
    else:
        y.append('1')

    a = a.reshape(5, 1)
    x.append(a)
    print(x)

X = np.array(x)
Y = np.array(y)   

model = Sequential()
model.add(GRU(units=24, activation='relu', return_sequences=True, input_shape=[5,1])) 
model.add(Dropout(rate=0.5))
model.add(GRU(units=12, activation='relu'))
model.add(Dropout(rate=0.5))
model.add(Dense(units=1, activation='softmax'))

model.compile(optimizer='adam', loss='mse', metrics=['accuracy'])
model.summary()

history = model.fit(X[:210], Y[:210], epochs=20, validation_split=0.2)

纪元 1/20 168/168 [==============================] - 1 秒 6 毫秒/步 - 损失:0.4345 - 精度:0.5655 - val_loss: 0.5000 - val_accuracy: 0.5000 ...

纪元 20/20 168/168 [==============================] - 0s 315us/步 - 损失:0.4345 - 精度:0.5655 - val_loss: 0.5000 - val_accuracy: 0.5000

您正在对 1 个神经元使用 softmax 激活,它总是 returns [1]。使用 sigmoid 激活 和 1 个神经元进行二元分类,softmax 用于多个神经元进行多类分类