Python AttributeError:Layer tf_bert_模型没有入站节点

Python AttributeError:Layer tf_bert_模型没有入站节点,python,tensorflow,keras,huggingface-transformers,Python,Tensorflow,Keras,Huggingface Transformers,我有一个深度学习模型,它使用Huggingface库中的BERT层(TF=2.0,Transformers=2.8.0) 该模型包括:BERT嵌入->注意->Softmax。此外,我还使用tf.keras.callbacks.ModelCheckpoint在培训期间保存最佳模型 我试着将模型切片以获得注意权重 我的问题是,如果在加载保存的模型后,使用output1=model.layers[3]。output,尝试访问任何层的输出,则会出现以下错误: AttributeError:Layer t

我有一个深度学习模型,它使用Huggingface库中的BERT层(
TF=2.0
Transformers=2.8.0

该模型包括:BERT嵌入->注意->Softmax。此外,我还使用
tf.keras.callbacks.ModelCheckpoint
在培训期间保存最佳模型

我试着将模型切片以获得注意权重

我的问题是,如果在加载保存的模型后,使用
output1=model.layers[3]。output
,尝试访问任何层的输出,则会出现以下错误:

AttributeError:Layer tf_bert_模型没有入站节点

但是,如果我在原始模型上执行相同的操作而不保存它(在完成model.fit()之后立即),我就没有问题了

以下是加载已保存模型的方式:

model = tf.keras.models.load_model(model_dir)

这种方法有问题吗?假设它可以用于预测。

回答这个问题是为了社区的利益,因为用户已经找到了解决方案

通过以下步骤解决了该问题

  • 加载保存的模型
  • 创建具有相同结构的另一个新模型
  • 将权重从保存的模型复制到新创建的模型
  • 然后毫无问题地访问所需的层

  • 在这里回答是为了社区的利益,因为用户已经找到了解决方案

    通过以下步骤解决了该问题

  • 加载保存的模型
  • 创建具有相同结构的另一个新模型
  • 将权重从保存的模型复制到新创建的模型
  • 然后毫无问题地访问所需的层

  • 你的问题解决了吗?否则,请您共享完整的代码或Colab文件以复制问题。谢谢@TFer2,是的,我通过1)加载保存的模型,2)创建另一个具有相同结构的新模型,3)将权重从保存的模型复制到新创建的模型,4)然后访问所需的层而解决了问题。您的问题解决了吗?否则,请您共享完整的代码或Colab文件以复制问题。谢谢@TFer2,是的,我通过1)加载保存的模型,2)创建另一个具有相同结构的新模型,3)将权重从保存的模型复制到新创建的模型,4)然后毫无问题地访问所需的层来解决此问题。