TensorFlow 初始模型中的迁移学习

数据挖掘 机器学习 Python 张量流 成立之初
2022-02-10 08:02:20

我想在 Python 3 中使用 TensorFlow 的Inception v3 模型中冻结除前三层之外的层,并修改这三层的权重,以便能够仅重新初始化和重新训练的前三个层网络。

如果在初始模型中无法做到这一点,是否有任何其他网络(在 TensorFlow 中)可以做到这一点?

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 中的变量。