当前位置: 首页 > 知识库问答 >
问题:

在模型上应用图层的作用是什么?

郎曾笑
2023-03-14

我正在使用tensorflow。keras和API,我遇到了一种我不熟悉的语法,即在子模型的输出上应用层,如本教程中的以下示例所示:

from tensorflow.keras import Model, layers
from tensorflow.keras.applications import resnet


target_shape = (200, 200)


base_cnn = resnet.ResNet50(
    weights="imagenet", input_shape=target_shape + (3,), include_top=False
)

flatten = layers.Flatten()(base_cnn.output)
dense1 = layers.Dense(512, activation="relu")(flatten)
dense1 = layers.BatchNormalization()(dense1)
dense2 = layers.Dense(256, activation="relu")(dense1)
dense2 = layers.BatchNormalization()(dense2)
output = layers.Dense(256)(dense2)

embedding = Model(base_cnn.input, output, name="Embedding")

在层的官方参考中。例如,我找不到将其应用于层的实际效果的解释。在keras中。图层参考我遇到过这样的解释:

call(self、inputs、*args、**kwargs):在确保调用build()后在call中调用。call()执行将层应用于输入张量的逻辑(应该作为参数传入)。

所以我的问题是:

什么是展平=层。展平()(base\u cnn.output)do?

共有1个答案

段恩
2023-03-14

您正在基于预先训练的模型创建模型。除非您明确设置“可训练=真”,否则此预先训练的模型不会与其余层一起进行主动训练。也就是说,您只对提取其有用的特征感兴趣。展平操作通常用于将多维输出转换为一维张量,这正是这一行中发生的情况:<代码>展平=层。展平()(基本输出)。一维张量通常是模型的理想最终结果,尤其是在监督学习中。预先训练的resnet模型的输出是(None,7,7,2048),您希望为每个输入生成1D特征向量并对其进行比较,因此您可以展平该输出,从而生成一个具有形状的张量(None,100352)或(None,7*2048)。

展平的备选方案是GlobalMapooling2D和GlobalAveragePoolig2D,它们通过沿空间html" target="_blank">维度取最大值或平均值来减少输入样本。有关此主题的更多信息,请查看此帖子。

 类似资料:
  • 问题内容: 我试图了解TimeDistributed包装器在Keras中的作用。 我得到了TimeDistributed“将层应用于输入的每个时间片”。 但是我做了一些实验,却得到了我无法理解的结果。 简而言之,对于LSTM层,TimeDistributed和Just Dense层的结果相同。 对于这两个模型,我得到的输出形状为 (None,10,1) 。 在RNN层之后,谁能解释TimeDist

  • ●简单来讲,图层就是一幅透明的画布,用不同的符号绘制地点、出行路线、业务 范围等数据,一幅地图由一个或多个图层叠加而成。图层按业务数据的几何形状分为 三种:标注图层、线路图层、区域图层,不同形状的对象不能存储在同一个图层中。 1)标注图层:用标注来表达业务网点的分布,如连锁店位置,客户分布,户外广告位置,空间分布趋势等。 2)线路图层:用线路来表现导航线路、管道线路、关联关系等。 3)区域图层:用

  • 本文向大家介绍浏览器对象模型(BOM)在JavaScript中的作用是什么?,包括了浏览器对象模型(BOM)在JavaScript中的作用是什么?的使用技巧和注意事项,需要的朋友参考一下 JavaScript中的浏览器对象模型(BOM)包括JavaScript与Web浏览器进行交互的属性和方法。 BOM为您提供了一个窗口对象,例如,以显示窗口的宽度和高度。它还包括window.screen对象,以

  • 我使用Deeplab官方Github页面上的python脚本,用自己的数据集训练了一个语义分割模型。培训和测试都进行得很好。 然后我使用以下命令使用export_model.py将模型导出到冻结图: 这也成功了。现在我想使用convert_to_tflite.py将我的冻结图形转换为tflite。这个脚本有2个我不理解的输入参数:“input_tensor_name”和“output_tensor

  • 域单元测试 正如您所看到的,这两个测试都检查用户余额是否为0,这是域责任。因此,问题是:应用层单元测试应该是什么样子的,它应该测试什么?我在某处读到单元测试应该在“流控制的应用服务和业务规则的域模型”中进行测试。谁能再详细说明一下,给出一些例子,应用层单元测试应该测试什么,看起来是什么样子的吗?

  • 我是Docker的新手,正在尝试准确理解Docker映像是什么。Docker映像的每个定义都使用术语“层”,但似乎没有定义层的含义。 从Docker官方文件: 我们已经看到Docker图像是只读模板,从中启动Docker容器。每个图像由一系列层组成。Docker利用union文件系统将这些层合并到单个图像中。Union文件系统允许透明地覆盖单独文件系统(称为分支)的文件和目录,形成单个连贯的文件系