【发布时间】:2017-09-27 10:58:01
【问题描述】:
我正在关注this github 存储库以实现简单的对象检测。在那个存储库中,没有使用卷积层,但我想在密集层之前添加两个卷积层。所以我修改了model的代码如下:
def baseline_model():
# create model
model = Sequential()
model.add(Conv2D(32, (2,2), input_shape=(1, 16, 16), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(32, (2,2), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(2, activation='softmax'))
# Compile model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
我还将图像的尺寸从8*8 更改为16*16。
所以这里我输入数据集的维度将是 (40000* 16 * 16),其中 40000 是图像的数量。
现在我无法决定是使用conv1D 还是conv2D。我已经阅读了this keras 官方文档,但对 conv 维度之间的关系不太了解。层和输入数据形状。
如果我使用上述模型配置,则会出现以下错误:
Error when checking input: expected conv2d_21_input to have 4 dimensions, but got array with shape (40000, 16, 16)
那么我在这里缺少什么?通常如何决定是使用conv1D还是conv2D?感谢您的帮助,我是这个领域的新手。
【问题讨论】:
-
您缺少张量的
channels维度。可以这么说,如果你有一个灰度图像,可能是channels=1,RGB: 3 等等。你的卷积层需要一个 4D 张量输入,而你只提供前 3 个,batch_size, width, height。决定是使用conv1D还是conv2D:你希望如何卷积你的网络?沿 1 维还是使用 2D 过滤器? -
但是如果我没有 RGB 通道怎么办?
-
那么无论你有多少频道
标签: python machine-learning keras conv-neural-network