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, 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)
I ran your model and got 50% accuracy by increasing the number of epochs to about 30.
- When training a model, make sure to let it run until your loss function plateaus.
Coin-toss accuracy is 10%, so your model is much better than chance.
- Always make sure to understand what would be "good" or "bad" accuracy for your dataset.
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.
- Use convolutional NNs when handling images.
Answered By – philosofool