如何在tensorflow中设置keras子类模型的输入?

如何在tensorflow中设置keras子类模型的输入?,tensorflow,keras,subclass,Tensorflow,Keras,Subclass,我使用tensorflow创建了一个keras子类模型。代码片段如下所示 类子模型(模型): def呼叫(自我,输入): 打印(输入) 模型=子模型() 模型拟合(数据、标签等) 当fit模型时,它将获得输入和输入形状本身。我想做的是自己将输入传递给模型,就像函数API一样 inputs=tf.keras.input(shape=(100,)) 模型=tf.keras.model(输入=输入,输出=输出) 类似的东西 model_ = SubModel() inputs = tf.keras.

我使用tensorflow创建了一个keras子类模型。代码片段如下所示

类子模型(模型):
def呼叫(自我,输入):
打印(输入)
模型=子模型()
模型拟合(数据、标签等)
fit
模型时,它将获得输入和输入形状本身。我想做的是自己将输入传递给模型,就像函数API一样

inputs=tf.keras.input(shape=(100,))
模型=tf.keras.model(输入=输入,输出=输出)
类似的东西

model_ = SubModel()
inputs = tf.keras.input(shape=(100,))
outputs = model_(inputs)
model = tf.keras.Model(inputs=inputs, outputs=outputs)

我不知道你想在这里做什么。是否希望能够提前指定输入的形状?也许使用子类API的
build
方法会有所帮助。是的,我只想提前指定输入的形状和名称,并将输入传递给模型。你的意思是调用
build
方法就像
model.build
?还是其他用法?我有点困惑。
Model
类有一个
build
方法,该方法被调用以允许创建模型权重(请参见:)。如果以前没有调用过,则在第一次使用模型时(用于拟合、预测或评估)将调用它。你可以事先用你需要的形状调用它,但是如果你的输入形状总是一样的话,我不确定你会从中得到什么。谢谢,它可以工作。但我觉得这有点奇怪。我的意思是我已经创建了模型,但现在我使用另一个
模型来包装它。就像函数API一样。这样,使用
model.summary
只会显示输入层和模型层本身,而不会显示模型的内层。无论如何,使用子类API,
summary
方法将无法工作(请参见:)。@ZaccharieRamzi,实际上我们可以。在使用
摘要打印形状之前,我们先输入假数据,请参见@donto your is right。您甚至可以使用未定义的形状(定义了等级)构建模型。