2015-12-10 7 views
25

में एक सदिश गुणा करने के लिए (तत्व वार) एक 2D टेन्सर (मैट्रिक्स) सबसे कारगर तरीका होगा क्या: एक ऊर्ध्वाधर वेक्टर द्वाराकुशल तत्व के लिहाज से गुणा और TensorFlow

x11 x12 .. x1N 
... 
xM1 xM2 .. xMN 

:

w1 
... 
wN 

एक नया मैट्रिक्स प्राप्त करने के लिए:

x11*w1 x12*w2 ... x1N*wN 
... 
xM1*w1 xM2*w2 ... xMN*wN 

कुछ संदर्भ देने के लिए, हम M Dat है एक बैच में एक नमूने जिसे समानांतर में संसाधित किया जा सकता है, और प्रत्येक N -लेमेंट नमूना को एक चर में संग्रहीत वजन w द्वारा गुणा किया जाना चाहिए ताकि अंततः प्रत्येक पंक्ति i के लिए सबसे बड़ा Xij*wj चुनें।

उत्तर

30

सरल कोड यह करने के लिए की tf.multiply()* प्रसारण व्यवहार है, जो numpy's broadcasting behavior पर आधारित है पर निर्भर करता है:

x = tf.constant(5.0, shape=[5, 6]) 
w = tf.constant([0.0, 1.0, 2.0, 3.0, 4.0, 5.0]) 
xw = tf.multiply(x, w) 
max_in_rows = tf.reduce_max(xw, 1) 

sess = tf.Session() 
print sess.run(xw) 
# ==> [[0.0, 5.0, 10.0, 15.0, 20.0, 25.0], 
#  [0.0, 5.0, 10.0, 15.0, 20.0, 25.0], 
#  [0.0, 5.0, 10.0, 15.0, 20.0, 25.0], 
#  [0.0, 5.0, 10.0, 15.0, 20.0, 25.0], 
#  [0.0, 5.0, 10.0, 15.0, 20.0, 25.0]] 

print sess.run(max_in_rows) 
# ==> [25.0, 25.0, 25.0, 25.0, 25.0] 

* TensorFlow के पुराने संस्करणों में, tf.multiply()tf.mul() बुलाया गया था। आप एक ही ऑपरेशन करने के लिए * ऑपरेटर (यानी xw = x * w) का भी उपयोग कर सकते हैं।

+5

दस्तावेज़ीकरण का लिंक मृत है। यह वास्तविक है: [tf.multiply] (https://www.tensorflow.org/api_docs/python/tf/multiply) – Pantoofle

+0

धन्यवाद ... लिंक अभी तय किया जाना चाहिए! – mrry

संबंधित मुद्दे