首页 > 解决方案 > RNN 从哪里获取批量大小?

问题描述

我正在通过以下方式训练 RNN:

def create_rnn_model(stateful,length):
    model = Sequential()
    model.add(SimpleRNN(20,return_sequences=False,stateful=stateful,batch_input_shape=(1,length,1)))
    adam = optimizers.Adam(lr=0.001)
    model.add(Dense(1))
    model.compile(loss='mean_absolute_error', optimizer=adam, metrics=[root_mean_squared_error])
    print(model.summary())
    return model

和适合

model_info = model_rnn_stateful.fit(x=x_train, y=y_train, validation_data=(x_test, y_test), batch_size=1, epochs=10,verbose=1)

并预测

predicted_rnn_stateful = model_rnn_stateful.predict(x_test)

但是当我预测它会抛出一个错误

ValueError:在有状态的网络中,您应该只传递包含多个样本的输入,这些样本可以除以批量大小。发现:200 个样本。批量大小:32。

没有我指定 32 的地方。我不知道它来自哪里。我的批量大小仅为 1。感谢任何帮助。

编辑 我的脚本/IDE 中没有使用断点。谢谢

标签: pythontensorflowmachine-learningneural-networkkeras

解决方案


来自Keras 文档

  • batch_size:整数或无。每次梯度更新的样本数。如果未指定,batch_size 将默认为 32。

1 可能是 batch_size 的错误值,然后它采用默认值 32。尝试使用 2 或 20 作为 batch_size


推荐阅读