问题描述
conv_base = Xception(include_top=False,input_tensor=None,pooling=None,input_shape=(TARGET_SIZE,TARGET_SIZE,3),classifier_activation='softmax')
model = conv_base.output
model = layers.GlobalAveragePooling2D()(model)
model = layers.Dense(5,activation = "softmax")(model)
model = models.Model(conv_base.input,model)
model.compile(optimizer = Adam(lr = 0.001),loss = "sparse_categorical_crossentropy",metrics = ["acc"])
谁能解释一下这段代码中的 conv_base.output
和 conv_base.input
是什么意思?它的用途和作用是什么??
解决方法
tf.keras.models.Model
需要 inputs
和 outputs
作为参数:
参数:
输入:模型的输入:keras.Input
对象或列表
keras.Input
对象。
输出:模型的输出。请参阅下面的函数式 API 示例。
name:字符串,模型名称。
在 Keras 模型中,model.input
和 model.output
返回输入/输出张量,您可以将其作为新模型的输入/输出传递:
from tensorflow.keras.applications.vgg19 import VGG19
base_model = VGG19(weights=None)
print(base_model.input)
Tensor("input_2:0",shape=(None,224,3),dtype=float32)
请注意,调用这些层会返回张量,而不是模型,因此您似乎错误地分配了变量名称。相反,使用以下内容:
model_output = conv_base.output
layer_output = layers.GlobalAveragePooling2D()(model_output)
final_model_output = layers.Dense(5,activation = "softmax")(layer_output)
model = models.Model(conv_base.input,final_model_output)