当前位置:  开发笔记 > 编程语言 > 正文

Tensorflow卷积与numpy卷积之间的差异

如何解决《Tensorflow卷积与numpy卷积之间的差异》经验,为你挑选了1个好方法。



1> Salvador Dal..:

你看到的问题是因为TF并没有真正计算卷积.如果您将看一下卷积实际执行的解释(检查卷积的视觉解释),您将看到第二个函数被翻转:

    根据虚拟变量表示每个函数

    反映其中一个功能(这是翻转)

    .....其他一些我不会在这里复制的东西.

除了翻转之外,TF会做所有事情.所以你需要做的就是在TF或numpy中翻转内核.翻转1d情况只是内核以相反的顺序,2d你需要翻转两个轴(旋转内核2次).

import tensorflow as tf
import numpy as np

I = [1, 0, 2, 3, 0, 1, 1]
K = [2, 1, 3]

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, 'VALID'))
with tf.Session() as sess:
    print sess.run(res)
    print np.convolve(I, K[::-1], 'VALID')

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有