无法设置Trainable = False以冻结TensorFlow中的某些图层

时间:2019-07-31 02:38:42

标签: tensorflow

我尝试将AlexNet的某些层冻结为self.FROZEN_LAYER=['conv2', 'conv3']。 这是代码段:

for op_name in weights_dict:

    # Check if layer should be trained from scratch
    if op_name not in self.SKIP_LAYER:

        with tf.variable_scope(op_name, reuse=True):

            # Assign weights/biases to their corresponding tf variable
            for data in weights_dict[op_name]:
                if len(data.shape) == 1:
                    var = tf.get_variable('biases',
                                          trainable=[True if op_name not in self.FROZEN_LAYER else False][
                                              0])  # todo: trainable
                    session.run(var.assign(data))

                # Weights
                else:
                    var = tf.get_variable('weights',
                                          trainable=[True if op_name not in self.FROZEN_LAYER else False][0])
                    session.run(var.assign(data))

但是,当我在tf.get_variable()函数(调试器中的op_name: 'conv2''conv3')中进行调试时,trainable参数不能设置为False。有人知道问题出在哪里吗?

1 个答案:

答案 0 :(得分:0)

Is it possible to make a trainable variable not trainable?中也出现了相同的问题。而在本期中提出的第一个答案就解决了我的问题。