Neural network low accuracy


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()
    #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.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
    #train AI model, 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))

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

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published