2017-11-07 8 views
3

、私はtensorflowのWebサイトから、次のコードを拾いました。私の理解によると、axis = 0は行、axis = 1は列です。reduce_sum()はテンソルフローでどのように機能しますか?私はtensorflowを勉強

はどのように彼らは、コメントに記載された出力を得ていますか?私は##に対する私の考えに従って出力を述べました。

import tensorflow as tf 

x = tf.constant([[1, 1, 1], [1, 1, 1]]) 
tf.reduce_sum(x, 0) # [2, 2, 2] ## [3, 3] 
tf.reduce_sum(x, 1) # [3, 3] ##[2, 2, 2] 
tf.reduce_sum(x, [0, 1]) # 6 ## Didn't understood at all. 

答えて

5

入力が2次元テンソルである:

1 1 1 
1 1 1 

tensorflow 0軸が1つの軸は列で、行です。 0軸に沿って和は、各要素ごとのカラム合計である、長さ3の1-Dテンソルを生成します。結果は[2, 2, 2]です。行の場合も同様です。両方の軸に沿って

和が、この場合には、6あるテンソル、のすべての値の合計です。

比較:

a = np.array([[1, 1, 1], [1, 1, 1]]) 
np.sum(a, axis=0)  # [2 2 2] 
np.sum(a, axis=1)  # [3 3] 
np.sum(a, axis=(0, 1)) # 6 

あなたが見ることができるように、出力は同じです。

+0

numpyと反対ですか? –

+0

@BhaskarDhariyalそれは同じです。私は私の答えを更新しました。 – Maxim

2

軸が削除される次元を示しているように思えます。

結果= [[1,1,1] + [1:あなたはこの次元(2エントリー)を通過するのであれば0軸最初のケースのために、そう、彼らは1にすべての崩壊はこのようにそれは、次のようになりますでしょう、1,1] = [2,2,2]

だからので、次に、第2ケースのために、あなたは1軸(または列)を崩壊する寸法0

を除去:

を結果= [[1,1] + [1,1] + [1,1] = [2,2]

そして、あなたはブラジャーに示されている順序で崩壊維持された最後のケースの場合ケケッツ。換言すれば、第1あなたは、RAWフォーマットで写真を解消して、列:

結果1 = [2,2,2]

result_final = 2 + 2 +2 =このことができます6

願っています!

3

x(2, 3)(2行3列)の形状を有している:tf.reduce_sum(x, 0)テンソルを行うことにより

1 1 1 
1 1 1 

を最初の次元(行)に沿って減少し、その結果を[1, 1, 1] + [1, 1, 1] = [2, 2, 2]です。

tf.reduce_sum(x, 1)を実行することによって、テンソルは第2次元(列)に沿って縮小されるので、結果は[1, 1] + [1, 1] + [1, 1] = [3, 3]になります。 tf.reduce_sum(x, [0, 1])テンソルを行うことにより

は、両方の次元(行と列)に沿って減少し、その結果は1 + 1 + 1 + 1 + 1 + 1 = 6または、等価的に、[1, 1, 1] + [1, 1, 1] = [2, 2, 2]、次いで2 + 2 + 2 = 6(もたらし配列を低減次いで、行に沿って減少させる)です。

関連する問題