【问题标题】:Keras RNN not training on all training data [duplicate]Keras RNN 未对所有训练数据进行训练 [重复]
【发布时间】:2021-03-03 01:08:18
【问题描述】:

我正在尝试创建一个 RNN,以获取 EEG 数据并输出与参与者在接收 EEG 时观看的视频的享受程度相对应的分数(满分 10)。我已将我所有的 EEG 分成一个 1152 个 EEG 强的训练集和一个 128 个 EEG 的测试集,但是当我开始训练我的模型时,它告诉我它在每个时期的 36 个 EEG 之间进行训练,而不是完整的训练集。如果重要的话,每个脑电图是 32 通道,8064 点(128Hz 为 60 秒)。大多数值只是模型正常工作后要调整的占位符。

X, y = getXY()
x_test = X[:np.size(X,0)//10,:,:]
y_test = y[:np.size(y,0)//10]
x_train = X[np.size(X,0)//10:,:,:]
y_train = y[np.size(y,0)//10:]

print(x_train.shape) #(1152,32,8064)
print(x_test.shape) #(128, 32, 8064)

model = Sequential()

model.add(LSTM(128, input_shape=(x_train.shape[1:]), activation="relu", return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(128, activation="relu"))
model.add(Dropout(0.5))
model.add(Dense(32, activation="relu"))
model.add(Dropout(0.5))
model.add(Dense(1))

opt = tf.keras.optimizers.Adam(lr=1e-3, decay=1e-5)

model.compile(loss="mse", optimizer=opt, metrics=["accuracy"])

model.fit(x_train, y_train, epochs=3, validation_data=(x_test, y_test))

运行此代码最终会触发 keras 输出,显示当前 epoch 的进度,但它显示的是 (some number)/36 而不是 (other number) /1152.

【问题讨论】:

  • 我了解到我所指的数字是批量大小,这意味着我还有很多其他问题,但这不是其中之一。

标签: python tensorflow keras recurrent-neural-network


【解决方案1】:

默认的 keras 批量大小为 32:

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

https://keras.rstudio.com/reference/fit.html

由于您没有将其设置为 1,因此每个 epoch 执行了 1152/32=36 个批次。

【讨论】:

    猜你喜欢
    • 2014-05-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 2020-01-12
    • 1970-01-01
    • 2018-09-24
    相关资源
    最近更新 更多