Pytorch 如何在暹罗神经网络测试中比较一张图片和所有数据?

Pytorch 如何在暹罗神经网络测试中比较一张图片和所有数据?,pytorch,prediction,siamese-network,Pytorch,Prediction,Siamese Network,我已经用Pytork建立了暹罗神经网络。但我只是通过插入两张图片来测试它,并计算相似性分数,其中0表示图片不同,1表示图片相同 import numpy as np import os, sys from PIL import Image dir_name = "/Users/tania/Desktop/Aksara/Compare" #this should contain 26 images only X = [] for i in os.listdir(dir_name): if

我已经用Pytork建立了暹罗神经网络。但我只是通过插入两张图片来测试它,并计算相似性分数,其中0表示图片不同,1表示图片相同

import numpy as np
import os, sys
from PIL import Image
dir_name = "/Users/tania/Desktop/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("/Users/tania/Desktop/Aksara/TEST/Ba/B/B.PNG"))
x1 = transforms(x1)
x1 = torch.from_numpy(x1)

#x1 = torch.stack([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

两张图片都不同,因此输出

  File "test.py", line 83, in <module>
    X.append(torch.from_numpy(Image.open("./Compare/" + i)))
TypeError: expected np.ndarray (got PngImageFile)
文件“test.py”,第83行,在
X.append(torch.from_numpy(Image.open(“./Compare/”+i)))
TypeError:应为np.ndarray(获取PngImageFile)
这是目录

是的,有一种方法,您可以使用softmax功能:

output = torch.softmax(output)
这将返回26个值的张量,每个值对应于图像对应于26个类中每个类的概率。因此,张量之和为1(100%)

然而,与暹罗网络相比,该方法适用于分类任务。暹罗网络在输入之间进行比较,而不是将输入分类。从你的问题来看,你似乎试图将一张图片与另外26张图片进行比较。您可以循环所有26个样本进行比较,计算并保存每个样本的相似性分数,并输出最大值(即如果您不想修改模型):


是的,有一种方法,您可以使用softmax功能:

output = torch.softmax(output)
这将返回26个值的张量,每个值对应于图像对应于26个类中每个类的概率。因此,张量之和为1(100%)

然而,与暹罗网络相比,该方法适用于分类任务。暹罗网络在输入之间进行比较,而不是将输入分类。从你的问题来看,你似乎试图将一张图片与另外26张图片进行比较。您可以循环所有26个样本进行比较,计算并保存每个样本的相似性分数,并输出最大值(即如果您不想修改模型):


评论不用于扩展讨论;此对话已结束。评论不用于扩展讨论;这段对话已经结束。