batch_size 与数据大小的关系
Posted
技术标签:
【中文标题】batch_size 与数据大小的关系【英文标题】:Relationship between batch_size and data size 【发布时间】:2022-01-16 18:47:22 【问题描述】:我有一个关于 batch_size 的简单基本问题
例如,这个简单的 RNN 使用 128 个数据集。
length_of_sequence = 3
in_out_neurons = 5
n_hidden = 128
model = Sequential()
model.add(LSTM(n_hidden, batch_input_shape=(None, length_of_sequence, in_out_neurons), return_sequences=True))
model.add(Dense(in_out_neurons,activation="linear"))
optimizer = Adam(lr=0.001)
model.compile(loss="mean_squared_error", optimizer=optimizer)
model.summary()
train_x = np.zeros((128,3,5))
train_y = np.zeros((128,1,5))
model.fit(
train_x,train_y,
batch_size=30,
epochs=10,
validation_split=0.9
)
fit()
显示了这些结果。
但是 dataset 是 128,batch_size 是 30 所以,它必须像
在5/5
或4/4
附近,我错了吗??
不知何故出现了1/1
。
Epoch 1/10
1/1 [==============================] - 2s 2s/step - loss: 0.0000e+00 - val_loss: 0.0000e+00
Epoch 2/10
1/1 [==============================] - 0s 33ms/step - loss: 0.0000e+00 - val_loss: 0.0000e+00
Epoch 3/10
1/1 [==============================] - 0s 32ms/step - loss: 0.0000e+00 - val_loss: 0.0000e+00
Epoch 4/10
1/1 [==============================] - 0s 33ms/step - loss: 0.0000e+00 - val_loss: 0.0000e+00
Epoch 5/10
1/1 [==============================] - 0s 46ms/step - loss: 0.0000e+00 - val_loss: 0.0000e+00
Epoch 6/10
1/1 [==============================] - 0s 34ms/step - loss: 0.0000e+00 - val_loss: 0.0000e+00
Epoch 7/10
1/1 [==============================] - 0s 34ms/step - loss: 0.0000e+00 - val_loss: 0.0000e+00
Epoch 8/10
1/1 [==============================] - 0s 38ms/step - loss: 0.0000e+00 - val_loss: 0.0000e+00
Epoch 9/10
1/1 [==============================] - 0s 28ms/step - loss: 0.0000e+00 - val_loss: 0.0000e+00
Epoch 10/10
1/1 [==============================] - 0s 26ms/step - loss: 0.0000e+00 - val_loss: 0.0000e+00
【问题讨论】:
您的验证拆分设置为model.fit
中数据集的 90%。也许尝试将拆分调整为 0.2 等。
@sakumoil 谢谢你的建议。我了解如何调整拆分
【参考方案1】:
验证数据比训练数据大得多:总共 128 个数据样本,其中 90% 用于验证,因此验证数据约为 115,而训练数据只有约 13 个样本。当您设置 batch_size=30
时,13 幅图像很容易适合批次,这就是为什么只显示 1/1
用于训练和验证集(如 4/4
)。
代码应更改如下以获得4/4
进行训练和1/1
进行验证:
model.fit(
train_x,train_y,
batch_size=30,
epochs=10,
validation_split=0.1
)
【讨论】:
我想念validation_split
,反之亦然。谢谢你的帮助。以上是关于batch_size 与数据大小的关系的主要内容,如果未能解决你的问题,请参考以下文章
Batchsize的大小怎样设置?Batchsize过大和过小有什么影响