我们从Python开源项目中,提取了以下6个代码示例,用于说明如何使用lasagne.objectives()。
def build_model(self): import theano.tensor as T self.x = T.ftensor4('x') self.y = T.lvector('y') self.lr = T.scalar('lr') net = build_model_resnet50(input_shape=(None, 3, 224, 224)) if self.verbose: print('Total number of layers:', len(lasagne.layers.get_all_layers(net['prob']))) self.output_layer = net['prob'] from lasagne.layers import get_output self.output = lasagne.layers.get_output(self.output_layer, self.x, deterministic=False) self.cost = lasagne.objectives.categorical_crossentropy(self.output, self.y).mean() from lasagne.objectives import categorical_accuracy self.error = 1-categorical_accuracy(self.output, self.y, top_k=1).mean() self.error_top_5 = 1-categorical_accuracy(self.output, self.y, top_k=5).mean()
def compile_val(self): if self.verbose: print('compiling validation function...') import theano from lasagne.layers import get_output output_val = lasagne.layers.get_output(self.output_layer, self.x, deterministic=True) from lasagne.objectives import categorical_accuracy, categorical_crossentropy cost = categorical_crossentropy(output_val, self.y).mean() error = 1-categorical_accuracy(output_val, self.y, top_k=1).mean() error_top_5 = 1-categorical_accuracy(output_val, self.y, top_k=5).mean() self.val_fn= theano.function([self.subb_ind], [cost,error,error_top_5], updates=[], givens=[(self.x, self.shared_x_slice), (self.y, self.shared_y_slice)] )
def build_model(self): import theano.tensor as T self.x = T.ftensor4('x') self.y = T.lvector('y') self.lr = T.scalar('lr') net = build_model_vgg16(input_shape=(None, 3, 224, 224), verbose=self.verbose) self.output_layer = net['prob'] from lasagne.layers import get_output self.output = lasagne.layers.get_output(self.output_layer, self.x, deterministic=False) self.cost = lasagne.objectives.categorical_crossentropy(self.output, self.y).mean() from lasagne.objectives import categorical_accuracy self.error = 1-categorical_accuracy(self.output, self.y, top_k=1).mean() self.error_top_5 = 1-categorical_accuracy(self.output, self.y, top_k=5).mean()
def build_model(self): import theano.tensor as T self.x = T.ftensor4('x') self.y = T.lvector('y') self.lr = T.scalar('lr') net = build_model_resnet152(input_shape=(None, 3, 224, 224)) self.output_layer = net['prob'] from lasagne.layers import get_output self.output = lasagne.layers.get_output(self.output_layer, self.x, deterministic=False) self.cost = lasagne.objectives.categorical_crossentropy(self.output, self.y).mean() from lasagne.objectives import categorical_accuracy self.error = 1-categorical_accuracy(self.output, self.y, top_k=1).mean() self.error_top_5 = 1-categorical_accuracy(self.output, self.y, top_k=5).mean()
def __init__(self): # Define inputs input_var = T.ftensor4('input_var') # input images (batchx3x64x64) labels_classifier_var = T.ivector('labels_classifier_var') # labels for images labels_domain_var = T.ivector('labels_domain_var') # labels for domain (1 for source, 0 for target) learning_rate = T.fscalar('learning_rate') # Define classifier networks network_classifier = self.network_classifier(input_var) network_discriminator = self.network_discriminator(network_classifier['classifier/pool1']) # Define outputs prediction_classifier = get_output(network_classifier['classifier/output']) # prob image classification prediction_discriminator = get_output(network_discriminator['discriminator/output']) # prob image domain (should be 1 for source) # Define losses (objectives) loss_classifier_only = T.mean(categorical_crossentropy(prediction_classifier, labels_classifier_var) * labels_domain_var) loss_discriminator = T.mean(categorical_crossentropy(prediction_discriminator, labels_domain_var)) loss_classifier = loss_classifier_only - loss_discriminator # Define performance perf_classifier_only = categorical_accuracy(prediction_classifier, labels_classifier_var).mean() perf_discriminator = categorical_accuracy(prediction_discriminator, labels_domain_var).mean() # Define params params_classifier = lasagne.layers.get_all_params(network_classifier['classifier/output'], trainable=True) params_discriminator = lasagne.layers.get_all_params(network_discriminator['discriminator/output'], trainable=True) params_discriminator = [param for param in params_discriminator if 'discriminator' in param.name] # Define updates updates_classifier = lasagne.updates.adam(loss_classifier, params_classifier, learning_rate=learning_rate) updates_classifier_only = lasagne.updates.adam(loss_classifier_only, params_classifier, learning_rate=learning_rate) updates_discriminator = lasagne.updates.adam(loss_discriminator, params_discriminator, learning_rate=learning_rate) # Define training functions self.train_fn_classifier = theano.function( [input_var, labels_classifier_var, labels_domain_var, learning_rate], [loss_classifier, loss_classifier_only, prediction_classifier], updates=updates_classifier) self.train_fn_classifier_only = theano.function( [input_var, labels_classifier_var, labels_domain_var, learning_rate], [loss_classifier, loss_classifier_only, prediction_classifier], updates=updates_classifier_only) self.train_fn_discriminator = theano.function( [input_var, labels_domain_var, learning_rate], [loss_discriminator, prediction_discriminator], updates=updates_discriminator) # Define validation functions self.valid_fn_classifier = theano.function( [input_var, labels_classifier_var], [perf_classifier_only, prediction_classifier]) self.valid_fn_discriminator = theano.function( [input_var, labels_domain_var], [perf_discriminator, prediction_discriminator])