我正在尝试使用keras在Cifar-10数据集上实现ANN但由于某些原因,我不知道我只有10%的准确率?
我使用了5个隐藏层,分别有8、16、32、64128个神经元。
这是指向jupyter笔记本的链接
model = Sequential()
model.add(Dense(units = 8,activation = 'sigmoid' , input_dim = X.shape[1]))
model.add(Dense(units = 16 , activation = 'sigmoid'))
model.add(Dense(units = 32 , activation = 'sigmoid'))
model.add(Dense(units = 64 , activation = 'sigmoid'))
model.add(Dense(units = 128 , activation = 'sigmoid'))
model.add(Dense(units = 10 , activation = 'softmax'))
model.compile(loss = 'categorical_crossentropy' , optimizer = 'adam' , metrics = ['accuracy'])
model.fit(x_train,y_train,epochs = 1000, batch_size = 500 )
对于这样的网络来说,这是非常正常的精度。你只有密集层,这对这个数据集来说是不够的。Cifar-10是一个图像数据集,因此:
-
考虑使用cnn
-
使用'relu'激活而不是sigmoid。
-
尝试使用图像增强
-
为了避免过拟合,不要忘记正则化你的模型。
500的批量也很高。考虑使用32 - 64 - 128