Python 完全连接层大小

Python 完全连接层大小,python,machine-learning,keras,conv-neural-network,Python,Machine Learning,Keras,Conv Neural Network,我正在使用conv-net进行图像分类 我是从头开始做的 我的成绩比平时好 网络架构: 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='rel

我正在使用conv-net进行图像分类 我是从头开始做的

我的成绩比平时好

网络架构:

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上的值?

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


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

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


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

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