Home > front end >  Neural network low accuracy
Neural network low accuracy

Time:09-21

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)

CodePudding user response:

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.

CodePudding user response:

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.

  • Related