我正在使用 Python (keras) 处理二元分类问题。
我的 CNN 网络架构如下:
def CNN():
model = Sequential()
model.add(Conv2D(64, kernel_size=(1, 3), activation='elu', padding='valid', input_size=(20,10, 1)))
model.add(Conv2D(32, kernel_size=(1, 3), activation='elu', padding='valid'))
model.add(Conv2D(16, kernel_size=(1, 3), activation='elu', padding='valid'))
model.add(Flatten())
model.add(Dense(512, activation='elu'))
model.add(Dense(512, activation='sigmoid'))
现在我尝试在表格中描述我的 CNN 架构: 我有一个一维数据集,包含 200 列 200k 行。
批量大小 = 64
CNN 1 - 64 channel CNN 2 - 32 channel CNN 3 - channel 16
FC1 - 500 单位 FC2 - 1 台
这里我试图在表格中描述架构(本节中的问题)
-- CNN1 -- CNN2 -- CNN3 -- FC1 -- FC2
输入形状-- 64* 64 * 200 * 1 -- 32* 64 * 200 * 1 -- 16* 64 * 200 * 1 -- 16*64*200*1*500 - 16*64*200*1 *500
输出形状 -- 32* 64 * 200 * 1 - 16* 64 * 200 * 1 - 16* 64 * 200 * 1 - 16*64*200*1*500 -- 1
我在定义网络的正确输入输出形状时遇到了麻烦,寻求一些帮助。谢谢。
最佳答案
Keras 中用于图像分类的标准 CNN 的输入形状如下:
input_shape = ( batch_size , height , width , num_channels )
第一个 Conv2D
层的输入形状为:
img_height = 20
img_width = 10
num_channels = 1
model.add(Conv2D(64, kernel_size=(1, 3), activation='elu', padding='valid',
input_size=(img_height,img_width, num_channels)))
由于您正在执行二元分类,最后一个Dense
层将如下所示:
model.add(Dense(1, activation='sigmoid'))
此外,作为奖励,模型编译如下:
model.compile( loss='binary_crossentropy' , optimizer='adam' , metrics=['accuracy'] )
关于python - 带有 keras 的 CNN 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56004871/