我目前正在一个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}$
假设您的图像
shape=(dim_x, dim_y, img_channels)
,您可以通过设置1D
来获得1D
卷积:请记住,此层的输出将具有形状
^{pr2}$(dim_x, 1, output_channels)
。如果您希望输入是连续的,可以通过设置使用Reshape
层:这将产生形状为
(dim_x, output_channels)
的输出。在一个有趣的事实是,这正是
Conv1D
与tf
后端在Keras
中的工作方式。在相关问题 更多 >
编程相关推荐