但是当我尝试使用相同的自动编码器进行图像搜索时,结果与查询不匹配。
图片搜索代码-
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
其他有用信息-
编码器的输出为(None,7,7,1)
解码器的输出为(None,28,28,1)
在前两种情况下,它正在检索除4外的所有数字。关于如何解决此问题的任何建议?