def load_cudanet(self,output_shapes): #1. data layer self.add_layers(self.dataset,provides=['data', 'label']) #2. jeffnet layer cuda_layers = pickle.load(open(self.jf_opt.net_file)) exclude_list = ['probs'] for cuda_layer in cuda_layers: if cuda_layer['name'] not in exclude_list: decaf_layer = translator.translate_layer(cuda_layer, output_shapes) if not decaf_layer: continue needs = [] for idx in cuda_layer['inputs']: if cuda_layers[idx]['type'] == DATA_TYPENAME: needs.append(cuda_layers[idx]['name']) else: needs.append(cuda_layers[idx]['name'] + OUTPUT_AFFIX) provide = cuda_layer['name'] + OUTPUT_AFFIX self.add_layers(decaf_layer, needs=needs, provides=provide) #3. loss layer #loss_layer = core_layers.SquaredLossLayer(name='loss') loss_layer = dw_LossLayer(name='loss') self.add_layer(loss_layer,needs=['fc8_cudanet_out', 'label']) self.finish() self.layers['loss'].set_label(self.layers['input']._sources[1])
def dw_cudacnn(cuda_layers, output_shapes): decaf_net = dw_Net() #decaf_net = base.Net() exclude_list = [] db = 1 if db: #1. data layer decaf_net.add_layers(dw_data(),provides=['data', 'label']) #2. jeffnet layer exclude_list = ['probs'] for cuda_layer in cuda_layers: if cuda_layer['name'] not in exclude_list: decaf_layer = translator.translate_layer(cuda_layer, output_shapes) if not decaf_layer: continue needs = [] for idx in cuda_layer['inputs']: if cuda_layers[idx]['type'] == DATA_TYPENAME: needs.append(cuda_layers[idx]['name']) else: needs.append(cuda_layers[idx]['name'] + OUTPUT_AFFIX) provide = cuda_layer['name'] + OUTPUT_AFFIX decaf_net.add_layers(decaf_layer, needs=needs, provides=provide) if db: #3. loss layer #loss_layer = core_layers.SquaredLossLayer(name='loss') loss_layer = dw_LossLayer(name='loss') decaf_net.add_layer(loss_layer,needs=['fc8_cudanet_out', 'label']) decaf_net.finish() return decaf_net