在keras中使用2d核实现1d卷积

2024-04-19 23:02:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在一个CNN网络上工作,我想在图像上应用2d内核,但它只需执行1d卷积,这意味着它只需沿着一个轴(在本例中是x轴)移动。在

核的形状与图像的y轴相同。目前不需要考虑过滤器的数量。在

例如: 给定一个大小为(6,3,3)=(行、列、颜色通道)的图像

对于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)))

错误:

^{pr2}$

Tags: 图像网络add过滤器inputmodel内核卷积
1条回答
网友
1楼 · 发布于 2024-04-19 23:02:58

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

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

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

^{pr2}$

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

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

相关问题 更多 >