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
が等しいと思っていました。Tensorflow畳み込みとnumpy畳み込みの違い
私の最終的な目標は、同じフィルタを使用して各行に1d畳み込みを実行する1次元フィルタを使用した行列上で2D畳み込みを実行することです。この作業(基本的に行間の1d畳み込みのループになります)を行うには、なぜ私のnp.convolve
とtf.conv1d
が私に異なる答えを与えるのかを理解する必要があります。
完全に異なる数字。いくつかの要素は記号が異なっています。その違いは間違いなく重要です –