我想在 Python 3 中使用 TensorFlow 的Inception v3 模型中冻结除前三层之外的层,并修改这三层的权重,以便能够仅重新初始化和重新训练的前三个层网络。
如果在初始模型中无法做到这一点,是否有任何其他网络(在 TensorFlow 中)可以做到这一点?
我想在 Python 3 中使用 TensorFlow 的Inception v3 模型中冻结除前三层之外的层,并修改这三层的权重,以便能够仅重新初始化和重新训练的前三个层网络。
如果在初始模型中无法做到这一点,是否有任何其他网络(在 TensorFlow 中)可以做到这一点?
要在训练期间冻结较低层,最简单的解决方案是为优化器提供要训练的变量列表,不包括来自较低层的变量:
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 中的变量。