как получить значение 0 или 1 в сиамской нейронной сети? - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь использовать сиамскую нейронную сеть. Здесь я хочу сравнить 2 типа изображений и получить результаты оценки. Это код тестовой модели для получения оценки

. В этом случае я использую pytorch

model = Siamese()

# Load state_dict
model.load_state_dict(torch.load('/Users/tania/Desktop/TA/model/model-batch-1001.pth'))

# Create the preprocessing transformation
from torchvision import transforms
transforms = transforms.ToTensor()

# load image(s)
from PIL import Image
x1 = Image.open('table.PNG')
x2 = Image.open('table.PNG')
# Transform

x1 = transforms(x1)
x2 = transforms(x2)

x1 = torch.stack([x1])
x2 = torch.stack([x2])

model.eval()

# Get prediction
output = model(x1,x2)
print (output)

. Таким образом, я получил оценку, как это,

enter image description here

оценка -14.1640

в основном в сиамском, если изображение то же самое, то он выдает значение 1, а если отличается, он выдает значение 0

как мне получить значение 0 или 1, чтобы я знал, является ли изображение тем же или нет?

Пожалуйста, помогите мне, я новичок ie в нейронной сети

1 Ответ

1 голос
/ 14 марта 2020

Чтобы получить выходные данные от 0 до 1, вам необходимо преобразовать свои значения с помощью функции активации, чтобы отобразить их в вероятности. Это можно сделать с помощью функции Sigmoid, определенной как: enter image description here

Возвращает вероятность с диапазоном (0,1) (исключая), где значения 0

output = model(x1,x2)
output = torch.sigmoid(output)

Надеюсь, это поможет!

...