【问题标题】:Convolution on numpi vs tensorflow 2.4numpy 与 tensorflow 2.4 中的卷积
【发布时间】:2021-06-12 07:18:14
【问题描述】:

我是 Tensorflow 2.4 的新手,我有一个问题。

设 x = [3, 4, 5], h = [2, 1, 0]

使用 numpy 我得到了

np.convolve(x, h) = [6, 11, 14, 5, 0]

但我不知道通过 tensorflow 2.4 来做到这一点

如果您知道如何执行此操作并使用 numpy 获得相同的结果,那将非常有帮助。

【问题讨论】:

    标签: numpy tensorflow tensorflow2.0


    【解决方案1】:

    虽然我认为这个问题主要是与this question 的重复,但我可以使用该问题提出一个等效的脚本。

    import tensorflow as tf
    import numpy as np
    
    I = [3, 4, 5]
    K = [2, 1, 0]
    
    I = [0] + I + [0]
    
    i = tf.constant(I, dtype=tf.float32, name='i')
    k = tf.constant(K, dtype=tf.float32, name='k')
    
    data   = tf.reshape(i, [1, int(i.shape[0]), 1], name='data')
    kernel = tf.reshape(k, [int(k.shape[0]), 1, 1], name='kernel')
    
    res = tf.squeeze(tf.nn.conv1d(data, kernel[::-1], 1, 'SAME'))
    print(res)
    print(np.convolve(I, K, 'SAME'))
    

    tf.Tensor([ 6. 11. 14. 5. 0.], shape=(5,), dtype=float32)

    [6 11 14 5 0]

    在您的情况下,他们的关键是了解 tensorflow 和 numpy 如何处理填充。虽然链接的问题很好地解释了这一点,但我还要注意full 的默认np.convolve 填充在tensorflow conv 1d 中没有等效项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      • 2013-11-30
      • 1970-01-01
      • 2017-10-21
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      相关资源
      最近更新 更多