在使用子类模型(Subclassing Model)时,model.summary()
无法打印输出形状的问题通常是由于模型在构建过程中没有正确地定义层和参数。子类模型允许你通过继承 tf.keras.Model
并重写 __init__
和 call
方法来创建自定义模型。以下是一些可能的原因和解决方法:
__init__
方法中,如果没有正确添加层,Keras 将无法识别模型的结构。model.summary()
也可能无法正确显示形状信息。以下是一个简单的示例,展示如何正确使用子类模型并确保 model.summary()
能够打印输出形状:
import tensorflow as tf
from tensorflow.keras.layers import Dense, Input
from tensorflow.keras.models import Model
class CustomModel(Model):
def __init__(self):
super(CustomModel, self).__init__()
self.dense1 = Dense(64, activation='relu', input_shape=(784,))
self.dense2 = Dense(10, activation='softmax')
def call(self, inputs):
x = self.dense1(inputs)
return self.dense2(x)
# 创建模型实例
model = CustomModel()
# 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 打印模型摘要
model.summary()
__init__
方法中添加层:这是定义模型结构的关键步骤。model.summary()
之前,确保模型已经编译。通过以上步骤,你应该能够解决 model.summary()
无法打印输出形状的问题。如果问题仍然存在,请检查是否有其他特定的层或操作影响了形状信息的计算。
领取专属 10元无门槛券
手把手带您无忧上云