【问题标题】:CNN archicture with keras带有 keras 的 CNN 架构
【发布时间】:2019-05-06 12:06:08
【问题描述】:

我正在处理 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 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

Output_Shape -- 32* 64 * 200 * 1 - 16* 64 * 200 * 1 - 16* 64 * 200 * 1 - 16*64*200*1*500 -- 1

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

【问题讨论】:

    标签: python keras conv-neural-network


    【解决方案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'] )
    

    【讨论】:

      猜你喜欢
      • 2019-05-11
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      相关资源
      最近更新 更多