在使用Deepmatch包构建了DSSM模型后,我想使用tf.keras.utils.plot_model来绘制模型
此时会报一个AttributeError
layer_name = layer.name
AttributeError: 'ListWrapper' object has no attribute 'name'
我怀疑是Deepmatch包中的DSSM模型对输入进行了list(),但这是必须的部分,所以我很困惑。
望采纳!!点击该回答右侧的“采纳”按钮即可采纳!!
这个错误的原因是因为你传入的model不是一个单独的层,而是一个包含多个层的列表。
我想到解决方法有两种:
1.将列表中的每个层单独绘制:
for layer in model:
tf.keras.utils.plot_model(layer)
2.使用tf.keras.Model的subclassing方式来构建模型,然后绘制整个模型:
class DSSM(tf.keras.Model):
def __init__(self):
super(DSSM, self).__init__()
self.layers = [
# 将所有层添加到这里
]
def call(self, inputs, training=None, mask=None):
# 将输入传递给所有层并返回输出
model = DSSM()
tf.keras.utils.plot_model(model)