尝试为CIFAR-10创建完全连接的神经网络

时间:2019-03-13 08:32:35

标签: python tensorflow keras neural-network

在机器学习方面,我是一个相对入门的人。

我一直在使用TensorFlow作为后端的Keras,由于某些原因,当我使用CIFAR-10数据集时,我的准确性不高。

这是我的代码。

model = Sequential()

batch_size = 250

model.add(Dense(100, input_shape = (3072, ), activation='relu',
bias_initializer = 'RandomNormal',kernel_regularizer=regularizers.l2(.01)))


model.add(Dense(50))

model.add(Dense(10))

model.compile(optimizer=keras.optimizers.SGD(lr=0.004), 
loss='hinge', metrics=['categorical_accuracy'])

model.fit(x=X_train, y=utils.to_categorical(Y_Train, num_classes = 10), 
batch_size = batch_size, epochs = 100, validation_split = .4)

X_Train是一个(50000,3072)numpy数组,而Y_Train是一个(50000,1)numpy数组。

我得到的结果是

损失:1.1865

categorical_accuracy:0.1696

val_loss:1.1859

val_categorical_accuracy:0.1668

在100个纪元内。

我的设置是Ubuntu 18.04,Python 3.6,Numpy 1.16,Keras 2.2.4

我的代码中是否存在错误,或者是完全连接的神经网络只是图像分类的不良设置而应该使用卷积神经网络吗?

1 个答案:

答案 0 :(得分:1)

您的模型有很多问题:

  • 第2层和第3层没有激活,因此是线性的(在这种情况下,对分类无用)

  • 具体来说,您需要在最后一层激活softmax。损耗不知道如何处理线性输出。

  • 当您应该使用hinge之类的东西时,您会损失categorical_crossentropy

Jibin关于完全连接模型不够复杂的说法是不正确的,您不需要太多复杂性就可以在CIFAR10上获得不错的准确性。