Керас-образное подобие модели проблемы с метками - PullRequest
0 голосов
/ 28 июня 2019

Я работаю над моделью глубокого сходства изображений, и я хотел бы получить некоторую помощь в этом.

Я продолжаю получать эту ошибку и не знаю, что именно с ней делать или как ее исправить.

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)

любая помощь в этом будет оценена.

1 Ответ

1 голос
/ 28 июня 2019

Как указано в ошибке, входной массив [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)

Надеюсь, это работает!

...