Reputation: 47
The model is getting really low accuracy. This is my first time writing a neural network so I dont really know how to make it better
import tensorflow as tf
import matplotlib.pyplot as plt
#data set
data = tf.keras.datasets.cifar10
(x_train, y_train), (x_test, y_test) = data.load_data()
plt.imshow(x_train[0], cmap=plt.cm.binary)
#normalize data
x_train = tf.keras.utils.normalize(x_train, axis=1)
x_test = tf.keras.utils.normalize(x_test, axis=1)
#building AI model
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax))
#compile model
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
plt.show()
#train AI model
model.fit(x_train, y_train, epochs=3)
Upvotes: 1
Views: 291
Reputation: 1
You can refer to the examples in https://keras.io/examples/vision/ to change your model structure, increase the training epoch, try other activations or even not use them (the middle Dense layer), and sometimes increase the training batch size can also increase the model effect.
Upvotes: 0
Reputation: 973
I ran your model and got 50% accuracy by increasing the number of epochs to about 30.
Coin-toss accuracy is 10%, so your model is much better than chance.
To improve the model architecture, adding convolutional layers will help a lot. Convolutional Neural Networks are the state of the art for image classificayion and you should read up on them if you want to understand computer vision.
model = tf.keras.models.Sequential()
# the next two lines add convolution layers to your code above
model.add(tf.keras.layers.Conv2D(6, 3, strides=(1, 1), padding="valid"))
model.add(tf.keras.layers.Conv2D(10, 5))
model.add(tf.keras.layers.Flatten())
Running this for 12 epochs gets to 78% accuracy on my local machine and it has not finished learning.
Upvotes: 2