带有 keras 的 CNN 架构

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 台

在这里,我试图在一个表中描述架构(本节中的问题)

-- CNN1 -- CNN2 -- CNN3 -- FC1 -- FC2

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

我很难定义网络的正确输入输出形状,寻求帮助。谢谢你。

Shu*_*hal 5

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)