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

使用InceptionV3迁移学习遇Tensor不可哈希错误,如何解决?

解决InceptionV3迁移学习中Model构造的Tensor哈希错误

这个错误很常见,主要是因为你在创建Model对象时用了旧的参数写法导致的。下面是具体的解决步骤:

直接修正代码

问题出在Model构造函数的参数上——在新版TensorFlow中,output参数已经被弃用,正确的参数名是outputs(注意复数形式)。把这行代码:

final_model = Model(inception_model.input,output=predictions)

改成下面两种写法中的任意一种都可以:

  1. 显式指定参数名(更清晰,推荐):
final_model = Model(inputs=inception_model.input, outputs=predictions)
  1. 使用位置参数(因为Model的第一个参数是inputs,第二个是outputs):
final_model = Model(inception_model.input, predictions)

完整修正后的代码

这里给你整理好整个可运行的代码片段,顺便补充compile方法的必要参数(原代码里compile()是空的,训练时会报错):

from tensorflow.keras.applications import InceptionV3
from tensorflow.keras.layers import GlobalAveragePooling2D, Dense
from tensorflow.keras.models import Model

# 加载预训练的InceptionV3,不包含顶层分类器
inception_model = InceptionV3(weights='imagenet', include_top=False)

# 构建自定义顶层
output_inception = inception_model.output
output_globalavgpooling = GlobalAveragePooling2D()(output_inception)
output_dense = Dense(1024, activation='relu')(output_globalavgpooling)
predictions = Dense(1, activation='sigmoid')(output_dense)

# 修正后的Model构造
final_model = Model(inputs=inception_model.input, outputs=predictions)

# 补充compile的必要参数(比如优化器、损失函数)
final_model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 查看最终模型的结构(建议看final_model的summary,而不是inception_model的)
final_model.summary()

错误原因解释

TensorFlow在更新后,对Model类的参数做了规范,旧的output单参数写法会导致内部张量的哈希逻辑冲突,触发Tensor is unhashable的错误。改用outputs复数参数后,框架能正确识别输出张量的集合,避免这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:26:38