tensorflow conv1d内核大小维度错误

时间:2018-03-31 21:35:04

标签: tensorflow convolution

当进行一维数组的一维卷积时,我收到一个错误,表明我的第二个维度不够大。

以下是相关代码的概述:

inputs_ = tf.placeholder(tf.float32 ,(None, 45), name='inputs')
x1 = tf.expand_dims(inputs_, axis=1)
x1 = tf.layers.conv1d(x1, filters=64, kernel_size=1, strides=1, padding='valid')

我希望将内核大小增加到3,这样相邻的点也会影响每个输入节点的输出,但是我得到以下错误:

  

ValueError:从1减去3的负尺寸大小   带有输入形状的'conv1d_4 / convolution / Conv2D'(op:'Conv2D'):   [?,1,1,45],[1,3,45,64]。

我的猜测是,tensorflow期望我将我的输入重新分成两个维度,以便可以使用一些深度来进行内核乘法。问题是为什么会出现这种情况,以及基于输入维度

对图层行为的期望

1 个答案:

答案 0 :(得分:1)

即使您只有一个频道,也需要将Channel维度添加为最后一个维度。 所以这段代码有效:

inputs_ = tf.placeholder(tf.float32 ,(None, 45), name='inputs')
x1 = tf.expand_dims(inputs_, axis=-1)
x1 = tf.layers.conv1d(x1, filters=64, kernel_size=3, strides=1, padding='valid')

所以基本上错误是因为你的张量看起来宽度为1,有45个通道。 TensorFlow尝试使用1维内核大小3进行卷积。