前言
之前看一些代码时遇到这样的一段代码(如下所示)使用了一种比较奇怪的切片 […, 1:2],此文介绍了这种方式的意思和使用
...
box_xy = K.sigmoid(feats[..., :2])
box_wh = K.exp(feats[..., 2:4])
box_confidence = K.sigmoid(feats[..., 4:5])
box_class_probs = K.softmax(feats[..., 5:])
...
[…]用法
简单来说,这是一种切片的使用方式
import numpy as np
a = np.arange(0, 6)
a = np.reshape(a, [2, 3])
print(a)
print(a[..., 1])
print(a[..., 0:1])
# 输出
'''
[[0 1 2]
[3 4 5]]
[1 4]
[[0]
[3]]
'''
如上面所示,a的shape是(2, 3),a[…,1]就是输出最后一个维度的序号1的数值,即是[1, 4],a[…, 0:1]保留最后一个维度0:1的数值。如果还不清楚可以看下这个例子
import numpy as np
b = np.arange(0, 24)
b = np.reshape(b, [2, 3, 4])
print(b)
print(b[..., 1])
print(b[..., 1:2])
# 输出
'''
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
[[ 1 5 9]
[13 17 21]]
[[[ 1]
[ 5]
[ 9]]
[[13]
[17]
[21]]]
'''