2015-12-10 25 views
25

Điều gì sẽ là cách hiệu quả nhất để nhân (yếu tố khôn ngoan) một tensor 2D (ma trận):nhân hiệu quả yếu tố khôn ngoan của một ma trận và vector trong TensorFlow

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

bởi một vector dọc:

w1 
... 
wN 

để có được một ma trận mới:

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

để cung cấp cho một số bối cảnh, chúng tôi có M dat một mẫu trong một mẻ có thể được xử lý song song và mỗi mẫu N phải được nhân với trọng số w được lưu trữ trong biến để cuối cùng chọn Xij*wj lớn nhất cho mỗi hàng i.

Trả lời

30

Mã đơn giản nhất để làm điều này dựa vào các hành vi phát sóng của tf.multiply()*, mà là dựa trên 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] 

* Trong các phiên bản cũ của TensorFlow, tf.multiply() được gọi tf.mul(). Bạn cũng có thể sử dụng toán tử * (ví dụ: xw = x * w) để thực hiện cùng một thao tác.

+5

Liên kết cho Tài liệu đã mất. Đây là thực tế: [tf.multiply] (https://www.tensorflow.org/api_docs/python/tf/multiply) – Pantoofle

+0

Cảm ơn ... liên kết nên được sửa ngay bây giờ! – mrry

Các vấn đề liên quan