03 tensorflow 索引和切片
程序员文章站
2024-03-11 17:32:55
...
索引和切片比较简单,但却十分有用。
弄清楚:负索引,步长,反序,"…" 。
索引:
a = tf.random.normal([4, 28, 28, 3])
print(a[1].shape)
print(a[1, 2].shape)
print(a[1, 2, 3].shape)
print(a[1, 2, 3, 2].shape)
输出:
(28, 28, 3)
(28, 3)
(3,)
()
列表:
单维
a = tf.range(10)
print(a)
print(a[0:5]) # 单维度
print(a[3:-2]) # 负索引
print(a[0:9:2]) # 步长
print(a[::-1]) # 负步长,列表反序
输出:
tf.Tensor([0 1 2 3 4 5 6 7 8 9], shape=(10,), dtype=int32)
tf.Tensor([0 1 2 3 4], shape=(5,), dtype=int32)
tf.Tensor([3 4 5 6 7], shape=(5,), dtype=int32)
tf.Tensor([0 2 4 6 8], shape=(5,), dtype=int32)
tf.Tensor([9 8 7 6 5 4 3 2 1 0], shape=(10,), dtype=int32)
多维
a = tf.random.normal([4, 28, 28, 3])
print(a[0:3:2, 1:2, 1:2, :]) # 多维
print(a[0, :, :, :].shape)
print(a[0, ...].shape) # 省略号
输出:
tf.Tensor(
[[[[ 0.17316733 1.496396 0.6729369 ]]]
[[[-1.2202525 -0.3381324 2.280646 ]]]], shape=(2, 1, 1, 3), dtype=float32)
(28, 28, 3)
(28, 28, 3)
Process finished with exit code 0