# 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
            ('conv2', 2.0),
            ('conv2b', 2.0),
            ('conv3', 4.0),
            ('conv3b', 4.0),
            ('conv4', 8.0),
            ('conv4b', 8.0),
            #('fc6',   32.0),
        ]

    def build(self, x, phase_test, global_step, settings={}):
        self._global_step = global_step
        self._phase_test = phase_test

        info = selfsup.info.create(scale_summary=True)
        info['config']['save_pre'] = True
        z = selfsup.model.cnet.build_network_small(x, info=info,# parameters=data,
                                 convolutional=False, final_layer_channels=None,
                                 phase_test=phase_test,
                                 use_dropout=True,
                                 use_batch_norm=self._use_batch_norm,
                                 global_step=global_step,
                                 top_channels=100 if self._thin_top else None,
                                 )

        info['activations']['x'] = x
        info['activations']['top'] = z
        info['weights']['firstconv:weights'] = info['weights']['conv1:weights']
        info['weights']['firstconv:biases'] = info['weights']['conv1:biases']
        return info


# 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

            ('conv2', 2.0),
            ('conv2b', 2.0),
            ('conv3', 4.0),
            ('conv3b', 4.0),
            ('conv4', 8.0),
            ('conv4b', 8.0),
            #('fc6',   32.0),
        ]

    def build(self, x, phase_test, global_step, settings={}):
        self._global_step = global_step
        self._phase_test = phase_test

        info = selfsup.info.create(scale_summary=True)
        info['config']['save_pre'] = True
        z = selfsup.model.cnet.build_network_small(x, info=info,# parameters=data,
                                 convolutional=False, final_layer_channels=None,
                                 phase_test=phase_test,
                                 use_dropout=True,
                                 use_batch_norm=self._use_batch_norm,
                                 global_step=global_step,
                                 top_channels=100 if self._thin_top else None,
                                 )

        info['activations']['x'] = x
        info['activations']['top'] = z
        info['weights']['firstconv:weights'] = info['weights']['conv1:weights']
        info['weights']['firstconv:biases'] = info['weights']['conv1:biases']
        return info


    def decoder(self, z, channels=1, multiple=4, from_name=None, settings=DummyDict(), info=DummyDict()):