Source code for cntk.contrib.crosstalkcaffe.adapter.bvlccaffe.caffeimpl

# ==============================================================================
# Copyright (c) Microsoft. All rights reserved.
# Licensed under the MIT license. See LICENSE.md file in the project root
# for full license information.
# ==============================================================================
import sys
from cntk.contrib.crosstalkcaffe.unimodel.cntkmodel import CntkLayerType

CAFFE_LAYER_WRAPPER = {
    'Convolution': CntkLayerType.convolution,
    'BatchNorm': CntkLayerType.batch_norm,
    'ReLU': CntkLayerType.relu,
    'Pooling': CntkLayerType.pooling,
    'Eltwise_SUM': CntkLayerType.plus,
    'InnerProduct': CntkLayerType.dense,
    'Softmax': CntkLayerType.softmax,
    'Concat': CntkLayerType.splice,
    'SoftmaxWithLoss': CntkLayerType.cross_entropy_with_softmax,
    'Accuracy': CntkLayerType.classification_error,
    'Dropout': CntkLayerType.dropout,
    'LRN': CntkLayerType.lrn,
    'PSROIPooling': CntkLayerType.psroi_pooling
}


[docs]def singleton(class_): ''' singleton instace ''' instances = {} def _get_instance(*args, **kwargs): if class_ not in instances: instances[class_] = class_(*args, **kwargs) return instances[class_] return _get_instance
@singleton
[docs]class CaffeResolver(object): ''' Load Caffe related packages and functions ''' def __init__(self): self.caffe = None self.caffepb = None self.net = None self.solver = None self._runtime_support() def _runtime_support(self): try: import caffe self.caffe = caffe self.caffepb = caffe.proto.caffe_pb2 except ImportError: from cntk.contrib.crosstalkcaffe.adapter.bvlccaffe import caffe_pb2 self.caffepb = caffe_pb2 self.net = self.caffepb.NetParameter self.solver = self.caffepb.SolverParameter def runtime(self): ''' Whether to have Caffe runtime support Args: None Return: bool: True for detected runtime Caffe, otherwise False ''' return True if self.caffe else False