首页 > 解决方案 > tf.keras.layers.pop() 不起作用,但 tf.keras._layers.pop() 起作用

问题描述

我想弹出模型的最后一层。所以我使用tf.keras.layers.pop(),但它不起作用。

base_model.summary()

在此处输入图像描述

base_model.layers.pop()

base_model.summary()

在此处输入图像描述

当我使用tf.keras._layers.pop()时,它可以工作。

base_model.summary()

在此处输入图像描述

base_model._layers.pop()
base_model.summary()

在此处输入图像描述

我没有找到关于这种用法的文档。有人可以帮忙解释一下吗?

标签: pythontensorflowtensorflow2.0

解决方案


我同意这令人困惑。原因是model.layers返回图层列表的浅表副本,因此:

tldr 不用于model.layers.pop()删除最后一层。相反,我们应该创建一个新模型,除了最后一层。也许是这样的:

new_model = tf.keras.models.Sequential(base_model.layers[:-1])

查看此github 问题以获取更多详细信息


推荐阅读