【问题标题】:Trying to create a fully connected neural network for CIFAR-10尝试为 CIFAR-10 创建一个全连接的神经网络
【发布时间】:2019-08-03 20:44:42
【问题描述】:

在机器学习方面,我是一个相对初学者。

我一直在使用以 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

分类准确度: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

我的代码有什么问题吗,还是因为完全连接的神经网络只是一个糟糕的图像分类设置,应该使用卷积神经网络?

【问题讨论】:

    标签: python tensorflow keras neural-network


    【解决方案1】:

    您的模型存在许多问题:

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

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

    • 你使用hinge loss,而你应该使用categorical_crossentropy之类的东西。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-14
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      • 2018-04-07
      • 2017-06-14
      • 1970-01-01
      • 2012-12-19
      相关资源
      最近更新 更多