python - 在keras中使用2d内核执行1d卷积

标签 python machine-learning neural-network keras conv-neural-network

我目前正在研究 CNN 网络,其中我想在图像上应用 2d 内核,但它只需要执行 1d 卷积,这意味着它只需要沿一个轴(这里的 x 轴)移动案件)。

内核的形状与图像的 y 轴相同。目前应用的过滤器数量不是问题。

一个例子: 给定大小为 (6,3,3) = (rows, cols, color_channel) 的图像

我应该如何在给定 2d 滤波器的情况下执行 1d 卷积?

尝试了@Marcin Możejko 的建议

dim_x = 3
dim_y = 6
color_channels = 3
#model.add(ZeroPadding2D((6,4),input_shape=(6,3,3)))
model.add(Conv2D(filters = 32,kernel_size=(dim_y,1) , activation='linear' , input_shape = (6,3,3)))
print model.output_shape
model.add(Reshape((dim_x,color_channels)))

错误:

The total size of the new array must be unchanged

最佳答案

假设您的图像 shape=(dim_x, dim_y, img_channels) 您可以通过设置获得 1D 卷积:

conv1d_on_image = Convolution2D(output_channels, 1, dim_y, border_mode='valid')(input)

请记住,该层的输出形状为 (dim_x, 1, output_channels)。如果您希望您的输入是连续的,您可以通过设置使用 Reshape 层:

conv1d_on_image = Reshape((dim_x, output_channels))(conv1d_on_image)

这将产生形状为 (dim_x, output_channels) 的输出。

一个有趣的事实是,这正是 Conv1D 在带有 tf 后端的 Keras 中的工作方式。

关于python - 在keras中使用2d内核执行1d卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42618543/

相关文章:

python - google-cloud 依赖项在 python 应用程序引擎中被覆盖

python - 根据条件合并列

python - 连接boto3 S3时如何指定凭据?

python - 访问cpython字符串格式规范迷你语言解析器

Matlab 神经网络模拟直至隐藏层

python - 如何使用Tensorflow进行信号处理?

r - SVM奇怪的分类

machine-learning - 训练人工神经网络时验证数据去哪里?

neural-network - 虚拟机可以实现为神经网络吗?

java - 神经元结果有点偏差