# Path: selfsup/multi/basenets/basenet.py
# class BaseNet:
#     def __init__(self):
#         pass
# 
#     @property
#     def name(self):
#         raise NotImplemented('Abstract base class')
# 
#     @property
#     def canonical_input_size(self):
#         raise NotImplemented('Abstract base class')
# 
#     @property
#     def hypercolumn_layers(self):
#         """Suggested hypercolumn layers"""
#         return []
# 
#     @property
#     def layers(self):
#         return [name for name, _ in self.hypercolumn_layers]
# 
#     def build(self):
#         raise NotImplemented('Abstract base class')
# 
#     def save_caffemodel(self, path, session, verbose=False):
#         raise NotImplemented('Abstract base class')


from .basenet import BaseNet
import selfsup.model.resnet152_bn
import selfsup
            ('conv1', 2.0),
            ('res2a', 4.0),
            ('res2b', 4.0),
            ('res2c', 4.0),
            ('res3b1', 8.0),
            ('res3b4', 8.0),
            ('res3b7', 8.0),
            ('res4b5', 16.0),
            ('res4b10', 16.0),
            ('res4b15', 16.0),
            ('res4b20', 16.0),
            ('res4b25', 16.0),
            ('res4b30', 16.0),
            ('res4b35', 16.0),
            ('res5c', 32.0),
        ]

    def build(self, x01, phase_test, global_step, settings={}):
        info = selfsup.info.create(scale_summary=True)
        #info['config']['return_weights'] = True
        x = x01 - MEAN
        z = selfsup.model.resnet152_bn.build_network(x, info=info,
                convolutional=settings.get('convolutional', False),
                final_layer=False,
                #squeezed=True,
                phase_test=phase_test)
        info['activations']['x01'] = x01
        info['activations']['x'] = x
        info['activations']['top'] = z
        info['weights']['firstconv:weights'] = info['weights']['conv1:weights']

# Path: selfsup/multi/basenets/basenet.py
# class BaseNet:
#     def __init__(self):
#         pass
# 
#     @property
#     def name(self):
#         raise NotImplemented('Abstract base class')
# 
#     @property
#     def canonical_input_size(self):
#         raise NotImplemented('Abstract base class')
# 
#     @property
#     def hypercolumn_layers(self):
#         """Suggested hypercolumn layers"""
#         return []
# 
#     @property
#     def layers(self):
#         return [name for name, _ in self.hypercolumn_layers]
# 
#     def build(self):
#         raise NotImplemented('Abstract base class')
# 
#     def save_caffemodel(self, path, session, verbose=False):
#         raise NotImplemented('Abstract base class')


# Path: selfsup/multi/basenets/resnet152.py
from .basenet import BaseNet
import selfsup.model.resnet152_bn
import selfsup

            ('conv1', 2.0),
            ('res2a', 4.0),
            ('res2b', 4.0),
            ('res2c', 4.0),
            ('res3b1', 8.0),
            ('res3b4', 8.0),
            ('res3b7', 8.0),
            ('res4b5', 16.0),
            ('res4b10', 16.0),
            ('res4b15', 16.0),
            ('res4b20', 16.0),
            ('res4b25', 16.0),
            ('res4b30', 16.0),
            ('res4b35', 16.0),
            ('res5c', 32.0),
        ]

    def build(self, x01, phase_test, global_step, settings={}):
        info = selfsup.info.create(scale_summary=True)
        #info['config']['return_weights'] = True
        x = x01 - MEAN
        z = selfsup.model.resnet152_bn.build_network(x, info=info,
                convolutional=settings.get('convolutional', False),
                final_layer=False,
                #squeezed=True,
                phase_test=phase_test)
        info['activations']['x01'] = x01
        info['activations']['x'] = x
        info['activations']['top'] = z
        info['weights']['firstconv:weights'] = info['weights']['conv1:weights']

        info['weights']['firstconv:biases'] = None #info['weights']['conv1:biases']