欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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