Python keras.layers() Examples
The following are 30
code examples of keras.layers().
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
, or try the search function
.
Example #1
Source File: test_shap.py From AIX360 with Apache License 2.0 | 6 votes |
def test_ShapGradientExplainer(self): # model = VGG16(weights='imagenet', include_top=True) # X, y = shap.datasets.imagenet50() # to_explain = X[[39, 41]] # # url = "https://s3.amazonaws.com/deep-learning-models/image-models/imagenet_class_index.json" # fname = shap.datasets.cache(url) # with open(fname) as f: # class_names = json.load(f) # # def map2layer(x, layer): # feed_dict = dict(zip([model.layers[0].input], [preprocess_input(x.copy())])) # return K.get_session().run(model.layers[layer].input, feed_dict) # # e = GradientExplainer((model.layers[7].input, model.layers[-1].output), # map2layer(preprocess_input(X.copy()), 7)) # shap_values, indexes = e.explain_instance(map2layer(to_explain, 7), ranked_outputs=2) # print("Skipped Shap GradientExplainer")
Example #2
Source File: __init__.py From deep_complex_networks with MIT License | 6 votes |
def get_shallow_convnet(window_size=4096, channels=1, output_size=84): model = keras.models.Sequential() model.add(keras.layers.Conv1D( 64, 512, strides=16, input_shape=(window_size, channels), activation='relu', kernel_initializer='glorot_normal')) model.add(keras.layers.MaxPooling1D(pool_size=4, strides=2)) model.add(keras.layers.Flatten()) model.add(keras.layers.Dense(2048, activation='relu', kernel_initializer='glorot_normal')) model.add(keras.layers.Dense(output_size, activation='sigmoid', bias_initializer=keras.initializers.Constant(value=-5))) model.compile(optimizer=keras.optimizers.Adam(lr=1e-4), loss='binary_crossentropy', metrics=['accuracy']) return model
Example #3
Source File: competition_model_class.py From Deep_Learning_Weather_Forecasting with Apache License 2.0 | 6 votes |
def build_graph(self): #keras.backend.clear_session() # clear session/graph self.optimizer = keras.optimizers.Adam(lr=self.lr, decay=self.decay) self.model = Seq2Seq_MVE_subnets_swish(id_embd=True, time_embd=True, lr=self.lr, decay=self.decay, num_input_features=self.num_input_features, num_output_features=self.num_output_features, num_decoder_features=self.num_decoder_features, layers=self.layers, loss=self.loss, regulariser=self.regulariser) def _mve_loss(y_true, y_pred): pred_u = crop(2,0,3)(y_pred) pred_sig = crop(2,3,6)(y_pred) print(pred_sig) #exp_sig = tf.exp(pred_sig) # avoid pred_sig is too small such as zero #precision = 1./exp_sig precision = 1./pred_sig #log_loss= 0.5*tf.log(exp_sig)+0.5*precision*((pred_u-y_true)**2) log_loss= 0.5*tf.log(pred_sig)+0.5*precision*((pred_u-y_true)**2) log_loss=tf.reduce_mean(log_loss) return log_loss print(self.model.summary()) self.model.compile(optimizer = self.optimizer, loss=_mve_loss)
Example #4
Source File: weather_model.py From Deep_Learning_Weather_Forecasting with Apache License 2.0 | 6 votes |
def weather_ae(layers, lr, decay, loss, input_len, input_features): inputs = Input(shape=(input_len, input_features), name='input_layer') for i, hidden_nums in enumerate(layers): if i==0: hn = Dense(hidden_nums, activation='relu')(inputs) else: hn = Dense(hidden_nums, activation='relu')(hn) outputs = Dense(3, activation='sigmoid', name='output_layer')(hn) weather_model = Model(inputs, outputs=[outputs]) return weather_model
Example #5
Source File: NeuMF.py From neural_collaborative_filtering with Apache License 2.0 | 6 votes |
def load_pretrain_model(model, gmf_model, mlp_model, num_layers): # MF embeddings gmf_user_embeddings = gmf_model.get_layer('user_embedding').get_weights() gmf_item_embeddings = gmf_model.get_layer('item_embedding').get_weights() model.get_layer('mf_embedding_user').set_weights(gmf_user_embeddings) model.get_layer('mf_embedding_item').set_weights(gmf_item_embeddings) # MLP embeddings mlp_user_embeddings = mlp_model.get_layer('user_embedding').get_weights() mlp_item_embeddings = mlp_model.get_layer('item_embedding').get_weights() model.get_layer('mlp_embedding_user').set_weights(mlp_user_embeddings) model.get_layer('mlp_embedding_item').set_weights(mlp_item_embeddings) # MLP layers for i in xrange(1, num_layers): mlp_layer_weights = mlp_model.get_layer('layer%d' %i).get_weights() model.get_layer('layer%d' %i).set_weights(mlp_layer_weights) # Prediction weights gmf_prediction = gmf_model.get_layer('prediction').get_weights() mlp_prediction = mlp_model.get_layer('prediction').get_weights() new_weights = np.concatenate((gmf_prediction[0], mlp_prediction[0]), axis=0) new_b = gmf_prediction[1] + mlp_prediction[1] model.get_layer('prediction').set_weights([0.5*new_weights, 0.5*new_b]) return model
Example #6
Source File: MLP.py From neural_collaborative_filtering with Apache License 2.0 | 6 votes |
def parse_args(): parser = argparse.ArgumentParser(description="Run MLP.") parser.add_argument('--path', nargs='?', default='Data/', help='Input data path.') parser.add_argument('--dataset', nargs='?', default='ml-1m', help='Choose a dataset.') parser.add_argument('--epochs', type=int, default=100, help='Number of epochs.') parser.add_argument('--batch_size', type=int, default=256, help='Batch size.') parser.add_argument('--layers', nargs='?', default='[64,32,16,8]', help="Size of each layer. Note that the first layer is the concatenation of user and item embeddings. So layers[0]/2 is the embedding size.") parser.add_argument('--reg_layers', nargs='?', default='[0,0,0,0]', help="Regularization for each layer") parser.add_argument('--num_neg', type=int, default=4, help='Number of negative instances to pair with a positive instance.') parser.add_argument('--lr', type=float, default=0.001, help='Learning rate.') parser.add_argument('--learner', nargs='?', default='adam', help='Specify an optimizer: adagrad, adam, rmsprop, sgd') parser.add_argument('--verbose', type=int, default=1, help='Show performance per X iterations') parser.add_argument('--out', type=int, default=1, help='Whether to save the trained model.') return parser.parse_args()
Example #7
Source File: models.py From SeqGAN with MIT License | 6 votes |
def Highway(x, num_layers=1, activation='relu', name_prefix=''): ''' Layer wrapper function for Highway network # Arguments: x: tensor, shape = (B, input_size) # Optional Arguments: num_layers: int, dafault is 1, the number of Highway network layers activation: keras activation, default is 'relu' name_prefix: str, default is '', layer name prefix # Returns: out: tensor, shape = (B, input_size) ''' input_size = K.int_shape(x)[1] for i in range(num_layers): gate_ratio_name = '{}Highway/Gate_ratio_{}'.format(name_prefix, i) fc_name = '{}Highway/FC_{}'.format(name_prefix, i) gate_name = '{}Highway/Gate_{}'.format(name_prefix, i) gate_ratio = Dense(input_size, activation='sigmoid', name=gate_ratio_name)(x) fc = Dense(input_size, activation=activation, name=fc_name)(x) x = Lambda(lambda args: args[0] * args[2] + args[1] * (1 - args[2]), name=gate_name)([fc, x, gate_ratio]) return x
Example #8
Source File: keras_policy.py From rasa_wechat with Apache License 2.0 | 6 votes |
def _build_model(self, num_features, num_actions, max_history_len): """Build a keras model and return a compiled model. :param max_history_len: The maximum number of historical turns used to decide on next action """ from keras.layers import LSTM, Activation, Masking, Dense from keras.models import Sequential n_hidden = 32 # Neural Net and training params batch_shape = (None, max_history_len, num_features) # Build Model model = Sequential() model.add(Masking(-1, batch_input_shape=batch_shape)) model.add(LSTM(n_hidden, batch_input_shape=batch_shape)) model.add(Dense(input_dim=n_hidden, units=num_actions)) model.add(Activation('softmax')) model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy']) logger.debug(model.summary()) return model
Example #9
Source File: utils.py From Deep-Learning-for-Computer-Vision with MIT License | 5 votes |
def copy_model(m): res = Sequential(copy_layers(m.layers)) copy_weights(m.layers, res.layers) return res
Example #10
Source File: models.py From SeqGAN with MIT License | 5 votes |
def _build_gragh(self): state_in = tf.placeholder(tf.float32, shape=(None, 1)) h_in = tf.placeholder(tf.float32, shape=(None, self.H)) c_in = tf.placeholder(tf.float32, shape=(None, self.H)) action = tf.placeholder(tf.float32, shape=(None, self.V)) # onehot (B, V) reward =tf.placeholder(tf.float32, shape=(None, )) self.layers = [] embedding = Embedding(self.V, self.E, mask_zero=True, name='Embedding') out = embedding(state_in) # (B, 1, E) self.layers.append(embedding) lstm = LSTM(self.H, return_state=True, name='LSTM') out, next_h, next_c = lstm(out, initial_state=[h_in, c_in]) # (B, H) self.layers.append(lstm) dense = Dense(self.V, activation='softmax', name='DenseSoftmax') prob = dense(out) # (B, V) self.layers.append(dense) log_prob = tf.log(tf.reduce_mean(prob * action, axis=-1)) # (B, ) loss = - log_prob * reward optimizer = tf.train.AdamOptimizer(learning_rate=self.lr) minimize = optimizer.minimize(loss) self.state_in = state_in self.h_in = h_in self.c_in = c_in self.action = action self.reward = reward self.prob = prob self.next_h = next_h self.next_c = next_c self.minimize = minimize self.loss = loss self.init_op = tf.global_variables_initializer() self.sess.run(self.init_op)
Example #11
Source File: __init__.py From deep_complex_networks with MIT License | 5 votes |
def get_mlp(window_size=4096, output_size=84): model = keras.models.Sequential() model.add(keras.layers.Flatten(input_shape=(window_size, 1))) model.add(keras.layers.Dense(2048, activation='relu', kernel_initializer='glorot_normal')) model.add(keras.layers.Dense(output_size, activation='sigmoid', kernel_initializer='glorot_normal', bias_initializer=keras.initializers.Constant(value=-5))) model.compile(optimizer=keras.optimizers.Adam(lr=1e-4), loss='binary_crossentropy', metrics=['accuracy']) return model
Example #12
Source File: model.py From EasyPR-python with Apache License 2.0 | 5 votes |
def get_trainable_layers(self): """Returns a list of layers that have weights.""" layers = [] # Loop through all layers for l in self.keras_model.layers: # If layer is a wrapper, find inner trainable layer l = self.find_trainable_layer(l) # Include layer if it has weights if l.get_weights(): layers.append(l) return layers
Example #13
Source File: MLP.py From neural_collaborative_filtering with Apache License 2.0 | 5 votes |
def get_model(num_users, num_items, layers = [20,10], reg_layers=[0,0]): assert len(layers) == len(reg_layers) num_layer = len(layers) #Number of layers in the MLP # Input variables user_input = Input(shape=(1,), dtype='int32', name = 'user_input') item_input = Input(shape=(1,), dtype='int32', name = 'item_input') MLP_Embedding_User = Embedding(input_dim = num_users, output_dim = layers[0]/2, name = 'user_embedding', init = init_normal, W_regularizer = l2(reg_layers[0]), input_length=1) MLP_Embedding_Item = Embedding(input_dim = num_items, output_dim = layers[0]/2, name = 'item_embedding', init = init_normal, W_regularizer = l2(reg_layers[0]), input_length=1) # Crucial to flatten an embedding vector! user_latent = Flatten()(MLP_Embedding_User(user_input)) item_latent = Flatten()(MLP_Embedding_Item(item_input)) # The 0-th layer is the concatenation of embedding layers vector = merge([user_latent, item_latent], mode = 'concat') # MLP layers for idx in xrange(1, num_layer): layer = Dense(layers[idx], W_regularizer= l2(reg_layers[idx]), activation='relu', name = 'layer%d' %idx) vector = layer(vector) # Final prediction layer prediction = Dense(1, activation='sigmoid', init='lecun_uniform', name = 'prediction')(vector) model = Model(input=[user_input, item_input], output=prediction) return model
Example #14
Source File: NeuMF.py From neural_collaborative_filtering with Apache License 2.0 | 5 votes |
def parse_args(): parser = argparse.ArgumentParser(description="Run NeuMF.") parser.add_argument('--path', nargs='?', default='Data/', help='Input data path.') parser.add_argument('--dataset', nargs='?', default='ml-1m', help='Choose a dataset.') parser.add_argument('--epochs', type=int, default=100, help='Number of epochs.') parser.add_argument('--batch_size', type=int, default=256, help='Batch size.') parser.add_argument('--num_factors', type=int, default=8, help='Embedding size of MF model.') parser.add_argument('--layers', nargs='?', default='[64,32,16,8]', help="MLP layers. Note that the first layer is the concatenation of user and item embeddings. So layers[0]/2 is the embedding size.") parser.add_argument('--reg_mf', type=float, default=0, help='Regularization for MF embeddings.') parser.add_argument('--reg_layers', nargs='?', default='[0,0,0,0]', help="Regularization for each MLP layer. reg_layers[0] is the regularization for embeddings.") parser.add_argument('--num_neg', type=int, default=4, help='Number of negative instances to pair with a positive instance.') parser.add_argument('--lr', type=float, default=0.001, help='Learning rate.') parser.add_argument('--learner', nargs='?', default='adam', help='Specify an optimizer: adagrad, adam, rmsprop, sgd') parser.add_argument('--verbose', type=int, default=1, help='Show performance per X iterations') parser.add_argument('--out', type=int, default=1, help='Whether to save the trained model.') parser.add_argument('--mf_pretrain', nargs='?', default='', help='Specify the pretrain model file for MF part. If empty, no pretrain will be used') parser.add_argument('--mlp_pretrain', nargs='?', default='', help='Specify the pretrain model file for MLP part. If empty, no pretrain will be used') return parser.parse_args()
Example #15
Source File: model.py From EasyPR-python with Apache License 2.0 | 5 votes |
def set_trainable(self, layer_regex, keras_model=None, indent=0, verbose=1): """Sets model layers as trainable if their names match the given regular expression. """ # Print message on the first call (but not on recursive calls) if verbose > 0 and keras_model is None: log("Selecting layers to train") keras_model = keras_model or self.keras_model # In multi-GPU training, we wrap the model. Get layers # of the inner model because they have the weights. layers = keras_model.inner_model.layers if hasattr(keras_model, "inner_model") \ else keras_model.layers for layer in layers: # Is the layer a model? if layer.__class__.__name__ == 'Model': print("In model: ", layer.name) self.set_trainable(layer_regex, keras_model=layer, indent=indent + 4) continue if not layer.weights: continue # Is it trainable? trainable = bool(re.fullmatch(layer_regex, layer.name)) # Update layer. If layer is a container, update inner layer. if layer.__class__.__name__ == 'TimeDistributed': layer.layer.trainable = trainable else: layer.trainable = trainable # Print trainble layer names if trainable and verbose > 0: log("{}{:20} ({})".format(" " * indent, layer.name, layer.__class__.__name__))
Example #16
Source File: keras_item2vec.py From MovieTaster-Open with MIT License | 5 votes |
def train_cbow_base_model(): min_word_freq = 5 word_dict = process.get_movie_name_id_dict(min_word_freq=min_word_freq) dict_size = len(word_dict) emb_size = 100 context_window_size = 4 epochs = 20 batch_size = 128 model = cbow_base_model(dict_size, emb_size, context_window_size) for epoch_id in xrange(epochs): # train by batch batch_id = 0 x_batch = [] y_batch = [] for movie_ids in process.shuffle(process.reader_creator(word_dict, ngram=context_window_size+1), 10000)(): batch_id += 1 if batch_id % (batch_size*50) == 0: # Print evaluate log score = model.evaluate(np.array(x_batch), keras.utils.to_categorical(y_batch, num_classes=dict_size)) logger.info('[epoch #%d] batch #%d, train loss:%s' % (epoch_id, batch_id, score)) if batch_id % batch_size == 0: # Convert labels to categorical one-hot encoding model.train_on_batch(np.array(x_batch), keras.utils.to_categorical(y_batch, num_classes=dict_size)) x_batch = [] y_batch = [] x = np.array(movie_ids[:context_window_size]) y = movie_ids[-1] x_batch.append(x) y_batch.append(y) logger.info('model train done') # store word embedding with open('./models/keras_0804_09_cbow', 'w') as fwrite: for idx, vec in enumerate(model.layers[0].get_weights()[0].tolist()): fwrite.write('%d %s\n' % (idx, ' '.join([str(_) for _ in vec])))
Example #17
Source File: models.py From SeqGAN with MIT License | 5 votes |
def load(self, path): with open(path, 'rb') as f: weights = pickle.load(f) for layer, w in zip(self.layers, weights): layer.set_weights(w)
Example #18
Source File: loading_utils.py From Dropout_BBalpha with MIT License | 5 votes |
def load_model(path, alpha = 0.5, K_mc = 10, n_epoch = 500, nb_layers = 3, \ nb_units = 1000, p = 0.5, wd = 1e-6, nb_classes = 10, model_arch = 'mlp', \ dropout = True, n_mc = 1): # Define TF model graph by loading model # NOTE: set dropout = True if wanted to test MC dropout # else it will use keras dropout and then use p*W for prediction #path = '/homes/mlghomes/yl494/proj/dropout/adversarial/' if model_arch == 'mlp': nb_in = 784; input_shape = (nb_in,) inp = Input(shape=input_shape) layers = get_logit_mlp_layers(nb_layers, nb_units, p, wd, nb_classes, dropout = dropout) else: img_rows, img_cols = 28, 28; input_shape = (1, img_rows, img_cols) inp = Input(shape=input_shape) layers = get_logit_cnn_layers(nb_units, p, wd, nb_classes, dropout = dropout) # NOTE: should set n_mc = 1 here if dropout is not MC if dropout != 'MC': n_mc = 1 mc_logits = GenerateMCSamples(inp, layers, n_mc) mc_softmax = Activation('softmax')(mc_logits) # softmax is over last dim model = Model(input=inp, output=mc_softmax) folder = path + model_arch + '_nb_layers_' + str(nb_layers) \ + '_nb_units_' + str(nb_units) + '_p_' + str(p) + '/' file_name = folder + 'K_mc_' + str(K_mc) + '_alpha_' + str(alpha) model.load_weights(file_name+'_weights.h5', by_name=True) print("model loaded from "+file_name+' weights.h5') print("Defined TensorFlow model graph.") return model # evaluation for classification tasks # Yarin's implementation (parallel MC dropout)
Example #19
Source File: utils.py From Deep-Learning-for-Computer-Vision with MIT License | 5 votes |
def insert_layer(model, new_layer, index): res = Sequential() for i,layer in enumerate(model.layers): if i==index: res.add(new_layer) copied = layer_from_config(wrap_config(layer)) res.add(copied) copied.set_weights(layer.get_weights()) return res
Example #20
Source File: keras_policy.py From rasa_wechat with Apache License 2.0 | 5 votes |
def max_len(self): if self.model: return self.model.layers[0].batch_input_shape[1] else: return None
Example #21
Source File: architectures.py From deepJDOT with MIT License | 5 votes |
def vgg16F_fe(img_input): # net = preprocess_input(img_input) from keras_vggface.vggface import VGGFace vgg_model = VGGFace(include_top=False, input_tensor=img_input, pooling='avg') #vgg_model.layers.pop() last_layer = vgg_model.get_layer('pool5').output x = Flatten(name='flatten')(last_layer) x = Dense(1024, activation='relu', trainable=True)(x) x = Dense(512, activation='relu', trainable=True)(x) model = dnn.Model(input=vgg_model.input, output=x) return model.layers[-1].output
Example #22
Source File: architectures.py From deepJDOT with MIT License | 5 votes |
def vgg16_fe(img_input): # net = preprocess_input(img_input) vgg_model = VGG16(weights='imagenet', include_top=True, input_tensor=img_input) vgg_model.layers.pop() return vgg_model.layers[-1].output # return model.layers[-1].output
Example #23
Source File: model.py From PanopticSegmentation with MIT License | 5 votes |
def get_trainable_layers(self): """Returns a list of layers that have weights.""" layers = [] # Loop through all layers for l in self.keras_model.layers: # If layer is a wrapper, find inner trainable layer l = self.find_trainable_layer(l) # Include layer if it has weights if l.get_weights(): layers.append(l) return layers
Example #24
Source File: model.py From PanopticSegmentation with MIT License | 5 votes |
def set_trainable(self, layer_regex, keras_model=None, indent=0, verbose=1): """Sets model layers as trainable if their names match the given regular expression. """ # Print message on the first call (but not on recursive calls) if verbose > 0 and keras_model is None: log("Selecting layers to train") keras_model = keras_model or self.keras_model # In multi-GPU training, we wrap the model. Get layers # of the inner model because they have the weights. layers = keras_model.inner_model.layers if hasattr(keras_model, "inner_model")\ else keras_model.layers for layer in layers: # Is the layer a model? if layer.__class__.__name__ == 'Model': print("In model: ", layer.name) self.set_trainable( layer_regex, keras_model=layer, indent=indent + 4) continue if not layer.weights: continue # Is it trainable? trainable = bool(re.fullmatch(layer_regex, layer.name)) # Update layer. If layer is a container, update inner layer. if layer.__class__.__name__ == 'TimeDistributed': layer.layer.trainable = trainable else: layer.trainable = trainable # Print trainable layer names if trainable and verbose > 0: log("{}{:20} ({})".format(" " * indent, layer.name, layer.__class__.__name__))
Example #25
Source File: model.py From PanopticSegmentation with MIT License | 5 votes |
def resnet_graph(input_image, architecture, stage5=False, train_bn=True): """Build a ResNet graph. architecture: Can be resnet50 or resnet101 stage5: Boolean. If False, stage5 of the network is not created train_bn: Boolean. Train or freeze Batch Norm layers """ assert architecture in ["resnet50", "resnet101"] # Stage 1 x = KL.ZeroPadding2D((3, 3))(input_image) x = KL.Conv2D(64, (7, 7), strides=(2, 2), name='conv1', use_bias=True)(x) x = BatchNorm(name='bn_conv1')(x, training=train_bn) x = KL.Activation('relu')(x) C1 = x = KL.MaxPooling2D((3, 3), strides=(2, 2), padding="same")(x) # Stage 2 x = conv_block(x, 3, [64, 64, 256], stage=2, block='a', strides=(1, 1), train_bn=train_bn) x = identity_block(x, 3, [64, 64, 256], stage=2, block='b', train_bn=train_bn) C2 = x = identity_block(x, 3, [64, 64, 256], stage=2, block='c', train_bn=train_bn) # Stage 3 x = conv_block(x, 3, [128, 128, 512], stage=3, block='a', train_bn=train_bn) x = identity_block(x, 3, [128, 128, 512], stage=3, block='b', train_bn=train_bn) x = identity_block(x, 3, [128, 128, 512], stage=3, block='c', train_bn=train_bn) C3 = x = identity_block(x, 3, [128, 128, 512], stage=3, block='d', train_bn=train_bn) # Stage 4 x = conv_block(x, 3, [256, 256, 1024], stage=4, block='a', train_bn=train_bn) block_count = {"resnet50": 5, "resnet101": 22}[architecture] for i in range(block_count): x = identity_block(x, 3, [256, 256, 1024], stage=4, block=chr(98 + i), train_bn=train_bn) C4 = x # Stage 5 if stage5: x = conv_block(x, 3, [512, 512, 2048], stage=5, block='a', train_bn=train_bn) x = identity_block(x, 3, [512, 512, 2048], stage=5, block='b', train_bn=train_bn) C5 = x = identity_block(x, 3, [512, 512, 2048], stage=5, block='c', train_bn=train_bn) else: C5 = None return [C1, C2, C3, C4, C5] ############################################################ # Proposal Layer ############################################################
Example #26
Source File: model.py From PanopticSegmentation with MIT License | 5 votes |
def conv_block(input_tensor, kernel_size, filters, stage, block, strides=(2, 2), use_bias=True, train_bn=True): """conv_block is the block that has a conv layer at shortcut # Arguments input_tensor: input tensor kernel_size: default 3, the kernel size of middle conv layer at main path filters: list of integers, the nb_filters of 3 conv layer at main path stage: integer, current stage label, used for generating layer names block: 'a','b'..., current block label, used for generating layer names use_bias: Boolean. To use or not use a bias in conv layers. train_bn: Boolean. Train or freeze Batch Norm layers Note that from stage 3, the first conv layer at main path is with subsample=(2,2) And the shortcut should have subsample=(2,2) as well """ nb_filter1, nb_filter2, nb_filter3 = filters conv_name_base = 'res' + str(stage) + block + '_branch' bn_name_base = 'bn' + str(stage) + block + '_branch' x = KL.Conv2D(nb_filter1, (1, 1), strides=strides, name=conv_name_base + '2a', use_bias=use_bias)(input_tensor) x = BatchNorm(name=bn_name_base + '2a')(x, training=train_bn) x = KL.Activation('relu')(x) x = KL.Conv2D(nb_filter2, (kernel_size, kernel_size), padding='same', name=conv_name_base + '2b', use_bias=use_bias)(x) x = BatchNorm(name=bn_name_base + '2b')(x, training=train_bn) x = KL.Activation('relu')(x) x = KL.Conv2D(nb_filter3, (1, 1), name=conv_name_base + '2c', use_bias=use_bias)(x) x = BatchNorm(name=bn_name_base + '2c')(x, training=train_bn) shortcut = KL.Conv2D(nb_filter3, (1, 1), strides=strides, name=conv_name_base + '1', use_bias=use_bias)(input_tensor) shortcut = BatchNorm(name=bn_name_base + '1')(shortcut, training=train_bn) x = KL.Add()([x, shortcut]) x = KL.Activation('relu', name='res' + str(stage) + block + '_out')(x) return x
Example #27
Source File: model.py From PanopticSegmentation with MIT License | 5 votes |
def identity_block(input_tensor, kernel_size, filters, stage, block, use_bias=True, train_bn=True): """The identity_block is the block that has no conv layer at shortcut # Arguments input_tensor: input tensor kernel_size: default 3, the kernel size of middle conv layer at main path filters: list of integers, the nb_filters of 3 conv layer at main path stage: integer, current stage label, used for generating layer names block: 'a','b'..., current block label, used for generating layer names use_bias: Boolean. To use or not use a bias in conv layers. train_bn: Boolean. Train or freeze Batch Norm layers """ nb_filter1, nb_filter2, nb_filter3 = filters conv_name_base = 'res' + str(stage) + block + '_branch' bn_name_base = 'bn' + str(stage) + block + '_branch' x = KL.Conv2D(nb_filter1, (1, 1), name=conv_name_base + '2a', use_bias=use_bias)(input_tensor) x = BatchNorm(name=bn_name_base + '2a')(x, training=train_bn) x = KL.Activation('relu')(x) x = KL.Conv2D(nb_filter2, (kernel_size, kernel_size), padding='same', name=conv_name_base + '2b', use_bias=use_bias)(x) x = BatchNorm(name=bn_name_base + '2b')(x, training=train_bn) x = KL.Activation('relu')(x) x = KL.Conv2D(nb_filter3, (1, 1), name=conv_name_base + '2c', use_bias=use_bias)(x) x = BatchNorm(name=bn_name_base + '2c')(x, training=train_bn) x = KL.Add()([x, input_tensor]) x = KL.Activation('relu', name='res' + str(stage) + block + '_out')(x) return x
Example #28
Source File: model.py From PanopticSegmentation with MIT License | 5 votes |
def call(self, inputs, training=None): """ Note about training values: None: Train BN layers. This is the normal mode False: Freeze BN layers. Good when batch size is small True: (don't use). Set layer in training mode even when making inferences """ return super(self.__class__, self).call(inputs, training=training)
Example #29
Source File: model.py From segmentation-unet-maskrcnn with MIT License | 5 votes |
def load_weights(self, filepath, by_name=False, exclude=None): """Modified version of the correspoding Keras function with the addition of multi-GPU support and the ability to exclude some layers from loading. exlude: list of layer names to excluce """ import h5py from keras.engine import topology if exclude: by_name = True if h5py is None: raise ImportError('`load_weights` requires h5py.') f = h5py.File(filepath, mode='r') if 'layer_names' not in f.attrs and 'model_weights' in f: f = f['model_weights'] # In multi-GPU training, we wrap the model. Get layers # of the inner model because they have the weights. keras_model = self.keras_model layers = keras_model.inner_model.layers if hasattr(keras_model, "inner_model")\ else keras_model.layers # Exclude some layers if exclude: layers = filter(lambda l: l.name not in exclude, layers) if by_name: topology.load_weights_from_hdf5_group_by_name(f, layers) else: topology.load_weights_from_hdf5_group(f, layers) if hasattr(f, 'close'): f.close() # Update the log directory self.set_log_dir(filepath)
Example #30
Source File: utils.py From Deep-Learning-for-Computer-Vision with MIT License | 5 votes |
def copy_layers(layers): return [copy_layer(layer) for layer in layers]