示例#1
0
    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))
示例#2
0
    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))
示例#3
0
    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))
示例#4
0
    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
示例#6
0
    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))
示例#7
0
    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))