Keras特征提取器疑问:输入x在Sequential模型中经过哪些层?
TensorFlow Sequential模型特征提取的层执行路径说明
疑问
在TensorFlow Sequential模型的特征提取示例中,输入x进入my_intermediate_layer层之前是否会经过my_first_layer层?还是直接进入my_intermediate_layer层?如果是直接进入,输入未经过my_first_layer的Conv2D变换,这似乎不符合“输入应经过所有前置层”的认知,需要明确输入x会经过哪些层。
解答
输入x会依次经过my_first_layer层,再进入my_intermediate_layer层,最终输出my_intermediate_layer的处理结果。
具体解释:
- 构建
feature_extractor时,它复用了initial_model的完整串联层结构,只是将输出节点指定为my_intermediate_layer的输出。 - Sequential模型的层是按定义顺序依次执行的,
my_intermediate_layer在my_first_layer之后,输入必须经过前面所有层的处理才能到达该层。 - 这个特征提取器本质是原模型的子模型,截取了从输入到
my_intermediate_layer的计算路径,同时保留了原模型训练好的权重参数。
示例代码
initial_model = keras.Sequential( [ keras.Input(shape=(250, 250, 3)), layers.Conv2D(32, 5, strides=2, activation="relu", name="my_first_layer"), layers.Conv2D(32, 3, activation="relu", name="my_intermediate_layer"), layers.Conv2D(32, 3, activation="relu"), ] ) # 模型训练过程 ... # 构建特征提取器 feature_extractor = keras.Model( inputs=initial_model.inputs, outputs=initial_model.get_layer(name="my_intermediate_layer").output, ) # 测试输入 x = tf.ones((1, 250, 250, 3)) features = feature_extractor(x)
内容的提问来源于stack exchange,提问作者mon
相关产品推荐
相关产品推荐

