Мой автоэнкодер работает просто отлично, когда дело доходит до реконструкции изображений-
Но когда я пытаюсь выполнить поиск изображений с использованием того же автоэнкодера, результаты не соответствуют запросу,
Код для поиска изображения-
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. Какие-либо предложения о том, как мне решить эту проблему?