So I’ve been following Google’s official tensorflow guide and trying to build a simple neural network using Keras. But when it comes to training the model, it does not use the entire dataset (with 60000 entries) and instead uses only 1875 entries for training. Any possible fix?
import tensorflow as tf
from tensorflow import keras
import numpy as np
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
train_images = train_images / 255.0
test_images = test_images / 255.0
class_names = ['T-shirt', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle Boot']
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10)
])
model.compile(optimizer='adam',
loss= tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=10)
Output:
Epoch 1/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.3183 - accuracy: 0.8866 Epoch 2/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.3169 - accuracy: 0.8873 Epoch 3/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.3144 - accuracy: 0.8885 Epoch 4/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.3130 - accuracy: 0.8885 Epoch 5/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.3110 - accuracy: 0.8883 Epoch 6/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.3090 - accuracy: 0.8888 Epoch 7/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.3073 - accuracy: 0.8895 Epoch 8/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.3057 - accuracy: 0.8900 Epoch 9/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.3040 - accuracy: 0.8905 Epoch 10/10 1875/1875 [==============================] - 3s 2ms/step - loss: 0.3025 - accuracy: 0.8915 <tensorflow.python.keras.callbacks.History at 0x7fbe0e5aebe0>
Here’s the original google colab notebook where I’ve been working on this: https://colab.research.google.com/drive/1NdtzXHEpiNnelcMaJeEm6zmp34JMcN38
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
The number 1875 shown during fitting the model is not the training samples; it is the number of batches.
model.fit includes an optional argument batch_size, which, according to the documentation:
If unspecified,
batch_sizewill default to 32.
So, what happens here is – you fit with the default batch size of 32 (since you have not specified anything different), so the total number of batches for your data is
60000/32 = 1875
Method 2
It does not train on 1875 samples.
Epoch 1/10 1875/1875 [===
1875 here is the number of steps, not samples. In fit method, there is an argument, batch_size. The default value for it is 32. So 1875*32=60000. The implementation is correct.
If you train it with batch_size=16, you will see the number of steps will be 3750 instead of 1875, since 60000/16=3750.
Method 3
Just use batch_size = 1, if you want the entire 60000 data samples to be visible.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0