【问题标题】:RNN model not learning anythingRNN 模型没有学到任何东西
【发布时间】:2020-05-25 07:26:22
【问题描述】:

我正在练习 RNN。我随机创建 5 个整数。如果第一个整数是奇数,则 y 值为 1,否则 y 为 0(因此,只有第一个 x 计数)。问题是,当我运行这个模型时,它不会“学习”: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 [==============================] - 1s 6ms/步 - 损失: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

【问题讨论】:

标签: tensorflow keras recurrent-neural-network


【解决方案1】:

您正在使用带有 1 个神经元的 softmax 激活,它总是返回 [1]sigmoid activation 使用 1 个神经元进行二元分类,softmax 使用多个神经元进行多类分类

【讨论】:

  • 这解决了 val_loss 的问题。谢谢你。 val_accuracy 在 0.5238 的时期内仍然保持不变。为什么水平低却不学习?
  • 可能是因为您的数据是随机的?没有什么可学的,没有结构
猜你喜欢
  • 2021-03-28
  • 2020-07-12
  • 1970-01-01
  • 2019-02-05
  • 2021-10-29
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多