[英]Trying to create a fully connected neural network for CIFAR-10
在机器学习方面,我是一个相对的初学者。
我一直在使用 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
价值损失:1.1859
val_categorical_accuracy:0.1668
在 100 个时代。
我的设置是 Ubuntu 18.04、Python 3.6、Numpy 1.16、Keras 2.2.4
我的代码是否有问题,或者是完全连接的神经网络对于图像分类来说只是一个糟糕的设置,应该使用卷积神经网络?
您的模型存在许多问题:
第 2 层和第 3 层没有激活,因此是线性的(在这种情况下对分类无用)
具体来说,您需要在最后一层进行 softmax 激活。 损失不知道如何处理线性输出。
当您应该使用诸如categorical_crossentropy
东西时,您会使用hinge
损失。
Jibin 所说的关于您的全连接模型不够复杂的说法是不正确的,您不需要太多复杂性即可在 CIFAR10 上获得不错的准确性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.