Keras RNN 未对所有训练数据进行训练

时间:2021-03-03 01:08:18

标签: python tensorflow keras recurrent-neural-network

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

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.

1 个答案:

答案 0 :(得分:0)

默认的 keras 批量大小为 32:

<块引用>

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

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

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