I try to freeze some layers of AlexNet as self.FROZEN_LAYER=['conv2', 'conv3'].
Here's the snippet:
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))
But when I debug in the tf.get_variable() function (op_name: 'conv2' or 'conv3' in debugger), the trainable argument cannot be set to False. Does anyone know where the problem is?