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')
. Когда я запускаю свертку numpy и сравниваю ее с сверткой Tensorflow, ответ отличается. Вышеприведенный код - как я проверил тест. Я надеялся, что Xconv_tf
и Xconv_np
будут равны.Разница между сверткой тензора и сверткой numpy
Моя конечная цель - выполнение двумерной свертки на матрице с 1-мерным фильтром, который запускает 1d-свертку в каждой строке с тем же фильтром. Чтобы сделать эту работу (которая будет в основном петлей из 1d свертки над строками), мне нужно выяснить, почему мои np.convolve
и tf.conv1d
дают мне разные ответы.
Совершенно разные цифры. Некоторые элементы даже отличаются по знакам. Разница определенно значительна –