使用Keras我正在尝试重建我在论文中找到的基本CNN架构。本文描述了如下架构:
激活功能据说属于relu。
我在keras中想出了以下代码来复制架构:
model = Sequential()
model.add(Dense(36, input_shape=(36,36,1)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Conv2D(32, (5, 5)))
model.add(Activation('relu'))
model.add(Conv2D(32, (5, 5)))
model.add(Activation('relu'))
model.add(Conv2D(32, (5, 5)))
model.add(Activation('relu'))
model.add(Conv2D(28, (5, 5)))
model.add(Activation('relu'))
model.add(Conv2D(28, (5, 5)))
model.add(Activation('relu'))
model.add(Conv2D(28, (5, 5)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(10, (5, 5),padding="same"))
model.add(Activation('relu'))
model.add(Conv2D(10, (5, 5),padding="same"))
model.add(Activation('relu'))
model.add(Conv2D(10, (5, 5),padding="same"))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2),padding="same"))
model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(75))
model.add(Activation('relu'))
model.add(Dense(10))
model.add(Activation('relu'))
model.add(Dense(2))
model.add(Activation('softmax'))
model.compile(Adam(lr=.01), loss='categorical_crossentropy', metrics=['acc'])
但是,我不知道如何理解卷积特征映射的内核符号。更具体地说,我不明白为什么有3个维度(即3 @ 1x5x5 ),而我只能将元组定义为" kernel_size"在我的Keras模型中。
答案 0 :(得分:3)
如果您附上论文会更容易,但是根据我们的论文,它应该如下:
3 @ 1x5x5表示内核大小为5乘5,1是输入的通道数,3是输出通道数。
我没有使用过Keras,但看起来应该是这样的:
model = Sequential()
model.add(BatchNormalization(input_shape=(36,36)))
model.add(Conv2D(3, (5, 5), activation='relu'))
model.add(Conv2D(3, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(3, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(75, activation= 'relu'))
model.add(Dense(10, activation= 'relu'))
model.add(Dense(2, activation= 'softmax'))
model.compile(Adam(lr=.01), loss='categorical_crossentropy', metrics=['accuracy'])