Search code examples
pythontensorflownetworkingbatchsize

Batch size of an neuronal network


I'm currently learning neuronal networks and trying to understand Tensorflow. I've got a code, where I'm asked about the batch size, but I have no clue.

import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)

I read the documentation and it should be given in the model.fit() method. Default batch size is 32 if I'm right. Is this true for this code?

Thanks in advance


Solution

  • That's correct. That'd work. But if you want to change it, you can simply pass it to fit(batch_size=64) and see the result.

    import tensorflow as tf
    
    mnist = tf.keras.datasets.mnist
    (x_train, y_train), (x_test, y_test) = mnist.load_data()
    x_train, x_test = x_train / 255.0, x_test / 255.0
    model = tf.keras.models.Sequential([
        tf.keras.layers.Flatten(input_shape=(28, 28)),
        tf.keras.layers.Dense(128, activation='relu'),
        tf.keras.layers.Dropout(0.2),
        tf.keras.layers.Dense(10, activation='softmax')
    ])
    model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
    model.fit(x_train, y_train, epochs=5, batch_size=64)
    

    The number of training samples

    The number of training samples are simply calculated by, the number of batch size per epoch times by the batch size: i.e., 32 * 1875 = 60,000. or 256 * 235 = 60,160. The 60K is the total number of training samples. In fact, the ~60K is known and 235 and 1875 are calculated by ~60K / batch size.