in classify sign = classes[pred] TypeError: unhashable type: 'numpy.ndarray'
in classify sign = classes[pred] TypeError: unhashable type: 'numpy.ndarray'
Tkinter 回调异常
追溯(最近一次通话):
文件“C:\python\lib\tkinter_init_.py”,第 1921 行,在 call 中
return self.func(*参数)
文件“C:\Users\umutc\PycharmProjects\pythonProject2\main.py”,第 189 行,位于
classify_b = Button(top, text="Görseli Sınıflandır", command=lambda: classify(file_path), padx=10, pady=10)
分类中的文件“C:\Users\umutc\PycharmProjects\pythonProject2\main.py”,第 171 行
符号 = 类[pred]
类型错误:不可散列的类型:'numpy.ndarray'
# Classifier Function / Sınıflandırma Fonksiyonu
def classify(file_path):
global label_packed
image = Image.open(file_path)
image = image.resize((32, 32))
image = numpy.expand_dims(image, axis=0)
pred = model.predict([image])[0]
sign = classes[pred]
print(sign)
根据评论,您似乎在尝试使用数组访问字典中的值。当然那是行不通的。 classes
的键是 int,不是数组。即使您使用 pred
的元素而不是整个对象,元素也是浮点数,而不是整数。您可能想要的是 classes[max(range(len(pred)), key = lambda x: pred[x])]
。这会在pred
中找到最大值,然后找到那个数的索引,然后在classes
中找到对应的值。我不知道模块 model
来自哪个模块,但如果您查找该模块的文档,可能有更惯用的获取方式。
Tkinter 回调异常 追溯(最近一次通话): 文件“C:\python\lib\tkinter_init_.py”,第 1921 行,在 call 中 return self.func(*参数) 文件“C:\Users\umutc\PycharmProjects\pythonProject2\main.py”,第 189 行,位于 classify_b = Button(top, text="Görseli Sınıflandır", command=lambda: classify(file_path), padx=10, pady=10) 分类中的文件“C:\Users\umutc\PycharmProjects\pythonProject2\main.py”,第 171 行 符号 = 类[pred] 类型错误:不可散列的类型:'numpy.ndarray'
# Classifier Function / Sınıflandırma Fonksiyonu
def classify(file_path):
global label_packed
image = Image.open(file_path)
image = image.resize((32, 32))
image = numpy.expand_dims(image, axis=0)
pred = model.predict([image])[0]
sign = classes[pred]
print(sign)
根据评论,您似乎在尝试使用数组访问字典中的值。当然那是行不通的。 classes
的键是 int,不是数组。即使您使用 pred
的元素而不是整个对象,元素也是浮点数,而不是整数。您可能想要的是 classes[max(range(len(pred)), key = lambda x: pred[x])]
。这会在pred
中找到最大值,然后找到那个数的索引,然后在classes
中找到对应的值。我不知道模块 model
来自哪个模块,但如果您查找该模块的文档,可能有更惯用的获取方式。