当提取模型层输出时,如下面的Tensorflow序列模型文档示例所示,代码中的输入x
在进入my_intermediate_layer
层之前是否也经过my_first_layer
?或者它是否直接进入my_intermediate_layer
层而不经过my_first_layer
层?
如果它直接进入my_intermediate_layer
,my_intermediate_layer
的输入没有my_first_layer
Conv2D所做的转换。但是,在我看来这是不正确的,因为输入应该经过前面所有的层。
请帮助理解x通过哪些层?
基于序列模型的特征提取
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"),
]
)
# The model goes through the training.
...
# Feature extractor
feature_extractor = keras.Model(
inputs=initial_model.inputs,
outputs=initial_model.get_layer(name="my_intermediate_layer").output,
)
# Call feature extractor on test input.
x = tf.ones((1, 250, 250, 3))
features = feature_extractor(x)
1条答案
按热度按时间vvppvyoh1#
Keras提供了更高级别的API,运行在TensorFlow机器学习平台之上。Keras提供了两种类型的类来定义神经网络模型,即“序列类”和“模型类”。
顺序类:
它将层的线性堆叠分组以形成模型,使得每个层具有一个输入Tensor和一个输出Tensor。可以将所需的层添加到定义的模型(模式-1),如下所示,以按名称顺序执行Keras Sequential Class。
用于定义时序模型Keras-Sequential Class Definition的模式如下所示(模式-2):
模型类
它允许用户构建一个定制模型沿着许多层,如下所示,
它允许创建具有附加层Keras - Model Class的新功能API模型,如下所示,
注:输入Tensor只支持指令、列表或元组,但不支持列表的列表或指令的指令。
我希望这能有所帮助。