2016-11-13 8 views
0

最初の2つの結果の間の次元またはランクの違いは何ですか?なぜそれら2つ(行列/ベクトル)を追加できますか?これは素朴な質問のように聞こえるかもしれませんが、私はテンソル/行列の間の加算がどのように働くかを理解しようとしています。ありがとうございました。 (私も、私は最後の二つの結果を追加することができます理由を知りたいと思った彼らは二つの異なるサイズの行列ではありません。?)これらの2つのテンソルの違いは何ですか?なぜですか?

import tensorflow as tf 
import numpy as np 
W = tf.Variable(tf.zeros([784, 10])) 
x = tf.Variable(tf.zeros([2,784])) 
z = tf.matmul(x,W) 

Y = tf.Variable([4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 14.0]) 

x = tf.Variable(tf.zeros([2,10])) 

model = tf.initialize_all_variables() 

with tf.Session() as session: 
    session.run(model) 
    print(session.run(z)) 
    print(session.run(Y)) 
    print(session.run(x)) 

結果:

[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]] 

[ 4. 5. 6. 7. 8. 9. 10. 11. 12. 14.] 

[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] 
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]] 

答えて

0

私は、任意の追加が表示されません、乗算のみ。

Y変数で行っていることは、指定した浮動値を含むテンソル自体を出力していることです。

zでは、これらの2つのテンソルを掛け合わせています。行列の乗算結果の次元の一般的な公式は、MxN * OxP = MxP(MとOは行、NとPは列)です。だから、xの場合、784x10のテンソルを乗じた2x784のテンソルがあります。これは(一般的な次元の式によって)次元2x10のテンソルを与えます。

Yzという事実の後に追加することができるということを意味するのであれば、テンソルフローのようなライブラリは、通常、次元が一致する限り、テンソルから別のテンソルへのブロードキャストを適用するからです。あなたがY + zをしたのであれば、あなたはので、Zの行数に適用されている放送の

[[ 4. 5. 6. 7. 8. 9. 10. 11. 12. 14.] 
[ 4. 5. 6. 7. 8. 9. 10. 11. 12. 14.]] 

になるだろう。

編集:私はちょうど)あなたは算術xの面で違いを求めていることが考えられているため、放送の、z - Y

[[ -4. -5. -6. -7. -8. -9. -10. -11. -12. -14.] 
[ -4. -5. -6. -7. -8. -9. -10. -11. -12. -14.]] 
+0

だろう、私は1つのテンソルから別の放送についてお知らせいただきありがとうございます。それが私が理解しようとしていたものです。私は最初の2つの結果の違いによって私が何を意味していたのか、少し正確に質問をしました。 –