运行Colab手势预测代码时报NameError: name 'model'未定义问题求助
错误原因
报错
NameError: name 'model' is not defined的核心问题是当前预测代码执行前,你没有在Colab运行环境中创建、加载名为model的已训练Keras模型对象,直接调用model.predict()方法触发了未定义变量错误。
解决方案
按下面的步骤调整即可:
- 第一步:补充模型加载/训练逻辑
如果你已经有训练好的手势识别模型文件(通常为.h5/.keras格式),在你现有代码的最上方添加模型加载代码:
如果你还没训练模型,需要先完成手势识别模型的训练流程,训练过程中会生成from keras.models import load_model # 注意替换成你自己的模型文件实际路径,如果模型是上传到Colab的,填对应的文件名即可 model = load_model("gesture_model.h5")model对象,再执行预测代码。 - 第二步:确保代码执行顺序正确
如果你是在同一个Colab笔记本中分开编写模型训练、预测代码,需要先运行模型训练/加载的代码块,运行成功生成model变量后,再执行你当前的预测代码块,不要跳过前序步骤直接跑预测。 - 第三步:校验模型输入匹配
你当前代码中图片预处理的尺寸为(150,150),需要和训练模型时设置的输入尺寸保持一致,否则后续预测会触发形状不匹配报错。
调整后完整可运行参考代码
import numpy as np from google.colab import files from keras.preprocessing import image from matplotlib import pyplot as plt from keras.models import load_model # 加载已训练好的模型,替换为你自己的模型路径 model = load_model("gesture_model.h5") uploaded = files.upload() for fn in uploaded.keys(): path = fn img = image.load_img(path, target_size = (150, 150)) imgplot = plt.imshow(img) x = image.img_to_array(img) x = np.expand_dims(x, axis = 0) images = np.vstack([x]) classes = model.predict(images, batch_size=10) print(fn) print(classes) if classes[0][0]==1: print('Tangan ini menunjukkan BATU') elif classes[0][1]==1: print('Tangan ini menunjukkan GUNTING') elif classes[0][2]==1: print('Tangan ini menunjukkan KERTAS') else: print('TIDAK DIKETAHUI')
内容的提问来源于stack exchange,提问作者McIllyaz
相关产品推荐
相关产品推荐

