我正在使用转换网进行图像分类 我是从头开始构建的
与文学相比,我的成绩很好
网络体系结构:
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)
拥有大于FC1的FC2大小不是“愚蠢的”吗? 如何计算FC2上的值?
答案 0 :(得分:1)
这不是愚蠢或错误,而是不寻常。当您尝试进行预测时,通常的想法是在到达输出层之前逐渐减少完全连接层中的神经元数量。如果增加大小适合您的数据,则没有任何问题。只需记住,更多的神经元也会导致数据过拟合,并且还会增加计算时间。
没有规则来计算FC层的大小。很多时候,第一个FC层的神经元数量与通过将完全连接的层之前的最后一层变平而获得的矢量的长度相同,但这是一种旧方法,并且不是必须的,并且不能保证良好的结果。