简体   繁体   English

batch_size 与数据大小的关系

[英]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/54/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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM