Python keras.backend.categorical_crossentropy() Examples
The following are 30
code examples of keras.backend.categorical_crossentropy().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
keras.backend
, or try the search function
.
Example #1
Source File: uq_keras_utils.py From Benchmarks with MIT License | 6 votes |
def abstention_loss(y_true, y_pred): """ Function to compute abstention loss. It is composed by two terms: (i) original loss of the multiclass classification problem, (ii) cost associated to the abstaining samples. Parameters ---------- y_true : keras tensor True values to predict y_pred : keras tensor Prediction made by the model. It is assumed that this keras tensor includes extra columns to store the abstaining classes. """ cost = 0 base_pred = (1-mask)*y_pred base_true = y_true base_cost = K.categorical_crossentropy(base_true,base_pred) abs_pred = K.mean(mask*y_pred, axis=-1) cost = (1.-abs_pred)*base_cost - mu*K.log(1.-abs_pred) return cost
Example #2
Source File: augmented_model.py From tying-wv-and-wc with MIT License | 6 votes |
def augmented_loss(self, y_true, y_pred): _y_pred = Activation("softmax")(y_pred) loss = K.categorical_crossentropy(_y_pred, y_true) # y is (batch x seq x vocab) y_indexes = K.argmax(y_true, axis=2) # turn one hot to index. (batch x seq) y_vectors = self.embedding(y_indexes) # lookup the vector (batch x seq x vector_length) #v_length = self.setting.vector_length #y_vectors = K.reshape(y_vectors, (-1, v_length)) #y_t = K.map_fn(lambda v: K.dot(self.embedding.embeddings, K.reshape(v, (-1, 1))), y_vectors) #y_t = K.squeeze(y_t, axis=2) # unknown but necessary operation #y_t = K.reshape(y_t, (-1, self.sequence_size, self.vocab_size)) # vector x embedding dot products (batch x seq x vocab) y_t = tf.tensordot(y_vectors, K.transpose(self.embedding.embeddings), 1) y_t = K.reshape(y_t, (-1, self.sequence_size, self.vocab_size)) # explicitly set shape y_t = K.softmax(y_t / self.temperature) _y_pred_t = Activation("softmax")(y_pred / self.temperature) aug_loss = kullback_leibler_divergence(y_t, _y_pred_t) loss += (self.gamma * self.temperature) * aug_loss return loss
Example #3
Source File: learn_and_fuzz_2.py From iust_deep_fuzz with MIT License | 6 votes |
def load_model_and_generate(self, model_name='model7_laf', epochs=10): dt = datetime.datetime.now().strftime('_date_%Y-%m-%d_%H-%M-%S') dir_name = './generated_results/pdfs/' + model_name + dt + 'epochs_' + str(epochs) + '/' if not os.path.exists(dir_name): os.makedirs(dir_name) model = load_model('./model_checkpoint/best_models/' 'model7_laf_date_2018-06-19_12-23-39_epoch_30_val_loss_0.8395.h5', compile=False) optimizer = Adam(lr=0.0001) # Reduce from 0.001 to 0.0001 for model_10 model.compile(optimizer=optimizer, loss='categorical_crossentropy', # metrics=['accuracy'] metrics=['accuracy']) seq = self.generate_and_fuzz_new_samples(model=model, model_name=model_name, epochs=epochs, current_epoch=10, dir_name=dir_name) list_of_obj = preprocess.get_list_of_object(seq=seq, is_sort=False) return list_of_obj
Example #4
Source File: liver_model.py From MCF-3D-CNN with MIT License | 6 votes |
def build_3dcnn_model(self, fusion_type, Fusion): if len(Fusion[0]) == 1: input_shape = (32, 32, len(Fusion)) model_in,model = self.cnn_2D(input_shape) else: input_shape = (32, 32, 5, len(Fusion)) model_in,model = self.cnn_3D(input_shape) model = Dropout(0.5)(model) model = Dense(32, activation='relu', name = 'fc2')(model) model = Dense(self.config.classes, activation='softmax', name = 'fc3')(model) model = Model(input=model_in,output=model) # 统计参数 # model.summary() plot_model(model,to_file='experiments/img/' + str(Fusion) + fusion_type + r'_model.png',show_shapes=True) print(' Saving model Architecture') adam = Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-8) # model.compile(optimizer=adam, loss=self.mycrossentropy, metrics=['accuracy']) #有改善,但不稳定 model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['accuracy']) return model
Example #5
Source File: learn_and_fuzz_3_sample_fuzz.py From iust_deep_fuzz with MIT License | 6 votes |
def load_model_and_generate(self, model_name='model7_laf', epochs=50): dt = datetime.datetime.now().strftime('_date_%Y-%m-%d_%H-%M-%S') dir_name = './generated_results/pdfs/' + model_name + dt + 'epochs_' + str(epochs) + '/' if not os.path.exists(dir_name): os.makedirs(dir_name) model = load_model('./model_checkpoint/best_models/' 'model7_laf_date_2018-06-19_12-23-39_epoch_50_val_loss_0.7242.h5', compile=False) optimizer = Adam(lr=0.0001) # Reduce from 0.001 to 0.0001 for model_10 model.compile(optimizer=optimizer, loss='categorical_crossentropy', # metrics=['accuracy'] metrics=['accuracy']) seq = self.generate_and_fuzz_new_samples(model=model, model_name=model_name, epochs=epochs, current_epoch=50, dir_name=dir_name) list_of_obj = preprocess.get_list_of_object(seq=seq, is_sort=False) return list_of_obj
Example #6
Source File: train_colorful.py From DeepLearningImplementations with MIT License | 6 votes |
def categorical_crossentropy_color(y_true, y_pred): # Flatten n, h, w, q = y_true.shape y_true = K.reshape(y_true, (n * h * w, q)) y_pred = K.reshape(y_pred, (n * h * w, q)) weights = y_true[:, 313:] # extract weight from y_true weights = K.concatenate([weights] * 313, axis=1) y_true = y_true[:, :-1] # remove last column y_pred = y_pred[:, :-1] # remove last column # multiply y_true by weights y_true = y_true * weights cross_ent = K.categorical_crossentropy(y_pred, y_true) cross_ent = K.mean(cross_ent, axis=-1) return cross_ent
Example #7
Source File: attack_utils.py From ensemble-adv-training with MIT License | 6 votes |
def gen_adv_loss(logits, y, loss='logloss', mean=False): """ Generate the loss function. """ if loss == 'training': # use the model's output instead of the true labels to avoid # label leaking at training time y = K.cast(K.equal(logits, K.max(logits, 1, keepdims=True)), "float32") y = y / K.sum(y, 1, keepdims=True) out = K.categorical_crossentropy(logits, y, from_logits=True) elif loss == 'logloss': out = K.categorical_crossentropy(logits, y, from_logits=True) else: raise ValueError("Unknown loss: {}".format(loss)) if mean: out = K.mean(out) else: out = K.sum(out) return out
Example #8
Source File: metadata_neural_fuzz_pdf_obj.py From iust_deep_fuzz with MIT License | 6 votes |
def load_model_and_generate(self, model_name='model_7', epochs=38): dt = datetime.datetime.now().strftime('_date_%Y-%m-%d_%H-%M-%S') dir_name = './generated_results/pdfs/' + model_name + dt + 'epochs_' + str(epochs) + '/' if not os.path.exists(dir_name): os.makedirs(dir_name) model = load_model('./model_checkpoint/best_models/' 'model_7_date_2018-05-14_21-44-21_epoch_38_val_loss_0.3300.h5', compile=False) optimizer = Adam(lr=0.001) # Reduce from 0.001 to 0.0001 just for model_10 model.compile(optimizer=optimizer, loss='categorical_crossentropy', # metrics=['accuracy'] metrics=['accuracy']) seq = self.generate_and_fuzz_new_samples(model=model, model_name=model_name, epochs=epochs, current_epoch=38, dir_name=dir_name) list_of_obj = preprocess.get_list_of_object(seq=seq, is_sort=False) return list_of_obj
Example #9
Source File: attack_utils.py From blackbox-attacks with MIT License | 6 votes |
def gen_adv_loss(logits, y, loss='logloss', mean=False): """ Generate the loss function. """ if loss == 'training': # use the model's output instead of the true labels to avoid # label leaking at training time y = K.cast(K.equal(logits, K.max(logits, 1, keepdims=True)), "float32") y = y / K.sum(y, 1, keepdims=True) out = K.categorical_crossentropy(logits, y, from_logits=True) elif loss == 'logloss': # out = K.categorical_crossentropy(logits, y, from_logits=True) out = tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=y) out = tf.reduce_mean(out) else: raise ValueError("Unknown loss: {}".format(loss)) if mean: out = tf.mean(out) # else: # out = K.sum(out) return out
Example #10
Source File: attack_utils.py From blackbox-attacks with MIT License | 6 votes |
def gen_adv_loss(logits, y, loss='logloss', mean=False): """ Generate the loss function. """ if loss == 'training': # use the model's output instead of the true labels to avoid # label leaking at training time y = K.cast(K.equal(logits, K.max(logits, 1, keepdims=True)), "float32") y = y / K.sum(y, 1, keepdims=True) out = K.categorical_crossentropy(y, logits, from_logits=True) elif loss == 'logloss': out = K.categorical_crossentropy(y, logits, from_logits=True) else: raise ValueError("Unknown loss: {}".format(loss)) if mean: out = K.mean(out) # else: # out = K.sum(out) return out
Example #11
Source File: learn_and_fuzz_3_sample_fuzz.py From iust_deep_fuzz with MIT License | 5 votes |
def cross_entropy(y_true, y_pred): """ Compute cross_entropy loss metric :param y_true: :param y_pred: :return: """ return K.categorical_crossentropy(y_true, y_pred)
Example #12
Source File: learn_and_fuzz_3_sample_fuzz.py From iust_deep_fuzz with MIT License | 5 votes |
def perplexity(y_true, y_pred): """ Compute perplexity metric :param y_true: :param y_pred: :return: """ ce = K.categorical_crossentropy(y_true, y_pred) # pp = K.pow(np.e, ce) # Or 2? # pp = K.pow(2., ce) # Or np.e pp = K.exp(ce) # print('Perplexity value in perplexity function: ', K.eval(pp)) return pp
Example #13
Source File: data_neural_fuzz_pdf_obj.py From iust_deep_fuzz with MIT License | 5 votes |
def perplexity(y_true, y_pred): """ Compute perplexity metric :param y_true: :param y_pred: :return: """ ce = K.categorical_crossentropy(y_true, y_pred) # pp = K.pow(np.e, ce) # Or 2? # pp = K.pow(2., ce) # Or np.e pp = K.exp(ce) # print('Perplexity value in perplexity function: ', K.eval(pp)) return pp
Example #14
Source File: train.py From show-attend-and-tell-keras with MIT License | 5 votes |
def masked_categorical_crossentropy(y_true, y_pred): mask_value = le._word_index_map["<NULL>"] y_true_id = K.argmax(y_true) mask = K.cast(K.equal(y_true_id, mask_value), K.floatx()) mask = 1.0 - mask loss = K.categorical_crossentropy(y_true, y_pred) * mask # take average w.r.t. the number of unmasked entries return K.sum(loss) / K.sum(mask)
Example #15
Source File: keras_models.py From emnlp2017-relation-extraction with Apache License 2.0 | 5 votes |
def masked_categorical_crossentropy(y_true, y_pred): mask = K.equal(y_true[..., 0], K.variable(1)) mask = 1 - K.cast(mask, K.floatx()) loss = K.categorical_crossentropy(y_true, y_pred) * mask return loss
Example #16
Source File: train.py From sp-society-camera-model-identification with GNU General Public License v3.0 | 5 votes |
def categorical_crossentropy_and_variance(y_true, y_pred): return K.categorical_crossentropy(y_true, y_pred) + 10 * K.var(K.mean(y_pred, axis=0))
Example #17
Source File: custom_loss.py From nlp_toolkit with MIT License | 5 votes |
def custom_categorical_crossentropy(y_true, y_pred, n): return K.categorical_crossentropy(y_true, y_pred[:, :n])
Example #18
Source File: ae.py From graph-representation-learning with MIT License | 5 votes |
def masked_categorical_crossentropy(y_true, y_pred): """ Categorical/softmax cross-entropy loss with masking """ mask = y_true[:, -1] y_true = y_true[:, :-1] loss = K.categorical_crossentropy(target=y_true, output=y_pred, from_logits=True) mask = K.cast(mask, dtype=np.float32) loss *= mask return K.mean(loss, axis=-1)
Example #19
Source File: custom_cost.py From LIVE_SER with Apache License 2.0 | 5 votes |
def w_categorical_crossentropy(y_true, y_pred): nb_cl = len(weights) final_mask = K.zeros_like(y_pred[..., 0]) y_pred_max = K.max(y_pred, axis=-1) y_pred_max = K.expand_dims(y_pred_max) y_pred_max_mat = K.equal(y_pred, y_pred_max) for c_p, c_t in itertools.product(range(nb_cl), range(nb_cl)): w = K.cast(weights[c_t, c_p], K.floatx()) y_p = K.cast(y_pred_max_mat[..., c_p], K.floatx()) y_t = K.cast(y_pred_max_mat[..., c_t], K.floatx()) final_mask += w * y_p * y_t return K.categorical_crossentropy(y_true, y_pred) * final_mask
Example #20
Source File: custom_cost.py From LIVE_SER with Apache License 2.0 | 5 votes |
def w_categorical_crossentropy(self, y_true, y_pred): nb_cl = len(self.weights) final_mask = K.zeros_like(y_pred[..., 0]) y_pred_max = K.max(y_pred, axis=-1) y_pred_max = K.expand_dims(y_pred_max) y_pred_max_mat = K.equal(y_pred, y_pred_max) for c_p, c_t in itertools.product(range(nb_cl), range(nb_cl)): w = K.cast(self.weights[c_t, c_p], K.floatx()) y_p = K.cast(y_pred_max_mat[..., c_p], K.floatx()) y_t = K.cast(y_pred_max_mat[..., c_t], K.floatx()) final_mask += w * y_p * y_t return K.categorical_crossentropy(y_true, y_pred) * final_mask
Example #21
Source File: ent_rel_predictor.py From EARL with GNU General Public License v3.0 | 5 votes |
def w_categorical_crossentropy(y_true, y_pred, weights): nb_cl = len(weights) final_mask = K.zeros_like(y_pred[:, 0]) y_pred_max = K.max(y_pred, axis=1) y_pred_max = K.expand_dims(y_pred_max, 1) y_pred_max_mat = K.equal(y_pred, y_pred_max) for c_p, c_t in product(range(nb_cl), range(nb_cl)): final_mask += (K.cast(weights[c_t, c_p],K.floatx()) * K.cast(y_pred_max_mat[:, c_p] ,K.floatx())* K.cast(y_true[:, c_t],K.floatx())) return K.categorical_crossentropy(y_pred, y_true) * final_mask
Example #22
Source File: model.py From alphagozero with MIT License | 5 votes |
def loss(y_true, y_pred): mse = K.mean(K.square(y_pred - y_true), axis=-1) categorical_crossentropy = K.categorical_crossentropy(y_true, y_pred) return mse + categorical_crossentropy
Example #23
Source File: utils.py From Look-Into-Person with MIT License | 5 votes |
def cross_entropy(y_true, y_pred): y_true = K.reshape(y_true, (-1, num_classes)) y_pred = K.reshape(y_pred, (-1, num_classes)) idx_max = K.argmax(y_true, axis=1) weights = K.gather(prior_factor, idx_max) weights = K.reshape(weights, (-1, 1)) # multiply y_true by weights y_true = y_true * weights cross_ent = K.categorical_crossentropy(y_pred, y_true) cross_ent = K.mean(cross_ent, axis=-1) return cross_ent
Example #24
Source File: focal_loss.py From 3D-CNNs-for-Liver-Classification with Apache License 2.0 | 5 votes |
def focal_loss_fixed(target_tensor, prediction_tensor): ''' prediction_tensor is the output tensor with shape [None, 100], where 100 is the number of classes target_tensor is the label tensor, same shape as predcition_tensor ''' import tensorflow as tf from tensorflow.python.ops import array_ops from keras import backend as K classes_num=[1] gamma = 2. alpha = .75 e = 0.1 #1# get focal loss with no balanced weight which presented in paper function (4) zeros = array_ops.zeros_like(prediction_tensor, dtype=prediction_tensor.dtype) one_minus_p = array_ops.where(target_tensor > zeros, target_tensor - prediction_tensor, zeros) FT = -1 * (one_minus_p ** gamma) * tf.log(tf.clip_by_value(prediction_tensor, 1e-8, 1.0)) #2# get balanced weight alpha classes_weight = array_ops.zeros_like(prediction_tensor, dtype=prediction_tensor.dtype) total_num = float(sum(classes_num)) classes_w_t1 = [ total_num / ff for ff in classes_num ] sum_ = sum(classes_w_t1) classes_w_t2 = [ ff/sum_ for ff in classes_w_t1 ] #scale classes_w_tensor = tf.convert_to_tensor(classes_w_t2, dtype=prediction_tensor.dtype) classes_weight += classes_w_tensor alpha = array_ops.where(target_tensor > zeros, classes_weight, zeros) #3# get balanced focal loss balanced_fl = alpha * FT balanced_fl = tf.reduce_sum(balanced_fl) #4# add other op to prevent overfit # reference : https://spaces.ac.cn/archives/4493 nb_classes = len(classes_num) fianal_loss = (1-e) * balanced_fl + e * K.categorical_crossentropy(K.ones_like(prediction_tensor)/nb_classes, prediction_tensor) return fianal_loss
Example #25
Source File: model.py From Speaker-Diarization with Apache License 2.0 | 5 votes |
def amsoftmax_loss(y_true, y_pred, scale=30, margin=0.35): y_pred = y_true * (y_pred - margin) + (1 - y_true) * y_pred y_pred *= scale return K.categorical_crossentropy(y_true, y_pred, from_logits=True)
Example #26
Source File: my_layers.py From DAS with Apache License 2.0 | 5 votes |
def call(self, x, mask=None): pred = x[0] target = x[1] weight = x[2] error = K.categorical_crossentropy(target, pred) loss = error * weight return loss
Example #27
Source File: C_Focal_loss.py From TF.Keras-Commonly-used-models with Apache License 2.0 | 5 votes |
def focal_loss(classes_num, gamma=2., alpha=.25, e=0.1): # classes_num contains sample number of each classes def focal_loss_fixed(target_tensor, prediction_tensor): ''' prediction_tensor is the output tensor with shape [None, 100], where 100 is the number of classes target_tensor is the label tensor, same shape as predcition_tensor ''' import tensorflow as tf from tensorflow.python.ops import array_ops from keras import backend as K #1# get focal loss with no balanced weight which presented in paper function (4) zeros = array_ops.zeros_like(prediction_tensor, dtype=prediction_tensor.dtype) one_minus_p = array_ops.where(tf.greater(target_tensor,zeros), target_tensor - prediction_tensor, zeros) FT = -1 * (one_minus_p ** gamma) * tf.log(tf.clip_by_value(prediction_tensor, 1e-8, 1.0)) #2# get balanced weight alpha classes_weight = array_ops.zeros_like(prediction_tensor, dtype=prediction_tensor.dtype) total_num = float(sum(classes_num)) classes_w_t1 = [ total_num / ff for ff in classes_num ] sum_ = sum(classes_w_t1) classes_w_t2 = [ ff/sum_ for ff in classes_w_t1 ] #scale classes_w_tensor = tf.convert_to_tensor(classes_w_t2, dtype=prediction_tensor.dtype) classes_weight += classes_w_tensor alpha = array_ops.where(tf.greater(target_tensor, zeros), classes_weight, zeros) #3# get balanced focal loss balanced_fl = alpha * FT balanced_fl = tf.reduce_mean(balanced_fl) #4# add other op to prevent overfit # reference : https://spaces.ac.cn/archives/4493 nb_classes = len(classes_num) fianal_loss = (1-e) * balanced_fl + e * K.categorical_crossentropy(K.ones_like(prediction_tensor)/nb_classes, prediction_tensor) return fianal_loss return focal_loss_fixed
Example #28
Source File: keras_models.py From emnlp2017-relation-extraction with Apache License 2.0 | 5 votes |
def model_LSTMbaseline(p, embedding_matrix, max_sent_len, n_out): print("Parameters:", p) # Take sentence encoded as indices and convert it to embeddings sentence_input = layers.Input(shape=(max_sent_len,), dtype='int32', name='sentence_input') word_embeddings = layers.Embedding(output_dim=embedding_matrix.shape[1], input_dim=embedding_matrix.shape[0], input_length=max_sent_len, weights=[embedding_matrix], mask_zero=True, trainable=False)(sentence_input) word_embeddings = layers.Dropout(p['dropout1'])(word_embeddings) # Take token markers that identify entity positions, convert to position embeddings entity_markers = layers.Input(shape=(max_sent_len,), dtype='int8', name='entity_markers') pos_embeddings = layers.Embedding(output_dim=p['position_emb'], input_dim=POSITION_VOCAB_SIZE, input_length=max_sent_len, mask_zero=True, embeddings_regularizer=regularizers.l2(), trainable=True)(entity_markers) # Merge word and position embeddings and apply the specified amount of RNN layers x = layers.concatenate([word_embeddings, pos_embeddings]) for i in range(p["rnn1_layers"]-1): lstm_layer = layers.LSTM(p['units1'], return_sequences=True) if p['bidirectional']: lstm_layer = layers.Bidirectional(lstm_layer) x = lstm_layer(x) lstm_layer = layers.LSTM(p['units1'], return_sequences=False) if p['bidirectional']: lstm_layer = layers.Bidirectional(lstm_layer) sentence_vector = lstm_layer(x) # Apply softmax sentence_vector = layers.Dropout(p['dropout1'])(sentence_vector) main_output = layers.Dense(n_out, activation="softmax", name='main_output')(sentence_vector) model = models.Model(inputs=[sentence_input, entity_markers], outputs=[main_output]) model.compile(optimizer=p['optimizer'], loss='categorical_crossentropy', metrics=['accuracy']) return model
Example #29
Source File: keras_models.py From emnlp2017-relation-extraction with Apache License 2.0 | 5 votes |
def model_CNN(p, embedding_matrix, max_sent_len, n_out): print("Parameters:", p) # Take sentence encoded as indices split in three parts and convert it to embeddings sentence_input = layers.Input(shape=(max_sent_len,), dtype='int32', name='sentence_input') word_embeddings = layers.Embedding(output_dim=embedding_matrix.shape[1], input_dim=embedding_matrix.shape[0], input_length=max_sent_len, weights=[embedding_matrix], mask_zero=True, trainable=False)(sentence_input) word_embeddings = layers.Dropout(p['dropout1'])(word_embeddings) # Take token markers that identify entity positions, convert to position embeddings entity_markers = layers.Input(shape=(2, max_sent_len,), dtype='int8', name='entity_markers') pos_embeddings = layers.wrappers.TimeDistributed(layers.Embedding(output_dim=p['position_emb'], input_dim=(max_sent_len*2)+1, input_length=max_sent_len, mask_zero=False, embeddings_regularizer = regularizers.l2(), trainable=True), name='pos_embedding')(entity_markers) pos_embeddings = layers.Permute((2,1,3))(pos_embeddings) pos_embeddings = layers.Reshape((max_sent_len, p['position_emb']*2))(pos_embeddings) # Merge word and position embeddings and apply the specified amount of CNN layers x = layers.concatenate([word_embeddings, pos_embeddings]) x = MaskedConvolution1D(nb_filter=p['units1'], filter_length=p['window_size'], border_mode='same')(x) sentence_vector = MaskedGlobalMaxPooling1D()(x) sentence_vector = layers.Lambda(lambda l: K.tanh(l))(sentence_vector) # Apply softmax sentence_vector = layers.Dropout(p['dropout1'])(sentence_vector) main_output = layers.Dense(n_out, activation="softmax", name='main_output')(sentence_vector) model = models.Model(input=[sentence_input, entity_markers], output=[main_output]) model.compile(optimizer=p['optimizer'], loss='categorical_crossentropy', metrics=['accuracy']) return model
Example #30
Source File: model.py From deep-spell-checkr with MIT License | 5 votes |
def truncated_loss(y_true, y_pred): y_true = y_true[:, :VAL_MAXLEN, :] y_pred = y_pred[:, :VAL_MAXLEN, :] loss = K.categorical_crossentropy( target=y_true, output=y_pred, from_logits=False) return K.mean(loss, axis=-1)