【问题标题】:Freezing part of layers in Inception V3 in TensorFlow with Python 3使用 Python 3 在 TensorFlow 中冻结 Inception V3 中的部分层
【发布时间】:2018-05-20 10:38:32
【问题描述】:

我想冻结除Inception v3 model 中的前三层之外的层,TensorFlow 中的Python 3 还修改这三层的权重,以便能够重新初始化和仅重新训练前三个网络层。如果在初始模型中无法做到这一点,是否还有其他网络(TensorFlow)可以做到这一点?

【问题讨论】:

    标签: python machine-learning tensorflow deep-learning data-science


    【解决方案1】:

    这可以在任何网络中完成。要在训练期间冻结较低层,最简单的解决方案是为优化器提供要训练的变量列表,不包括来自较低层的变量:

    train_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,
                                   scope="hidden[34]|outputs")
    training_op = optimizer.minimize(loss, var_list=train_vars)
    

    第一行获取隐藏层 3 和 4 以及输出层中所有可训练变量的列表。这忽略了隐藏层 1 和 2 中的变量。上面的 sn-p 假设层具有变量范围 hidden1,... hidden4outputs; Inception 模型使用不同的命名:Conv2d_2a_*Conv2d_2b_*AvgPool_1a_*、...

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 2022-07-25
      • 2017-03-22
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多