【问题标题】:CIFAR-10 python architictureCIFAR-10 python 架构
【发布时间】:2020-11-06 12:25:09
【问题描述】:

我正在关注本教程here

model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same', input_shape=(32, 32, 3)))
model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
model.add(Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
model.add(Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
model.add(MaxPooling2D((2, 2)))

model.add(Flatten())
model.add(Dense(128, activation='relu', kernel_initializer='he_uniform'))
model.add(Dense(10, activation='softmax'))

我正在尝试理解使用 CIFAR-10 数据集的给定代码。

  • 他为什么使用kernel_initializer='he_uniform'?

  • 他为什么选择 128 作为密集层?

  • 如果我们在代码中添加更密集的层会发生什么:
    model.add(Dense(512, activation='relu', kernel_initializer='he_uniform'))

  • 有什么办法可以提高模型的准确率?

  • 合适的辍学率是多少?

【问题讨论】:

    标签: python keras deep-learning conv-neural-network


    【解决方案1】:

    他为什么使用kernel_initializer='he_uniform'

    神经网络层中的权重是随机初始化的。怎么样?他们应该遵循哪种分布? he_uniform 是初始化该层权重的策略。

    他为什么选择 128 作为密集层?

    这是任意选择的。

    如果我们在代码中添加更密集的层会发生什么:
    model.add(Dense(512, activation='relu', kernel_initializer='he_uniform'))

    我认为您的意思是将它们添加到其他 128 个神经元密集层所在的位置(不会破坏模型)模型将变得更深并且具有更高数量的参数(即你的模型会变得更复杂),无论是积极的还是消极的。

    合适的辍学率是多少?

    通常您会看到 [0.2, 0.5] 范围内的费率。较高的比率会减少过度拟合,但可能会导致训练变得更加不稳定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      • 2018-03-26
      • 1970-01-01
      • 2016-04-16
      • 2020-10-14
      相关资源
      最近更新 更多