我尝试使用这个示例代码进行图像分类
def show_classify_button(file_path): classify_btn = Button(top, text="Classify Image", command=lambda: classify(file_path), padx=10, pady=5) classify_btn.configure(background="#364156", foreground="white", font=('arial',10,'bold')) classify_btn.place(relx=0.79,rely=0.46)def classify(file_path): image = Image.open(file_path) image = image.resize((32,32)) image = numpy.expand_dims(image, axis=0) image = numpy.array(image) pred = model.predict([image])[0] sign = classes[pred] print(sign) label.configure(foreground='#011638')
终端弹出这个
Traceback (most recent call last): line 39, in <lambda> classify_btn = Button(top, text="Classify Image", command=lambda: classify(file_path), padx=10, pady=5) line 49, in classify sign = classes[pred]TypeError: unhashable type: 'numpy.ndarray'
我尝试检查pred的输出数据
[30990.06 46435.57 17636.973 16334.658 15860.342 16765.371 26879.748 14579.97 41989.523 34359.215]
我不确定为什么会这样,因为数据是一组数组
我是新手,我使用的是Python3.9,有人能帮我吗
回答:
你在第49行尝试访问classes变量
sign = classes[pred]
classes的类型是numpy.ndarray
。所以你试图通过索引pred
访问数组,但因为pred
不是一个数字,所以引发了unhashable type: 'numpy.ndarray'
错误。
你把classes当成字典来使用,通过键而不是索引来访问它的值。