我正在尝试构建Model类的子类的Keras模型,但找不到与Model类的子类的嵌套模型相关的任何东西。
我的模型由两个编码器(它们不共享权重)和一个完全连接的部分组成。
为此,我创建了以下两个类(我省略了一些代码,因为我认为这并不相关,但是如果需要的话,我将全部发布):
class EncoderModel(tf.keras.Model):
def __init__(self, vocabulary_size, embedding_matrix, max_len):
super(EncoderModel, self).__init__()
"""Code here"""
def call(self, inputs):
"""Code here"""
class class EntailmentModel(tf.keras.Model):
def __init__(self, vocabulary_size, embedding_matrix, max_len):
super(EntailmentModel, self).__init__()
# Left branch
self.left_encoder = EncoderModel(vocabulary_size, embedding_matrix, max_len)
self.right_encoder = EncoderModel(vocabulary_size, embedding_matrix, max_len)
"""Omitted code"""
def call(self, inputs):
left_enc_out = self.left_encoder(inputs[0])
right_enc_out = self.right_encoder(inputs[1])
"""Omitted code"""
我创建并编译模型没有任何问题
enc = EntailmentModel(vocabulary_size, embedding_matrix, 40)
enc.compile(optimizer="Adam", loss='categorical_crossentropy', metrics=['accuracy'])
但是当我开始训练模型时,在执行第一批之后,我会收到以下错误消息
AttributeError:“ EntailmentModel”对象没有属性“ loss_functions”
这是我第一次在Keras中使用Model子类,并且不确定在嵌套两个不同模型时我做错了什么。
有人可以告诉我我在做什么错吗?