假设我有一个数组:
[[0 2 1]
[1 0 1]
[2 1 1]]
我希望将其转换为以下形式的张量
[[[1 0 0]
[0 1 0]
[0 0 0]]
[[0 0 1]
[1 0 1]
[0 1 1]]
[[0 1 0]
[0 0 0]
[1 0 0]]]
每个深度层(索引i
)都是一个二进制掩码,显示i
在输入中出现的位置。
我已经编写了这个功能的代码,虽然能够正常工作,但速度太慢而无法使用。我可以用另一个向量化操作替换此函数中的循环吗?
def im2segmap(im, depth):
tensor = np.zeros((im.shape[0], im.shape[1], num_classes))
for c in range(depth):
rows, cols = np.argwhere(im==c).T
tensor[c, rows, cols] = 1
return tensor
a[...,None]==np.arange(num_classes)
。 - Divakar