我正在尝试创建一个 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.
答案 0 :(得分:0)
默认的 keras 批量大小为 32:
<块引用>batch_size 整数或 NULL。每次梯度更新的样本数。如果 未指定,batch_size 将默认为 32。
https://keras.rstudio.com/reference/fit.html
由于您没有将其设置为 1,因此每个 epoch 执行了 1152/32=36 个批次。