我有两个数组,我不知道如何在张量流中简单地对它们进行卷积。在 numpy 中我会这样做:
import numpy as np
from numpy import convolve
a=np.array([1,0,3])
b=np.array([-1,2])
convolve(a,b)
输出为
array([-1, 2, -3, 6])
。
如何在张量流中做到这一点?我试过这个:
a=tf.constant([1,0,3])
b=tf.constant([-1,2])
tf.nn.convolution(a,b,strides=1)
但是我明白
ValueError: `num_spatial_dims` must be 1, 2, or 3. Received: num_spatial_dims=-1.
Tensorflow 没有像 numpy 那样的完整填充选项,因此您必须自己添加填充:
a=tf.constant([1,0,3])
b=tf.constant([-1,2])
b=tf.reverse(b,axis=[0])
pad_add = len(b)-1
paddings = tf.constant([[pad_add,pad_add]])
a = tf.pad(a,paddings)
a=tf.reshape(a,(1,len(a),1))
b=tf.reshape(b,(len(b),1,1))
output =tf.nn.convolution(input = a, filters = b)
print(output.numpy().flatten())
这给出:
[-1 2 -3 6]