训练CNN后的准确性较低

问题描述 投票:1回答:1

我尝试使用Keras训练可对手写数字进行分类的CNN模型,但是在训练中我获得的准确性较低(低于10%),并且误差很大。我尝试了一个没有融合的简单神经网络,它也不起作用。

这是我的代码。

import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt

(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()

#Explore data
print(y_train[12])
print(np.shape(x_train))
print(np.shape(x_test))
#we have 60000 imae for the training and 10000 for testing

# Scaling data
x_train = x_train/255
y_train = y_train/255
#reshape the data
x_train = x_train.reshape(60000,28,28,1)
x_test = x_test.reshape(10000,28,28,1)
y_train = y_train.reshape(60000,1)
y_test = y_test.reshape(10000,1)

#Create a model
model = keras.Sequential([
keras.layers.Conv2D(64,(3,3),(1,1),padding = "same",input_shape=(28,28,1)),
keras.layers.MaxPooling2D(pool_size = (2,2),padding = "valid"),
keras.layers.Conv2D(32,(3,3),(1,1),padding = "same"),
keras.layers.MaxPooling2D(pool_size = (2,2),padding = "valid"),
keras.layers.Flatten(),
keras.layers.Dense(128,activation = "relu"),
keras.layers.Dense(10,activation = "softmax")])

model.compile(optimizer = "adam",
loss = "sparse_categorical_crossentropy",
metrics  = ['accuracy'])

model.fit(x_train,y_train,epochs=10)
test_loss,test_acc = model.evaluate(x_test,y_test)
print("\ntest accuracy:",test_acc)

有人可以建议我如何改善我的模型吗?

python tensorflow keras conv-neural-network mnist
1个回答
0
投票

您似乎使用了错误的损失函数。对于分类问题,最好使用categorical_crossentropy成本。如果您遇到二进制分类问题(例如,狗与猫),则可以使用binary_crossentropy

© www.soinside.com 2019 - 2024. All rights reserved.