【发布时间】:2017-01-25 14:11:05
【问题描述】:
import numpy as np
import tensorflow as tf
X_node = tf.placeholder('float',[1,10,1])
filter_tf = tf.Variable( tf.truncated_normal([3,1,1],stddev=0.1) )
Xconv_tf_tensor = tf.nn.conv1d(X_node, filter_tf,1,'SAME')
X = np.random.normal(0,1,[1,10,1])
with tf.Session() as sess:
tf.global_variables_initializer().run()
feed_dict = {X_node: X}
filter_np = filter_tf.eval()
Xconv_tf = sess.run(Xconv_tf_tensor,feed_dict)
Xconv_np = np.convolve(X[0,:,0],filter_np[:,0,0],'SAME')
我正在尝试查看 Tensorflow 的卷积结果,以检查它的行为是否符合我的预期。
当我运行 numpy 卷积并将其与 Tensorflow 卷积进行比较时,答案是不同的。
上面的代码是我运行测试的方式。
我希望Xconv_tf 和Xconv_np 是相等的。
我的最终目标是在具有一维滤波器的矩阵上运行 2D 卷积,该滤波器在具有相同滤波器的每一行上运行 1d 卷积。为了完成这项工作(这基本上是行上的一维卷积循环),我需要弄清楚为什么我的 np.convolve 和 tf.conv1d 会给我不同的答案。
【问题讨论】:
-
完全不同的数字。有些元素甚至符号不同。差异绝对是显着的
标签: python numpy tensorflow convolution