# 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/util.py
# class DummyDict(object):
#     def __init__(self):
#         pass
#     def __getitem__(self, item):
#         return DummyDict()
#     def __setitem__(self, item, value):
#         return DummyDict()
#     def get(self, item, default=None):
#         if default is None:
#             return DummyDict()
#         else:
#             return default


from .basenet import BaseNet
from selfsup.util import DummyDict
import selfsup.model.cnet
import selfsup

class Simple32(BaseNet):
    def __init__(self, use_batch_norm=False, thin_top=False):
        self._use_batch_norm = use_batch_norm
        self._thin_top = thin_top

    @property
    def name(self):
        return 'simple32'

    @property
    def canonical_input_size(self):
        return 32

    @property
    def hypercolumn_layers(self):
        return [
            #('x',     1.0),
            ('conv1', 1.0),
            ('conv1b', 1.0),
            ('conv2', 2.0),
            ('conv2b', 2.0),
            ('conv3', 4.0),
            ('conv3b', 4.0),

# 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/util.py
# class DummyDict(object):
#     def __init__(self):
#         pass
#     def __getitem__(self, item):
#         return DummyDict()
#     def __setitem__(self, item, value):
#         return DummyDict()
#     def get(self, item, default=None):
#         if default is None:
#             return DummyDict()
#         else:
#             return default


# Path: selfsup/multi/basenets/simple32.py
from .basenet import BaseNet
from selfsup.util import DummyDict
import selfsup.model.cnet
import selfsup


class Simple32(BaseNet):
    def __init__(self, use_batch_norm=False, thin_top=False):
        self._use_batch_norm = use_batch_norm
        self._thin_top = thin_top

    @property
    def name(self):
        return 'simple32'

    @property
    def canonical_input_size(self):
        return 32

    @property
    def hypercolumn_layers(self):
        return [
            #('x',     1.0),
            ('conv1', 1.0),
            ('conv1b', 1.0),
            ('conv2', 2.0),
            ('conv2b', 2.0),
            ('conv3', 4.0),
            ('conv3b', 4.0),

            ('conv4', 8.0),