当进行一维数组的一维卷积时,我收到一个错误,表明我的第二个维度不够大。
以下是相关代码的概述:
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期望我将我的输入重新分成两个维度,以便可以使用一些深度来进行内核乘法。问题是为什么会出现这种情况,以及基于输入维度
对图层行为的期望答案 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进行卷积。