in lm_human_preferences/language/trained_models.py [0:0]
def init_op(self, params, new_scope):
assert params
params = dict(**params)
checkpoint = self.checkpoint()
available = tf.train.list_variables(checkpoint)
unchanged = {}
for name, shape in available:
our_name = name
if self.scope:
if name.startswith(self.scope):
our_name = name[len(self.scope):].lstrip('/')
else:
continue
# Annoying hack since some code uses 'scope/model' as the scope and other code uses just 'scope'
our_name = '%s/%s' % (new_scope, our_name)
if our_name not in params:
# NOTE: this happens for global_step and optimizer variables
# (e.g. beta1_power, beta2_power, blah/Adam, blah/Adam_1)
# print(f'{name} is missing for scope {new_scope}')
continue
var = params[our_name]
del params[our_name]
assert var.shape == shape, 'Shape mismatch: %s.shape = %s != %s' % (var.op.name, var.shape, shape)
unchanged[name] = var
for name in params.keys():
print(f'Param {name} is missing from checkpoint {checkpoint}')
tf.train.init_from_checkpoint(checkpoint, unchanged)