[英]Relationship between batch_size and data size
I have simple and basic question about batch_size我对 batch_size 有一个简单而基本的问题
For example this simple RNN use 128 datasets.例如,这个简单的 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
)
This fit()
shows these result.这个fit()
显示了这些结果。
However dataset is 128, and batch_size is 30 so, it must be like around 5/5
or 4/4
, am I wrong??但是 dataset 是 128,而 batch_size 是 30 所以,它必须像5/5
或4/4
左右,我错了吗?
Somehow there comes 1/1
.不知何故出现了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
The validation data is much bigger than train data: Total 128 data samples and 90% of it for validation so validation is around ~115 while train data has only ~13 samples.验证数据比训练数据大得多:总共 128 个数据样本,其中 90% 用于验证,因此验证约为 115,而训练数据只有 13 个样本。 When you set the batch_size=30
then 13 images fit into the batch easily that's why shows only 1/1
for train and for validation set like 4/4
.当您设置batch_size=30
时,13 个图像很容易适合批次,这就是为什么只显示1/1
用于训练和验证集(如4/4
)。
The code should be changes as following to get 4/4
for training and 1/1
for validation:代码应进行如下更改,以获得4/4
用于训练和1/1
用于验证:
model.fit(
train_x,train_y,
batch_size=30,
epochs=10,
validation_split=0.1
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.