import tensorflow as tf import numpy as np tensor = [[1, 2], [3, 4], [5, 6]] mask=np.array([[True,True],[False,True],[False,False]]) z=tf.boolean_mask(tensor, mask) with tf.Session() as sess: print(z.shape) print(sess.run(z))
(?,)
[1 2 4]
Mask的维度可以小于等于tensor的维度。但必须和tensor的维度对齐。比如tensor是3维的,分别是(3,4,2)。则mask的维度可以是3~1维,长度必须是(3,4,2),(3,4)和(3,)。
当mask和tensor的维度相同时,输出1维矩阵。
当mask比tensor少一维时,输出2维矩阵。
当mask比tensor少两维时,输出3维矩阵。
import numpy as np import tensorflow as tf x = [[0.5, 4, 9], [1, 2, 3]] xx = tf.cast(x, tf.float32) mean_all = tf.reduce_mean(xx, keep_dims=False) mean_0 = tf.reduce_mean(xx, axis=0, keep_dims=False) mean_1 = tf.reduce_mean(xx, axis=1, keep_dims=False) with tf.Session() as sess: m_a, m_0, m_1 = sess.run([mean_all, mean_0, mean_1]) print(m_a) print(m_0) print(m_1)
3.25
[ 0.75 3. 6. ]
[ 4.5 2. ]
按照相应的维度求均值
import numpy as np import tensorflow as tf x = [[0.5, 4, 9], [1, 2, 3]] xx = tf.cast(x, tf.float32) mean_all = tf.reduce_sum(xx, keep_dims=False) mean_0 = tf.reduce_sum(xx, axis=0, keep_dims=False) mean_1 = tf.reduce_sum(xx, axis=1, keep_dims=False) with tf.Session() as sess: m_a, m_0, m_1 = sess.run([mean_all, mean_0, mean_1]) print(m_a) print(m_0) print(m_1)
19.5
[ 1.5 6. 12. ]
[ 13.5 6. ]
按照相应的维度求和
https://www.cnblogs.com/wuxiangli/p/10276893.html
https://blog.csdn.net/addresser/article/details/81281833