def __getattr__(self, layer): # TODO(amalevich): Add add support for ifbpy inline documentation if layers.layer_exists(layer): def wrapper(*args, **kwargs): return self.add_layer( layers.create_layer(layer, self, *args, **kwargs)) return wrapper elif core.IsOperator(layer): def wrapper(*args, **kwargs): def apply_operator(net, in_record, out_record): # core.Net will throw exception if output_dtypes is set # in Functional layer because MakeArgment() cannot recognize # it. Just remove it from kwargs. clean_kwargs = dict(kwargs) if 'output_dtypes' in clean_kwargs: del clean_kwargs['output_dtypes'] # TODO(amalevich): Switch to net.operator as soon as it gets # landed net.__getattr__(layer)(in_record.field_blobs(), out_record.field_blobs(), **clean_kwargs) if 'name' not in kwargs: kwargs['name'] = layer return self.add_layer( layers.create_layer('Functional', self, *args, function=apply_operator, **kwargs)) return wrapper else: raise ValueError( "Tring to create non-registered layer: {0}".format(layer))
def __getattr__(self, layer): if layer.startswith('__'): raise AttributeError(layer) # TODO(amalevich): Add add support for ifbpy inline documentation if layers.layer_exists(layer): def wrapper(*args, **kwargs): return self.add_layer( layers.create_layer(layer, self, *args, **kwargs)) return wrapper elif core.IsOperator(layer): def wrapper(*args, **kwargs): def apply_operator(net, in_record, out_record, **kwargs): # TODO(amalevich): Switch to net.operator as soon as it gets # landed net.__getattr__(layer)(in_record.field_blobs(), out_record.field_blobs(), **kwargs) if 'name' not in kwargs: kwargs['name'] = layer return self.add_layer( layers.create_layer('Functional', self, *args, function=apply_operator, **kwargs)) return wrapper else: raise ValueError( "Trying to create non-registered layer: {}".format(layer))
def __getattr__(self, layer): if layer.startswith('__'): raise AttributeError(layer) # TODO(amalevich): Add add support for ifbpy inline documentation if layers.layer_exists(layer): def wrapper(*args, **kwargs): return self.add_layer( layers.create_layer(layer, self, *args, **kwargs)) return wrapper elif core.IsOperator(layer): def wrapper(*args, **kwargs): def apply_operator(net, in_record, out_record, **kwargs): # TODO(amalevich): Switch to net.operator as soon as it gets # landed net.__getattr__(layer)(in_record.field_blobs(), out_record.field_blobs(), **kwargs) if 'name' not in kwargs: kwargs['name'] = layer return self.add_layer( layers.create_layer('Functional', self, *args, function=apply_operator, **kwargs)) return wrapper else: raise ValueError( "Trying to create non-registered layer: {}".format(layer))
def __getattr__(self, layer): if not layers.layer_exists(layer): raise ValueError( "Tring to create non-registered layer: {0}".format(layer)) def wrapper(*args, **kwargs): return self.add_layer( layers.create_layer(layer, self, *args, **kwargs)) return wrapper
def __getattr__(self, layer): if not layers.layer_exists(layer): raise ValueError( "Tring to create non-registered layer: {0}".format(layer)) def wrapper(*args, **kwargs): return self.add_layer( layers.create_layer(layer, self, *args, **kwargs)) return wrapper
def __getattr__(self, layer): def is_functional_layer(layer): if core.IsOperator(layer): return True elif layer.startswith('FunctionalLayer'): return True else: return False def resolve_functional_layer(layer): if core.IsOperator(layer): return layer elif layer.startswith('FunctionalLayer'): return layer[len('FunctionalLayer'):] else: raise ValueError('%s cannot be resolved as functional layer' % layer) if layer.startswith('__'): raise AttributeError(layer) # TODO(amalevich): Add add support for ifbpy inline documentation if layers.layer_exists(layer): def wrapper(*args, **kwargs): new_layer = layers.create_layer(layer, self, *args, **kwargs) if kwargs.get("output_to_metrics", False): new_layer.export_output_for_metrics() if kwargs.get("params_to_metrics", False): new_layer.export_params_for_metrics() return self.add_layer(new_layer) return wrapper elif is_functional_layer(layer): # TODO(xlwang): Desginated layer shadows the usage of an op as a # single layer. To enforce using an op (e.g. Split) as functional # layer, one can call 'model.FunctionalLayerSplit' layer = resolve_functional_layer(layer) def wrapper(*args, **kwargs): def apply_operator(net, in_record, out_record, **kwargs): # TODO(amalevich): Switch to net.operator as soon as it gets # landed net.__getattr__(layer)(in_record.field_blobs(), out_record.field_blobs(), **kwargs) if 'name' not in kwargs: kwargs['name'] = layer new_layer = layers.create_layer('Functional', self, *args, function=apply_operator, **kwargs) if kwargs.get("output_to_metrics", False): new_layer.export_output_for_metrics() if kwargs.get("params_to_metrics", False): new_layer.export_params_for_metrics() return self.add_layer(new_layer) return wrapper else: raise ValueError( "Trying to create non-registered layer: {}".format(layer))
def __getattr__(self, layer): def is_functional_layer(layer): if core.IsOperator(layer): return True elif layer.startswith('FunctionalLayer'): return True else: return False def resolve_functional_layer(layer): if core.IsOperator(layer): return layer elif layer.startswith('FunctionalLayer'): return layer[len('FunctionalLayer'):] else: raise ValueError( '%s cannot be resolved as functional layer' % layer ) if layer.startswith('__'): raise AttributeError(layer) # TODO(amalevich): Add add support for ifbpy inline documentation if layers.layer_exists(layer): def wrapper(*args, **kwargs): new_layer = layers.create_layer(layer, self, *args, **kwargs) if kwargs.get("output_to_metrics", False): new_layer.export_output_for_metrics() if kwargs.get("params_to_metrics", False): new_layer.export_params_for_metrics() return self.add_layer(new_layer) return wrapper elif is_functional_layer(layer): # TODO(xlwang): Desginated layer shadows the usage of an op as a # single layer. To enforce using an op (e.g. Split) as functional # layer, one can call 'model.FunctionalLayerSplit' layer = resolve_functional_layer(layer) def wrapper(*args, **kwargs): def apply_operator(net, in_record, out_record, **kwargs): # TODO(amalevich): Switch to net.operator as soon as it gets # landed net.__getattr__(layer)(in_record.field_blobs(), out_record.field_blobs(), **kwargs) if 'name' not in kwargs: kwargs['name'] = layer new_layer = layers.create_layer( 'Functional', self, *args, function=apply_operator, **kwargs ) if kwargs.get("output_to_metrics", False): new_layer.export_output_for_metrics() if kwargs.get("params_to_metrics", False): new_layer.export_params_for_metrics() return self.add_layer(new_layer) return wrapper else: raise ValueError( "Trying to create non-registered layer: {}".format(layer))