tensorflow的None下标、equal和consum函数总结

None下标

None下标类似a[:,None],会默认在原有纬度基础上增加一个纬度

考虑初始变量:

a = tf.Variable([[3.0,2.0,4.0],[1.0,6.0,7.0]])

2 \times 3的矩阵

变化1:

 a1 = a[:,:,None] # 2 * 3 * 1

2 \times 3 \times 1矩阵,会在最后(第2纬后)加上一纬,其值为

[[[3.]
  [2.]
  [4.]]

 [[1.]
  [6.]
  [7.]]]

变化2:

a2 = a[:,None] # 2 * 1 * 3

2 \times 1 \times 3矩阵,会在第1纬后加上1维,其值为

[[[3. 2. 4.]]

 [[1. 6. 7.]]]

变化3:

a3 = a[None] # 1 * 2 * 3

1 \times 2 \times 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.]]

去最后两维数组的对角阵,显然这列统计了a中每个元素的重复出现次数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值