You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 16:06:09