【问题标题】:fully connected layer size全连接层大小
【发布时间】:2019-10-28 03:48:56
【问题描述】:

我正在使用卷积网络进行图像分类 我从头开始构建它

与文学相比,我得到了很好的结果

网络架构:

model = Sequential()
model.add(Conv2D(24,kernel_size=3,padding='same',activation='relu',
        input_shape=(n,n,1)))
model.add(MaxPool2D())
model.add(Conv2D(48,kernel_size=3,padding='same',activation='relu'))
model.add(MaxPool2D())
model.add(Conv2D(64,kernel_size=3,padding='same',activation='relu'))
model.add(MaxPool2D(padding='same'))
model.add(Conv2D(96,kernel_size=3,padding='same',activation='relu'))
model.add(MaxPool2D(padding='same'))
model.add(Flatten())
model.add(Dense(128, activation='relu'))    # SIZE 128  FC1
model.add(Dropout(0.5))
model.add(Dense(256, activation='relu'))   # SIZE 256   FC2
model.add(Dropout(0.5))
model.add(Dense(12, activation='softmax'))
model.compile(optimizer="adam", loss="categorical_crossentropy",metrics=[recall, fmeasure,precision,"accuracy"])  

如您所见,我的第一个全连接层 (FC1) 大小为 128,下一个大小为 256 (FC2)

FC2 的尺寸比 FC1 大不是很“愚蠢”吗? FC2的价值如何计算?

【问题讨论】:

  • 不,它不“愚蠢”,也无法计算,这些只是可以调整的超参数。
  • @MatiasValdenegro 提到它们是超参数。如果您注意到,当您在第一个 Conv2D 层中进行卷积时,您正在将输入维度扩展到更大的值,即从 n, n, 1m, m, 24 维度值(m 将取决于 nkernel_sizepadding)。卷积后维度增加。

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


【解决方案1】:

这不是愚蠢或错误,而是不同寻常。当您尝试进行预测时,一般的想法是在到达输出层之前逐渐减少全连接层中的神经元数量。如果增加大小对您的数据有用,那么它没有任何问题。请记住,更多的神经元也会导致对数据的过度拟合以及更多的计算时间。

没有规则来计算 FC 层的大小。很多时候,第一个 FC 层的神经元数量与将全连接层之前的最后一层展平得到的向量长度相同,但这是一种旧方法,没有必要,也不能保证好的结果。

【讨论】:

    猜你喜欢
    • 2019-12-11
    • 2017-12-14
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2019-10-01
    相关资源
    最近更新 更多