张量流对两个一维信号进行卷积

问题描述 投票:0回答:1

我有两个数组,我不知道如何在张量流中简单地对它们进行卷积。在 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 conv-neural-network convolution
1个回答
0
投票

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]

© www.soinside.com 2019 - 2024. All rights reserved.