None下标
None下标类似a[:,None],会默认在原有纬度基础上增加一个纬度
考虑初始变量:
a = tf.Variable([[3.0,2.0,4.0],[1.0,6.0,7.0]])
为的矩阵
变化1:
a1 = a[:,:,None] # 2 * 3 * 1
为矩阵,会在最后(第2纬后)加上一纬,其值为
[[[3.]
[2.]
[4.]]
[[1.]
[6.]
[7.]]]
变化2:
a2 = a[:,None] # 2 * 1 * 3
为矩阵,会在第1纬后加上1维,其值为
[[[3. 2. 4.]]
[[1. 6. 7.]]]
变化3:
a3 = a[None] # 1 * 2 * 3
为矩阵,会在第1维前面加上1纬,其值为
[[[3. 2. 4.]
[1. 6. 7.]]]
tf.equal操作
b = tf.equal(a1,a2) # 2 * 3 * 3
结果如下:
[[[ True False False]
[False True False]
[False False True]]
[[ True False False]
[False True False]
[False False True]]]
tf.cumsum操作
c = tf.cumsum(tf.cast(b, tf.float32), axis=-1) # 2 * 3 *3
结果如下:
[[[1. 1. 1.]
[0. 1. 1.]
[0. 0. 1.]]
[[1. 1. 1.]
[0. 1. 1.]
[0. 0. 1.]]]
tf.
d = (tf.linalg.diag_part(c) - 1.0) # 2 * 3
结果如下:
[[0. 0. 0.]
[0. 0. 0.]]
去最后两维数组的对角阵,显然这列统计了中每个元素的重复出现次数。
完