gpt4 book ai didi

tensorflow - 如何在 tensorflow 中使用预训练模型作为不可训练的子网络?

转载 作者:行者123 更新时间:2023-12-03 23:21:55 27 4
gpt4 key购买 nike

我想训练一个包含子网络的网络,我需要在训练期间保持修复。基本思想是在预训练网络(inceptionV3)中添加和附加一些层

new_layers -> pre-trained and fixed sub-net (inceptionv3) -> new_layers

并在不更改预先训练的任务的情况下运行我所拥有的任务的训练过程。
我还需要直接在预训练网络的某个层上进行分支。例如,对于 inceptionV3,我喜欢从 conv 299x299 到最后一个池层或从 conv 79x79 到最后一个池层使用它。

最佳答案

是否训练“层”取决于该层中使用的变量是否随梯度更新。如果您使用 Optimizer接口(interface)来优化您的网络,那么您可以简单地不将要保持固定的层中使用的变量传递给 minimize函数,即

opt.minimize(loss, <subset of variables you want to train>)

如果您使用 tf.gradients直接函数,然后从 tf.gradients 的第二个参数中删除要保持固定的变量.

现在,如何“直接分支”到预训练网络的一层取决于该网络的实现方式。我只需找到 tf.Conv2D调用您正在谈论的 299x299 层,并将新层的输出作为其输入传递,并在输出端定位 79x79 层,将其输出用作新层的输入。

关于tensorflow - 如何在 tensorflow 中使用预训练模型作为不可训练的子网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35180888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com