Да, есть способ, вы можете использовать функцию softmax:
output = torch.softmax(output)
Возвращает тензор из 26 значений, каждое из которых соответствует вероятности того, что изображение соответствует каждому из 26 классов. Следовательно, тензор суммируется в 1 (100%).
Однако этот метод подходит для задач классификации, в отличие от сиамских сетей. Сиамские сети сравнивают входы, а не сортируют входы по классам. Судя по вашему вопросу, вы пытаетесь сравнить 1 изображение с 26 другими. Вы можете l oop по всем 26 образцам сравнить, вычислить и сохранить оценку сходства для каждого и вывести максимальное значение (то есть, если вы не хотите изменять свою модель):
dir_name = '/Aksara/Compare' #this should contain 26 images only
X = []
for i in os.listdir(dir_name):
if ".PNG" in i:
X.append(torch.from_numpy(np.array(Image.open("./Compare/" + i))))
x1 = np.array(Image.open("test.PNG"))
#do your transformations on x1
x1 = torch.from_numpy(x1)
closest = 0.0 #highest similarity
closest_letter_idx = 0 #index of closest letter 0=A, 1=B, ...
cnt = 0
for i in X:
output = model(x1,i) #assuming x1 is your input image
output = torch.sigmoid(output)
if output > closest:
closest_letter_idx = cnt
closest = output
cnt += 1
print(closest_letter_idx)