Python 3.x 如何在tensorflow模型调用函数中提供多个参数?

Python 3.x 如何在tensorflow模型调用函数中提供多个参数?,python-3.x,tensorflow,keras,Python 3.x,Tensorflow,Keras,我试图通过扩展tensorflow.keras中的“model”类,在tensorflow中构建一个模型。我需要在这个类的'call'函数中传递两个参数,输入图像x(224224,3)和输出标签y。但在构建模型时,我遇到以下错误: ValueError:当前,如果模型具有 不是输入到模型的位置参数或关键字参数,但 是其“调用”方法所必需的 调用方法的输入参数可以是输入张量或输入张量列表/元组 您可以像这样传递两个参数: def调用(自身,输入): x=输入[0] y=输入[1] x=自转换1(x

我试图通过扩展tensorflow.keras中的“model”类,在tensorflow中构建一个模型。我需要在这个类的'call'函数中传递两个参数,输入图像x(224224,3)和输出标签y。但在构建模型时,我遇到以下错误:

ValueError:当前,如果模型具有 不是输入到模型的位置参数或关键字参数,但 是其“调用”方法所必需的


调用方法的输入参数可以是
输入张量
输入张量列表/元组

您可以像这样传递两个参数:

def调用(自身,输入):
x=输入[0]
y=输入[1]
x=自转换1(x)
x=自展平(x)
x=自身.fc1(x)
返回自我。最终(x)

为什么需要y?您没有在callI内部的当前计算中使用它,但未显示其用法。我需要先遮罩x,然后再将其传递到展平层。遮罩取决于y。到目前为止,我通过将[x,y]作为单个参数传递给call()来做了一个变通方法。这不是一个变通方法,而是应该如何实现它。您对此有什么解决方案吗?
class myCNN(Model):
  def __init__(self):
    super(myCNN, self).__init__()

    base_model = tf.keras.applications.VGG16(input_shape=(224,224,3), weights='imagenet')
    layer_name = 'block5_conv3'
    self.conv_1 = Model(inputs=base_model.input, outputs=base_model.get_layer(layer_name).output)
    self.flatten = L.Flatten(name='flatten')
    self.fc1 = L.Dense(1000, activation='relu', name='fc1')
    self.final = L.Activation('softmax')

  # The problem is because I need y
  def call(self, x, y):
    x = self.conv_1(x)
    x = self.flatten(x)
    x = self.fc1(x)
    return self.final(x)

model = myCNN()
model.build((None, 224, 224, 3, 1))