2016-02-28 83 views
6

我有兩個的嵌入張AB,它看起來像reduce_sum某些尺寸

[ 
    [1,1,1], 
    [1,1,1] 
] 

​​

我想要做的就是計算L2距離d(A,B)逐元素。

首先,我做了一個tf.square(tf.sub(lhs, rhs))得到

[ 
    [1,1,1], 
    [0,0,0] 
] 

,然後我想要做逐元素減少返回

[ 
    3, 
    0 
] 

tf.reduce_sum不允許我按行減少。任何投入將不勝感激。謝謝。

回答

9

添加reduction_indices說法:用

tf.reduce_sum(tf.square(tf.sub(lhs, rhs)), 1) 

1的值,例如,這應該產生你正在尋找的結果。 Here is the documentation on reduce_sum()

3

根據TensorFlow documentationreduce_sum函數,它有四個參數。

tf.reduce_sum(input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=None). 

但是reduction_indices已被棄用。最好使用軸而不是。如果軸未設置,則縮小其全部尺寸。

作爲一個例子,這是從documentation採取

# 'x' is [[1, 1, 1] 
#   [1, 1, 1]] 
tf.reduce_sum(x) ==> 6 
tf.reduce_sum(x, 0) ==> [2, 2, 2] 
tf.reduce_sum(x, 1) ==> [3, 3] 
tf.reduce_sum(x, 1, keep_dims=True) ==> [[3], [3]] 
tf.reduce_sum(x, [0, 1]) ==> 6 

上述要求可以以這種方式被寫入,

import numpy as np 
import tensorflow as tf 

a = np.array([[1,7,1],[1,1,1]]) 
b = np.array([[0,0,0],[1,1,1]]) 

xtr = tf.placeholder("float", [None, 3]) 
xte = tf.placeholder("float", [None, 3]) 

pred = tf.reduce_sum(tf.square(tf.subtract(xtr, xte)),1) 

# Initializing the variables 
init = tf.global_variables_initializer() 

# Launch the graph 
with tf.Session() as sess: 
    sess.run(init) 
    nn_index = sess.run(pred, feed_dict={xtr: a, xte: b}) 
    print nn_index