def __call__(self, clip=None, **inputs):
    from collections import OrderedDict
    net = self.parsed_proto
    blobs = OrderedDict(inputs)
    for l in net.layer:
        if (l.type not in ['Data', 'ImageData']):
            in_place = (l.top == l.bottom)
            param = get_param(l)
            tops = getattr(L, l.type)(*[blobs[b] for b in l.bottom], ntop=len(l.top), in_place=in_place, name=l.name, **param)
            if (len(l.top) <= 1):
                tops = [tops]
            for (i, t) in enumerate(l.top):
                blobs[t] = tops[i]
        if (l.name == clip):
            break
    return list(blobs.values())[(- 1)]
def __call__(self, clip=None, **inputs):
    from collections import OrderedDict
    net = self.parsed_proto
    blobs = OrderedDict(inputs)
    for l in net.layer:
        if (l.type not in ['Data', 'ImageData']):
            in_place = (l.top == l.bottom)
            param = get_param(l)
            tops = getattr(L, l.type)(*[blobs[b] for b in l.bottom], ntop=len(l.top), in_place=in_place, name=l.name, **param)
            if (len(l.top) <= 1):
                tops = [tops]
            for (i, t) in enumerate(l.top):
                blobs[t] = tops[i]
        if (l.name == clip):
            break
    return list(blobs.values())[(- 1)]