use*_*378 2 python conv-neural-network keras
我正在使用 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'))
Run Code Online (Sandbox Code Playgroud)
现在我试图在表格中描述我的 CNN 架构:我有一个一维数据集,有 200 列,20 万行。
批量大小 = 64
CNN 1 - 64 频道 CNN 2 - 32 频道 CNN 3 - 16 频道
FC1 - 500 台 FC2 - 1 台
在这里,我试图在一个表中描述架构(本节中的问题)
Input_Shape-- 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 )
Run Code Online (Sandbox Code Playgroud)
第一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)))
Run Code Online (Sandbox Code Playgroud)
由于您正在执行二元分类,因此最后Dense一层将如下所示:
model.add(Dense(1, activation='sigmoid'))
Run Code Online (Sandbox Code Playgroud)
此外,作为奖励,模型编译如下:
model.compile( loss='binary_crossentropy' , optimizer='adam' , metrics=['accuracy'] )
Run Code Online (Sandbox Code Playgroud)