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

VSCode加载Keras模型属性报错但代码运行正常问题求助

Keras模型加载后VSCode Pyright提示"Cannot access attribute 'summary' for class 'FunctionType'"的问题解决

问题原因

  1. 私有模块导致类型检查失效:你使用的keras._tf_keras是Keras/TensorFlow的内部私有模块(命名以下划线开头),这类模块的类型定义并未对外公开。Pyright作为静态类型检查工具,无法解析该模块中load_model函数的返回类型,错误地将返回的模型对象识别为FunctionType,因此会报错无法访问summary等模型方法。
  2. 导入路径混乱:你被迫使用私有路径导入,大概率是因为环境中Keras与TensorFlow的版本不兼容,或者安装方式(比如同时安装了独立Keras和TensorFlow集成的Keras)导致常规导入路径失效,进而触发了Import 'keras._' could not be resolved错误。

解决方法

方法1:修复正确的导入路径(优先推荐)

放弃使用私有模块导入,改用官方支持的导入方式:

  • 如果你的环境是TensorFlow集成的Keras(绝大多数场景),使用:
from tensorflow.keras.models import load_model
  • 如果是独立安装的Keras(较少见),使用:
from keras.models import load_model

如果之前用常规导入出现错误,执行以下步骤修复环境:

  • 卸载现有Keras和TensorFlow:
pip uninstall -y keras tensorflow
  • 重新安装匹配版本的TensorFlow(会自动安装对应版本的tf.keras):
pip install tensorflow

方法2:添加类型注解绕过Pyright检查

如果暂时无法修改导入路径,通过类型注解明确模型的类型,让Pyright正确识别:

from keras._tf_keras.keras.models import load_model
from keras._tf_keras.keras.models import Model  # 导入模型基类

model: Model = load_model('data/model.keras')
print(model.summary())

方法3:调整Pyright配置忽略该错误

在项目根目录创建pyrightconfig.json文件,添加以下内容,让Pyright忽略该模块的类型检查:

{
  "ignore": [
    "**/keras/_tf_keras/**"
  ],
  "typeCheckingMode": "basic"  # 可选,降低类型检查严格度
}

内容的提问来源于stack exchange,提问作者yees_7

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:42:43