我正在研究一个深层的图像相似性模型,我希望获得一些帮助。
我不断收到此错误,不知道该如何处理或如何解决。
Input arrays should have the same number of samples as target arrays. Found 100 input samples and 3 target samples.
我将图像分为三个文件,然后读取它们。然后,我具有三个数组(锚定,正数和负数)。我拥有的标签将全部相同y = [1,1,0],即[a,p,n] 这是正确的方法吗?
我正在关注此博客/代码https://medium.com/@akarshzingade/image-similarity-using-deep-ranking-c1bd83855978
模型和损失函数相同,唯一的区别是加载的数据,加载方式以及模型的训练方式。
# Alist of images for anchor similar and negative
# Read in all the image paths
anchor = np.load("list/anchor_list.npy")
pos = np.load("list/positvie_list.npy")
neg = np.load("list/negative_list.npy")
def load_img(path):
img = image.load_img(path, target_size=(224, 224))
img = image.img_to_array(img)
img = np.array(img)
return img
a = []
p = []
n = []
# Read in sampple of the images
for i in range(0, 100):
a.append(load_img(os.path.join(data_dir, anchor[i])))
p.append(load_img(os.path.join(data_dir, pos[i])))
n.append(load_img(os.path.join(data_dir, neg[i])))
a = np.array(a)
p = np.array(p)
n = np.array(n)
y = [1, 1, 0]
deep_rank_model.fit([a, p, n], y,
batch_size=batch_size,
epochs=10,
verbose = 1)
在此方面的任何帮助将不胜感激。
答案 0 :(得分:1)
如错误所述,输入数组[a,p,n]的大小为(100x3),但您的输出数组y的大小为(1x3)。因此,该模型无法将输入数组与其对应的输出配对。
根据您的解释,我知道a-> 1,p-> 1和n-> 0,并且每个类别中有100个样本。因此,您只需要将输出数组乘以100。请尝试以下操作:
deep_rank_model.fit([a, p, n], [y]*100,
batch_size=batch_size,
epochs=10,
verbose = 1)
希望这行得通!