def __init__(self, first_token, key_to_value, all_layers): """ first_token: first token on the xconfig line, e.g. 'affine-layer'.f key_to_value: dictionary with parameter values { 'name':'affine1', 'input':'Append(0, 1, 2, ReplaceIndex(ivector, t, 0))', 'dim=1024' }. The only required and 'special' values that are dealt with directly at this level, are 'name' and 'input'. The rest are put in self.config and are dealt with by the child classes' init functions. all_layers: An array of objects inheriting XconfigLayerBase for all previously parsed layers. """ self.layer_type = first_token if not 'name' in key_to_value: raise RuntimeError("Expected 'name' to be specified.") self.name = key_to_value['name'] if not xutils.is_valid_line_name(self.name): raise RuntimeError("Invalid value: name={0}".format( key_to_value['name'])) for prev_layer in all_layers: if self.name == prev_layer.name: raise RuntimeError("Name '{0}' is used for more than one " "layer.".format(self.name)) # the following, which should be overridden in the child class, sets # default config parameters in self.config. self.set_default_configs() # The following is not to be reimplemented in child classes; # it sets the config values to those specified by the user, and # parses any Descriptors. self.set_configs(key_to_value, all_layers) # This method, sets the derived default config values # i.e., config values when not specified can be derived from # other values. It can be overridden in the child class. self.set_derived_configs() # the following, which should be overridden in the child class, checks # that the config parameters that have been set are reasonable. self.check_configs()
def __init__(self, first_token, key_to_value, all_layers): """ first_token: first token on the xconfig line, e.g. 'affine-layer'.f key_to_value: dictionary with parameter values { 'name':'affine1', 'input':'Append(0, 1, 2, ReplaceIndex(ivector, t, 0))', 'dim=1024' }. The only required and 'special' values that are dealt with directly at this level, are 'name' and 'input'. The rest are put in self.config and are dealt with by the child classes' init functions. all_layers: An array of objects inheriting XconfigLayerBase for all previously parsed layers. """ self.layer_type = first_token if not 'name' in key_to_value: raise RuntimeError("Expected 'name' to be specified.") self.name = key_to_value['name'] if not xutils.is_valid_line_name(self.name): raise RuntimeError("Invalid value: name={0}".format( key_to_value['name'])) for prev_layer in all_layers: if self.name == prev_layer.name: raise RuntimeError("Name '{0}' is used for more than one " "layer.".format(self.name)) # the following, which should be overridden in the child class, sets # default config parameters in self.config. self.set_default_configs() # The following is not to be reimplemented in child classes; # it sets the config values to those specified by the user, and # parses any Descriptors. self.set_configs(key_to_value, all_layers) # This method, sets the derived default config values # i.e., config values when not specified can be derived from # other values. It can be overridden in the child class. self.set_derived_configs() # the following, which should be overridden in the child class, checks # that the config parameters that have been set are reasonable. self.check_configs()