Câu hỏi của tôi là ở hai phần kết nối:TensorFlow: Max của một tensor dọc theo một trục
Làm thế nào để tính toán tối đa dọc theo một trục nhất định của một tensor? Ví dụ, nếu tôi có
x = tf.constant([[1,220,55],[4,3,-1]])
Tôi muốn một cái gì đó giống như
x_max = tf.max(x, axis=1) print sess.run(x_max) output: [220,4]
Tôi biết có một
tf.argmax
vàtf.maximum
, nhưng không cung cấp cho các giá trị lớn nhất dọc theo một trục của một tensor duy nhất. Hiện tại, tôi có một giải pháp thay thế:x_max = tf.slice(x, begin=[0,0], size=[-1,1]) for a in range(1,2): x_max = tf.maximum(x_max , tf.slice(x, begin=[0,a], size=[-1,1]))
Nhưng có vẻ ít hơn tối ưu. Có cách nào tốt hơn để làm điều này?
Với chỉ số của một
argmax
của một tensor, làm thế nào để tôi lập chỉ mục vào một tensor khác bằng cách sử dụng các chỉ số đó? Sử dụng ví dụ củax
trên, làm thế nào để tôi làm điều gì đó như sau:ind_max = tf.argmax(x, dimension=1) #output is [1,0] y = tf.constant([[1,2,3], [6,5,4]) y_ = y[:, ind_max] #y_ should be [2,6]
Tôi biết cắt, giống như dòng cuối cùng, không tồn tại trong TensorFlow chưa (#206).
Câu hỏi của tôi là: cách giải quyết tốt nhất cho trường hợp cụ thể của tôi (có thể sử dụng các phương pháp khác như thu thập, chọn, v.v.) là gì?
Thông tin bổ sung: Tôi biết
x
vày
sẽ trở thành chỉ hai chiều!
Để hoàn thành, trong ví dụ thứ hai, hãy thêm vào dòng thứ 3: 'amax = tf.argmax (y, 1)' và xóa dòng đầu tiên. –
'reduce_indices' không được chấp nhận. sử dụng 'trục' thay thế –