Я пытаюсь обработать мои наземные истинные изображения для создания одного тензора с горячим кодированием:
def one_hot(img, nclasses):
result = np.zeros((img.shape[0], img.shape[1], nclasses))
img_unique = img.reshape(512*512, img.shape[2])
unique = np.unique(img_unique, axis=0)
for i in range(img.shape[0]):
for j in range(img.shape[1]):
for k, unique_val in enumerate(unique):
if (np.array_equal(img[i,j], unique_val)):
result[i,j,k] = 1
break
return result
Это создает тензор WxHxN из изображения WxHx3. Мне такой подход не нравится из-за его производительности. Не могли бы вы посоветовать более эффективный способ?
Я пробовал использовать tf.one_hot, но он преобразует изображение в тензор WxHx3xN.