我目前正在设计一定数量的 CNN,用于从图像中提取特征。
图像是光谱图,每个图像的形状为 (276,x,3)。X 在这里是列数,顺便说一下,它也是应该创建的特征向量的长度。
因此,cnn 必须以某种方式使用必须为 276 行和 1 列宽的内核,但在 keras 中是否有可能制作 2d 内核并执行 1d 卷积。最重要的因素是 1d 卷积和 2d 内核的形状,因为它被用来改变频谱图中某些条目的重要性。
我目前正在设计一定数量的 CNN,用于从图像中提取特征。
图像是光谱图,每个图像的形状为 (276,x,3)。X 在这里是列数,顺便说一下,它也是应该创建的特征向量的长度。
因此,cnn 必须以某种方式使用必须为 276 行和 1 列宽的内核,但在 keras 中是否有可能制作 2d 内核并执行 1d 卷积。最重要的因素是 1d 卷积和 2d 内核的形状,因为它被用来改变频谱图中某些条目的重要性。
设计在 x 轴上进行一列卷积的CNN
因此,cnn 必须以某种方式使用必须为 276 行和 1 列宽的内核,但在 keras 中是否有可能制作 2d 内核并执行 1d 卷积。
我不确定我是否正确理解了您的问题,但是如果您输入的图像高 276、宽 X=500 并且有 3 个颜色通道,那么以下将在 X 轴上执行按列卷积:
rows, cols, chans = 276, 500, 3
...
model.add(Convolution2D(64, rows, 1, input_shape=(rows, cols, chans)))
...
该层的输出形状将是 (1, 500, 64)。
我插入了“64”作为过滤器的数量。你可以将它设置为你需要的任何东西/任何效果最好的东西。
注意:形状是在 tensorflow 模式下指定的(即顺序是(行、列、通道))。根据您的配置,您可能必须将这些形状更改为 theano 模式:(通道、行、列)。
所以 cnn 必须以某种方式使用必须为276 行和 1 列宽的内核,
它实际上必须使用 276 行、1 列和 3 个通道宽的内核,因为您的输入图像有 3 个通道。如果您使用灰度图像,它将是 276 行和 1 列宽.. 但这没关系。