Почему мой поиск изображений на основе Autoencoder не дает правильного результата? - PullRequest
0 голосов
/ 10 октября 2018

Мой автоэнкодер работает просто отлично, когда дело доходит до реконструкции изображений- enter image description here

Но когда я пытаюсь выполнить поиск изображений с использованием того же автоэнкодера, результаты не соответствуют запросу,enter image description here

Код для поиска изображения-

from sklearn.neighbors.unsupervised import NearestNeighbors
clf=NearestNeighbors(metric='euclidean')
img=encoded_imgs.reshape(encoded_imgs.shape[0], 49)

clf.fit(img)

def get_similar(image, n_neighbors=5):
  image=image.reshape(1,28,28,1)
  code=encoder.predict(image)
  code=code.reshape(1,49)

  distances, idx=clf.kneighbors(code,n_neighbors=n_neighbors)



  return distances, X_train[idx]

def show_similar(image):
  distances, neighbors=get_similar(image, n_neighbors=5)
  neighbors=neighbors.reshape(5,28,28)

  n=10
  plt.figure(figsize=(20,4))
  for i in range(5):

    ax = plt.subplot(2, n, i + 1 + n)
    plt.imshow(neighbors[i])
    plt.gray()
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)
  plt.show()




show_similar(X_test[247])#number -4
show_similar(X_test[56])#number -4
show_similar(X_test[63])#number -3

Другая полезная информация-

Выход кодера (Нет, 7, 7, 1)

Вывод декодера: (Нет, 28, 28, 1)

В первых двух случаях он извлекает каждое число, кроме 4. Какие-либо предложения о том, как мне решить эту проблему?

...