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