检查ResNet50实例时触发TypeError,求问题原因及解决方法
问题分析与解决
你的两种写法都存在错误,导致触发TypeError,具体原因和修正方案如下:
错误原因拆解
- 写法2的致命错误:
keras.applications.ResNet50()是调用类创建了一个模型实例,但isinstance()的第二个参数必须是类型(如类本身)、类型元组或联合类型,不能传入实例对象,这直接违反了函数的参数要求。 - 写法1的潜在问题:如果
isinstance(model, ResNet50)也报错,说明你代码中的ResNet50变量并没有指向keras.applications.ResNet50这个类本身——可能是导入语句错误,或是后续代码把ResNet50变量覆盖成了实例对象。
正确写法
确保isinstance()的第二个参数传入类本身即可,有两种可靠方式:
- 先导入类再检查:
from keras.applications import ResNet50 model = ResNet50(weights='imagenet', include_top=False, pooling="avg") # 正确检查 isinstance(model, ResNet50)
- 使用类的完整路径直接检查:
model = ResNet50(weights='imagenet', include_top=False, pooling="avg") # 正确检查(注意不要加括号) isinstance(model, keras.applications.ResNet50)
内容的提问来源于stack exchange,提问作者tail
相关产品推荐
相关产品推荐

