def _process_variable_info(self): var_infos = self.config.desc.extra_info.map.data['var_infos'] for var_info in var_infos.map.data: idx = from_flexible_data_to_pyobj( var_infos.map.data[var_info].map.data['block_id']) stop_gradient = from_flexible_data_to_pyobj( var_infos.map.data[var_info].map.data['stop_gradient']) block = self.inference_program.blocks[idx] var_name = HUB_VAR_PREFIX + var_info if var_name in block.vars: var = block.vars[var_name] var.stop_gradient = stop_gradient
def from_flexible_data_to_param(flexible_data): param = {'gradient_clip_attr': None, 'regularizer': None} param['trainable'] = from_flexible_data_to_pyobj( flexible_data.map.data['trainable']) param['do_model_average'] = from_flexible_data_to_pyobj( flexible_data.map.data['do_model_average']) param['optimize_attr'] = from_flexible_data_to_pyobj( flexible_data.map.data['optimize_attr']) if flexible_data.map.data['regularizer'].type != module_desc_pb2.NONE: regularizer_type = flexible_data.map.data['regularizer'].name regularization_coeff = from_flexible_data_to_pyobj( flexible_data.map.data['regularizer'].object. data['_regularization_coeff']) param['regularizer'] = eval( "fluid.regularizer.%s(regularization_coeff = %f)" % (regularizer_type, regularization_coeff)) if flexible_data.map.data[ 'gradient_clip_attr'].type != module_desc_pb2.NONE: clip_type = flexible_data.map.data['gradient_clip_attr'].name if clip_type == "ErrorClipByValue" or clip_type == "GradientClipByValue": max = from_flexible_data_to_pyobj( flexible_data.map.data['gradient_clip_attr'].object.data['max'] ) min = from_flexible_data_to_pyobj( flexible_data.map.data['gradient_clip_attr'].object.data['min'] ) param['gradient_clip_attr'] = eval( "fluid.clip.%s(max = %f, min = %f)" % (clip_type, max, min)) if clip_type == "GradientClipByNorm": clip_norm = from_flexible_data_to_pyobj( flexible_data.map.data['gradient_clip_attr'].object. data['clip_norm']) param['gradient_clip_attr'] = eval( "fluid.clip.%s(clip_norm = %f)" % (clip_type, clip_norm)) if clip_type == "GradientClipByGlobalNorm": clip_norm = from_flexible_data_to_pyobj( flexible_data.map.data['gradient_clip_attr'].object. data['clip_norm']) group_name = from_flexible_data_to_pyobj( flexible_data.map.data['gradient_clip_attr'].object. data['group_name']) param['gradient_clip_attr'] = eval( "fluid.clip.%s(clip_norm = %f, group_name = \"%s\")" % (clip_type, clip_norm, group_name)) return param
def test_convert_compound_object(self): input = { False: 1, '2': 3, 4.0: [5, 6.0, ['7', { 8: 9 }]], 'set': {10}, 'dict': { 11: 12 } } flexible_data = module_desc_pb2.FlexibleData() from_pyobj_to_flexible_data(input, flexible_data) output = from_flexible_data_to_pyobj(flexible_data) assert input == output, "dict convesion error"
def test_convert_dict(self): input = {1: 1, 2: 2, 3: 3} flexible_data = module_desc_pb2.FlexibleData() from_pyobj_to_flexible_data(input, flexible_data) output = from_flexible_data_to_pyobj(flexible_data) assert input == output, "dict convesion error"
def test_convert_tuple(self): input = (1, 2, 3) flexible_data = module_desc_pb2.FlexibleData() from_pyobj_to_flexible_data(input, flexible_data) output = from_flexible_data_to_pyobj(flexible_data) assert list(input) == output, "tuple convesion error"
def test_convert_list(self): input = [1, 2, 3] flexible_data = module_desc_pb2.FlexibleData() from_pyobj_to_flexible_data(input, flexible_data) output = from_flexible_data_to_pyobj(flexible_data) assert input == output, "list convesion error"
def test_convert_bool(self): input = False flexible_data = module_desc_pb2.FlexibleData() from_pyobj_to_flexible_data(input, flexible_data) output = from_flexible_data_to_pyobj(flexible_data) assert input == output, "bool convesion error"
def test_convert_str(self): input = "123" flexible_data = module_desc_pb2.FlexibleData() from_pyobj_to_flexible_data(input, flexible_data) output = from_flexible_data_to_pyobj(flexible_data) assert input == output, "str convesion error"
def test_convert_float(self): input = 2.012 flexible_data = module_desc_pb2.FlexibleData() from_pyobj_to_flexible_data(input, flexible_data) output = from_flexible_data_to_pyobj(flexible_data) assert _compare_float(input, output), "float convesion error"