Esempio n. 1
0
 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
Esempio n. 2
0
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
Esempio n. 3
0
 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"
Esempio n. 4
0
 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"
Esempio n. 5
0
 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"
Esempio n. 6
0
 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"
Esempio n. 7
0
 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"
Esempio n. 8
0
 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"
Esempio n. 9
0
 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"