Python keras.layers.TimeDistributed() Examples
The following are 30
code examples of keras.layers.TimeDistributed().
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.layers
, or try the search function
.
Example #1
Source File: model.py From CCKS2019-Chinese-Clinical-NER with MIT License | 7 votes |
def __build_model(self): model = Sequential() embedding_layer = Embedding(input_dim=len(self.vocab) + 1, output_dim=self.embedding_dim, weights=[self.embedding_mat], trainable=False) model.add(embedding_layer) bilstm_layer = Bidirectional(LSTM(units=256, return_sequences=True)) model.add(bilstm_layer) model.add(TimeDistributed(Dense(256, activation="relu"))) crf_layer = CRF(units=len(self.tags), sparse_target=True) model.add(crf_layer) model.compile(optimizer="adam", loss=crf_loss, metrics=[crf_viterbi_accuracy]) model.summary() return model
Example #2
Source File: vgg.py From keras-faster-rcnn with Apache License 2.0 | 6 votes |
def classifier(base_layers, input_rois, num_rois, nb_classes = 21, trainable=False): # compile times on theano tend to be very high, so we use smaller ROI pooling regions to workaround if K.backend() == 'tensorflow': pooling_regions = 7 input_shape = (num_rois,7,7,512) elif K.backend() == 'theano': pooling_regions = 7 input_shape = (num_rois,512,7,7) out_roi_pool = RoiPoolingConv(pooling_regions, num_rois)([base_layers, input_rois]) out = TimeDistributed(Flatten(name='flatten'))(out_roi_pool) out = TimeDistributed(Dense(4096, activation='relu', name='fc1'))(out) out = TimeDistributed(Dropout(0.5))(out) out = TimeDistributed(Dense(4096, activation='relu', name='fc2'))(out) out = TimeDistributed(Dropout(0.5))(out) out_class = TimeDistributed(Dense(nb_classes, activation='softmax', kernel_initializer='zero'), name='dense_class_{}'.format(nb_classes))(out) # note: no regression target for bg class out_regr = TimeDistributed(Dense(4 * (nb_classes-1), activation='linear', kernel_initializer='zero'), name='dense_regress_{}'.format(nb_classes))(out) return [out_class, out_regr]
Example #3
Source File: lstm.py From speech-music-detection with MIT License | 6 votes |
def create_lstm(hidden_units=[50], dropout=0.05, bidirectional=True): model = Sequential() if bidirectional: i = 0 for unit in hidden_units: if i == 0: model.add(Bidirectional(LSTM(unit, dropout=dropout, return_sequences=True), input_shape=(None, config.N_MELS))) else: model.add(Bidirectional(LSTM(unit, dropout=dropout, return_sequences=True))) i += 1 else: i = 0 for unit in hidden_units: if i == 0: model.add(LSTM(unit, dropout=dropout, return_sequences=True), input_shape=(None, config.N_MELS)) else: model.add(LSTM(unit, dropout=dropout, return_sequences=True)) i += 1 model.add(TimeDistributed(Dense(config.CLASSES, activation='sigmoid'))) return model
Example #4
Source File: cnn_rnn_crf.py From Jtyoui with MIT License | 6 votes |
def create_model(): inputs = Input(shape=(length,), dtype='int32', name='inputs') embedding_1 = Embedding(len(vocab), EMBED_DIM, input_length=length, mask_zero=True)(inputs) bilstm = Bidirectional(LSTM(EMBED_DIM // 2, return_sequences=True))(embedding_1) bilstm_dropout = Dropout(DROPOUT_RATE)(bilstm) embedding_2 = Embedding(len(vocab), EMBED_DIM, input_length=length)(inputs) con = Conv1D(filters=FILTERS, kernel_size=2 * HALF_WIN_SIZE + 1, padding='same')(embedding_2) con_d = Dropout(DROPOUT_RATE)(con) dense_con = TimeDistributed(Dense(DENSE_DIM))(con_d) rnn_cnn = concatenate([bilstm_dropout, dense_con], axis=2) dense = TimeDistributed(Dense(len(chunk_tags)))(rnn_cnn) crf = CRF(len(chunk_tags), sparse_target=True) crf_output = crf(dense) model = Model(input=[inputs], output=[crf_output]) model.compile(loss=crf.loss_function, optimizer=Adam(), metrics=[crf.accuracy]) return model
Example #5
Source File: lstm_model.py From zh-segmentation-keras with MIT License | 6 votes |
def create_model(maxlen, chars, word_size, infer=False): """ :param infer: :param maxlen: :param chars: :param word_size: :return: """ sequence = Input(shape=(maxlen,), dtype='int32') embedded = Embedding(len(chars) + 1, word_size, input_length=maxlen, mask_zero=True)(sequence) blstm = Bidirectional(LSTM(64, return_sequences=True), merge_mode='sum')(embedded) output = TimeDistributed(Dense(5, activation='softmax'))(blstm) model = Model(input=sequence, output=output) if not infer: model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) return model
Example #6
Source File: vgg.py From keras-frcnn with Apache License 2.0 | 6 votes |
def classifier(base_layers, input_rois, num_rois, nb_classes = 21, trainable=False): # compile times on theano tend to be very high, so we use smaller ROI pooling regions to workaround if K.backend() == 'tensorflow': pooling_regions = 7 input_shape = (num_rois,7,7,512) elif K.backend() == 'theano': pooling_regions = 7 input_shape = (num_rois,512,7,7) out_roi_pool = RoiPoolingConv(pooling_regions, num_rois)([base_layers, input_rois]) out = TimeDistributed(Flatten(name='flatten'))(out_roi_pool) out = TimeDistributed(Dense(4096, activation='relu', name='fc1'))(out) out = TimeDistributed(Dropout(0.5))(out) out = TimeDistributed(Dense(4096, activation='relu', name='fc2'))(out) out = TimeDistributed(Dropout(0.5))(out) out_class = TimeDistributed(Dense(nb_classes, activation='softmax', kernel_initializer='zero'), name='dense_class_{}'.format(nb_classes))(out) # note: no regression target for bg class out_regr = TimeDistributed(Dense(4 * (nb_classes-1), activation='linear', kernel_initializer='zero'), name='dense_regress_{}'.format(nb_classes))(out) return [out_class, out_regr]
Example #7
Source File: baseline.py From MELD with GNU General Public License v3.0 | 6 votes |
def get_audio_model(self): # Modality specific hyperparameters self.epochs = 100 self.batch_size = 50 # Modality specific parameters self.embedding_dim = self.train_x.shape[2] print("Creating Model...") inputs = Input(shape=(self.sequence_length, self.embedding_dim), dtype='float32') masked = Masking(mask_value =0)(inputs) lstm = Bidirectional(LSTM(300, activation='tanh', return_sequences = True, dropout=0.4))(masked) lstm = Bidirectional(LSTM(300, activation='tanh', return_sequences = True, dropout=0.4), name="utter")(lstm) output = TimeDistributed(Dense(self.classes,activation='softmax'))(lstm) model = Model(inputs, output) return model
Example #8
Source File: baseline.py From MELD with GNU General Public License v3.0 | 6 votes |
def get_bimodal_model(self): # Modality specific hyperparameters self.epochs = 100 self.batch_size = 10 # Modality specific parameters self.embedding_dim = self.train_x.shape[2] print("Creating Model...") inputs = Input(shape=(self.sequence_length, self.embedding_dim), dtype='float32') masked = Masking(mask_value =0)(inputs) lstm = Bidirectional(LSTM(300, activation='tanh', return_sequences = True, dropout=0.4), name="utter")(masked) output = TimeDistributed(Dense(self.classes,activation='softmax'))(lstm) model = Model(inputs, output) return model
Example #9
Source File: inception_resnet_v2.py From Keras-FasterRCNN with MIT License | 6 votes |
def classifier(base_layers, input_rois, num_rois, nb_classes=21, trainable=False): # compile times on theano tend to be very high, so we use smaller ROI pooling regions to workaround if K.backend() == 'tensorflow': pooling_regions = 14 # Changed the input shape to 1088 from 1024 because of nn_base's output being 1088. Not sure if this is correct input_shape = (num_rois, 14, 14, 1088) elif K.backend() == 'theano': pooling_regions = 7 input_shape = (num_rois, 1024, 7, 7) out_roi_pool = RoiPoolingConv(pooling_regions, num_rois)([base_layers, input_rois]) out = classifier_layers(out_roi_pool, input_shape=input_shape, trainable=True) out = TimeDistributed(Flatten())(out) out_class = TimeDistributed(Dense(nb_classes, activation='softmax', kernel_initializer='zero'), name='dense_class_{}'.format(nb_classes))(out) # note: no regression target for bg class out_regr = TimeDistributed(Dense(4 * (nb_classes-1), activation='linear', kernel_initializer='zero'), name='dense_regress_{}'.format(nb_classes))(out) return [out_class, out_regr]
Example #10
Source File: vgg.py From Keras-FasterRCNN with MIT License | 6 votes |
def classifier(base_layers, input_rois, num_rois, nb_classes = 21, trainable=False): # compile times on theano tend to be very high, so we use smaller ROI pooling regions to workaround if K.backend() == 'tensorflow': pooling_regions = 7 input_shape = (num_rois, 7, 7, 512) elif K.backend() == 'theano': pooling_regions = 7 input_shape = (num_rois, 512, 7, 7) out_roi_pool = RoiPoolingConv(pooling_regions, num_rois)([base_layers, input_rois]) out = TimeDistributed(Flatten(name='flatten'))(out_roi_pool) out = TimeDistributed(Dense(4096, activation='relu', name='fc1'))(out) out = TimeDistributed(Dense(4096, activation='relu', name='fc2'))(out) out_class = TimeDistributed(Dense(nb_classes, activation='softmax', kernel_initializer='zero'), name='dense_class_{}'.format(nb_classes))(out) # note: no regression target for bg class out_regr = TimeDistributed(Dense(4 * (nb_classes-1), activation='linear', kernel_initializer='zero'), name='dense_regress_{}'.format(nb_classes))(out) return [out_class, out_regr]
Example #11
Source File: nn_arch_vgg16.py From Keras_object_detection with Apache License 2.0 | 6 votes |
def classifier(base_layers, input_rois, num_rois, nb_classes,trainable=True): """ The final classifier to match original implementation for VGG-16 The only difference being the Roipooling layer uses tensorflow's bilinear interpolation """ pooling_regions = 7 out_roi_pool = RoiPoolingConv(pooling_regions, num_rois,trainable=trainable)([base_layers, input_rois]) out = TimeDistributed(Flatten(),name="flatten",trainable=trainable)(out_roi_pool) out = TimeDistributed(Dense(4096, activation='relu',trainable=trainable),name="fc1",trainable=trainable)(out) out = TimeDistributed(Dropout(0.5),name="drop_out1",trainable=trainable)(out) # add dropout to match original implememtation out = TimeDistributed(Dense(4096, activation='relu',trainable=trainable),name="fc2",trainable=trainable)(out) out = TimeDistributed(Dropout(0.5),name="drop_out2",trainable=trainable)(out) # add dropout to match original implementation out_class = TimeDistributed(Dense(nb_classes, activation='softmax', kernel_initializer='zero',trainable=trainable), name='dense_class_{}'.format(nb_classes),trainable=trainable)(out) # note: no regression target for bg class out_regr = TimeDistributed(Dense(4 * (nb_classes-1), activation='linear', kernel_initializer='zero',trainable=trainable), name='dense_regress_{}'.format(nb_classes),trainable=trainable)(out) return [out_class, out_regr]
Example #12
Source File: xception.py From Keras-FasterRCNN with MIT License | 6 votes |
def classifier_layers(x, input_shape, trainable=False): # compile times on theano tend to be very high, so we use smaller ROI pooling regions to workaround # (hence a smaller stride in the region that follows the ROI pool) x = TimeDistributed(SeparableConv2D(1536, (3, 3), padding='same', use_bias=False), name='block14_sepconv1')(x) x = TimeDistributed(BatchNormalization(), name='block14_sepconv1_bn')(x) x = Activation('relu', name='block14_sepconv1_act')(x) x = TimeDistributed(SeparableConv2D(2048, (3, 3), padding='same', use_bias=False), name='block14_sepconv2')(x) x = TimeDistributed(BatchNormalization(), name='block14_sepconv2_bn')(x) x = Activation('relu', name='block14_sepconv2_act')(x) TimeDistributed(GlobalAveragePooling2D(), name='avg_pool')(x) return x
Example #13
Source File: cldnn.py From speech-music-detection with MIT License | 5 votes |
def create_cldnn(filters_list=[32], lstm_units=[50], fc_units=[50], kernel_sizes=[15], dropout=0.05, bidirectional=False): model = Sequential() model.add(Reshape((-1, config.N_MELS, 1), input_shape=(None, config.N_MELS))) for filters, kernel_size in zip(filters_list, kernel_sizes): model.add(Conv2D(filters, kernel_size, padding='same')) model.add(Activation('relu')) model.add(Dropout(dropout)) model.add(MaxPooling2D(pool_size=(1, 2))) _, _, sx, sy = model.layers[-1].output.shape model.add(Reshape((-1, int(sx * sy)))) if bidirectional: for unit in lstm_units: model.add(Bidirectional(LSTM(unit, dropout=dropout, return_sequences=True))) else: for unit in lstm_units: model.add(LSTM(unit, dropout=dropout, return_sequences=True)) for units in fc_units: model.add(Dense(units, activation='relu')) model.add(TimeDistributed(Dense(config.CLASSES, activation='sigmoid'))) return model
Example #14
Source File: seq2seq.py From stock-price-predict with MIT License | 5 votes |
def base_model(feature_len=1, after_day=1, input_shape=(20, 1)): model = Sequential() model.add(LSTM(units=100, return_sequences=False, input_shape=input_shape)) #model.add(LSTM(units=100, return_sequences=False, input_shape=input_shape)) # one to many model.add(RepeatVector(after_day)) model.add(LSTM(200, return_sequences=True)) #model.add(LSTM(50, return_sequences=True)) model.add(TimeDistributed(Dense(units=feature_len, activation='linear'))) return model
Example #15
Source File: model.py From deep-learning-explorer with Apache License 2.0 | 5 votes |
def find_trainable_layer(self, layer): """If a layer is encapsulated by another layer, this function digs through the encapsulation and returns the layer that holds the weights. """ if layer.__class__.__name__ == 'TimeDistributed': return self.find_trainable_layer(layer.layer) return layer
Example #16
Source File: model.py From deep-learning-explorer 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 #17
Source File: SlotTaggingModel_multitask.py From end2end_dialog with MIT License | 5 votes |
def _build(self): print('Building Graph ...') words_input = Input(shape=(self.maxlen_userUtter,), dtype='int32', name='words_input') # reserve 0 for masking, therefore vocab_size + 1 embeddings = Embedding(input_dim=self.word_vocab_size + 1, output_dim=self.embedding_size, input_length=self.maxlen_userUtter, mask_zero=True)(words_input) embeddings = Dropout(self.dropout)(embeddings) lstm_forward = LSTM(output_dim=self.hidden_size, return_sequences=True, name='LSTM_forward')(embeddings) lstm_forward = Dropout(self.dropout)(lstm_forward) lstm_backward = LSTM(output_dim=self.hidden_size, return_sequences=True, go_backwards=True, name='LSTM_backward')(embeddings) lstm_backward = Dropout(self.dropout)(lstm_backward) lstm_concat = merge([lstm_forward, lstm_backward], mode='concat', concat_axis=-1, name='merge_bidirections') slot_softmax_seq = TimeDistributed(Dense( output_dim=self.userTag_vocab_size, activation='softmax'), name='slot_output')(lstm_concat) intent_summary = LSTM(output_dim=self.hidden_size, return_sequences=False, name='summarize_to_dense')(lstm_concat) intent_summary = Dropout(self.dropout)(intent_summary) # intent_softmax = Dense(output_dim=self.userIntent_vocab_size, # activation='softmax', name='intent_output')(intent_summary) intent_softmax = Dense(output_dim=self.userIntent_vocab_size, activation='sigmoid', name='intent_output')(intent_summary) self.model = Model(input=words_input, output=[ slot_softmax_seq, intent_softmax]) self.model.compile(optimizer=self.optimizer, # metrics=['accuracy'], sample_weight_mode={ 'slot_output': 'temporal', 'intent_output': None}, loss={'slot_output': self.loss, 'intent_output': 'binary_crossentropy'})
Example #18
Source File: model.py From raster-deep-learning with Apache License 2.0 | 5 votes |
def find_trainable_layer(self, layer): """If a layer is encapsulated by another layer, this function digs through the encapsulation and returns the layer that holds the weights. """ if layer.__class__.__name__ == 'TimeDistributed': return self.find_trainable_layer(layer.layer) return layer
Example #19
Source File: lstm_cnn.py From stock-price-predict with MIT License | 5 votes |
def base_model(feature_len=1, after_day=1, input_shape=(20, 1)): model = Sequential() model.add(Conv1D(10, kernel_size=5, input_shape=input_shape, activation='relu', padding='valid', strides=1)) model.add(LSTM(100, return_sequences=False, input_shape=input_shape)) model.add(Dropout(0.25)) # one to many model.add(RepeatVector(after_day)) model.add(LSTM(200, return_sequences=True)) model.add(Dropout(0.25)) model.add(TimeDistributed(Dense(100, activation='relu', kernel_initializer='uniform'))) model.add(TimeDistributed(Dense(feature_len, activation='linear', kernel_initializer='uniform'))) return model
Example #20
Source File: model.py From KerasDeepSpeech with GNU Affero General Public License v3.0 | 5 votes |
def build_ds5_no_ctc_and_xfer_weights(loaded_model, input_dim=161, fc_size=1024, rnn_size=512, output_dim=29, initialization='glorot_uniform', conv_layers=4): """ Pure CNN implementation""" K.set_learning_phase(0) for ind, i in enumerate(loaded_model.layers): print(ind, i) kernel_size = 11 # conv_depth_1 = 64 # conv_depth_2 = 256 # input_data = Input(shape=(None, input_dim), name='the_input') #batch x time x spectro size conv = ZeroPadding1D(padding=(0, 2048))(input_data) #pad on time dimension x = Conv1D(filters=128, name='conv_1', kernel_size=kernel_size, padding='valid', activation='relu', strides=2, weights = loaded_model.layers[2].get_weights())(conv) # x = Conv1D(filters=1024, name='conv_2', kernel_size=kernel_size, padding='valid', activation='relu', strides=2, # weights=loaded_model.layers[3].get_weights())(x) # Last Layer 5+6 Time Dist Dense Layer & Softmax x = TimeDistributed(Dense(fc_size, activation='relu', weights=loaded_model.layers[3].get_weights()))(x) y_pred = TimeDistributed(Dense(output_dim, name="y_pred", activation="softmax"))(x) model = Model(inputs=input_data, outputs=y_pred) return model
Example #21
Source File: lstm_mtm.py From stock-price-predict with MIT License | 5 votes |
def base_model(feature_len=1, after_day=1, input_shape=(20, 1)): model = Sequential() model.add(LSTM(units=100, return_sequences=False, input_shape=input_shape)) #model.add(LSTM(units=100, return_sequences=False, input_shape=input_shape)) # one to many model.add(RepeatVector(after_day)) model.add(LSTM(200, return_sequences=True)) #model.add(LSTM(50, return_sequences=True)) model.add(TimeDistributed(Dense(units=feature_len, activation='linear'))) return model
Example #22
Source File: model.py From Image-Caption-Generator with MIT License | 5 votes |
def AlternativeRNNModel(vocab_size, max_len, rnnConfig, model_type): embedding_size = rnnConfig['embedding_size'] if model_type == 'inceptionv3': # InceptionV3 outputs a 2048 dimensional vector for each image, which we'll feed to RNN Model image_input = Input(shape=(2048,)) elif model_type == 'vgg16': # VGG16 outputs a 4096 dimensional vector for each image, which we'll feed to RNN Model image_input = Input(shape=(4096,)) image_model_1 = Dense(embedding_size, activation='relu')(image_input) image_model = RepeatVector(max_len)(image_model_1) caption_input = Input(shape=(max_len,)) # mask_zero: We zero pad inputs to the same length, the zero mask ignores those inputs. E.g. it is an efficiency. caption_model_1 = Embedding(vocab_size, embedding_size, mask_zero=True)(caption_input) # Since we are going to predict the next word using the previous words # (length of previous words changes with every iteration over the caption), we have to set return_sequences = True. caption_model_2 = LSTM(rnnConfig['LSTM_units'], return_sequences=True)(caption_model_1) # caption_model = TimeDistributed(Dense(embedding_size, activation='relu'))(caption_model_2) caption_model = TimeDistributed(Dense(embedding_size))(caption_model_2) # Merging the models and creating a softmax classifier final_model_1 = concatenate([image_model, caption_model]) # final_model_2 = LSTM(rnnConfig['LSTM_units'], return_sequences=False)(final_model_1) final_model_2 = Bidirectional(LSTM(rnnConfig['LSTM_units'], return_sequences=False))(final_model_1) # final_model_3 = Dense(rnnConfig['dense_units'], activation='relu')(final_model_2) # final_model = Dense(vocab_size, activation='softmax')(final_model_3) final_model = Dense(vocab_size, activation='softmax')(final_model_2) model = Model(inputs=[image_input, caption_input], outputs=final_model) model.compile(loss='categorical_crossentropy', optimizer='adam') # model.compile(loss='categorical_crossentropy', optimizer='rmsprop') return model
Example #23
Source File: model.py From raster-deep-learning 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 trainable layer names if trainable and verbose > 0: log("{}{:20} ({})".format(" " * indent, layer.name, layer.__class__.__name__))
Example #24
Source File: model.py From DeepTL-Lane-Change-Classification with MIT License | 5 votes |
def find_trainable_layer(self, layer): """If a layer is encapsulated by another layer, this function digs through the encapsulation and returns the layer that holds the weights. """ if layer.__class__.__name__ == 'TimeDistributed': return self.find_trainable_layer(layer.layer) return layer
Example #25
Source File: model.py From DeepTL-Lane-Change-Classification 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 trainble layer names if trainable and verbose > 0: log("{}{:20} ({})".format(" " * indent, layer.name, layer.__class__.__name__))
Example #26
Source File: model.py From show-attend-and-tell-keras with MIT License | 5 votes |
def create_model(vocabulary_size, embedding_size, T, L, D): image_features_input = Input(shape=(L, D), name="image_features_input") captions_input = Input(shape=(T,), name="captions_input") captions = Embedding(vocabulary_size, embedding_size, input_length=T)(captions_input) averaged_image_features = Lambda(lambda x: K.mean(x, axis=1)) averaged_image_features = averaged_image_features(image_features_input) initial_state_h = Dense(embedding_size)(averaged_image_features) initial_state_c = Dense(embedding_size)(averaged_image_features) image_features = TimeDistributed(Dense(D, activation="relu"))(image_features_input) encoder = LSTM(embedding_size, return_sequences=True, return_state=True, recurrent_dropout=0.1) attented_encoder = ExternalAttentionRNNWrapper(encoder, return_attention=True) output = TimeDistributed(Dense(vocabulary_size, activation="softmax"), name="output") # for training purpose attented_encoder_training_data, _, _ , _= attented_encoder([captions, image_features], initial_state=[initial_state_h, initial_state_c]) training_output_data = output(attented_encoder_training_data) training_model = Model(inputs=[captions_input, image_features_input], outputs=training_output_data) initial_state_inference_model = Model(inputs=[image_features_input], outputs=[initial_state_h, initial_state_c]) inference_initial_state_h = Input(shape=(embedding_size,)) inference_initial_state_c = Input(shape=(embedding_size,)) attented_encoder_inference_data, inference_encoder_state_h, inference_encoder_state_c, inference_attention = attented_encoder( [captions, image_features], initial_state=[inference_initial_state_h, inference_initial_state_c] ) inference_output_data = output(attented_encoder_inference_data) inference_model = Model( inputs=[image_features_input, captions_input, inference_initial_state_h, inference_initial_state_c], outputs=[inference_output_data, inference_encoder_state_h, inference_encoder_state_c, inference_attention] ) return training_model, inference_model, initial_state_inference_model
Example #27
Source File: inception_resnet_v2.py From Keras-FasterRCNN with MIT License | 5 votes |
def classifier_layers(x, input_shape, trainable=False): # compile times on theano tend to be very high, so we use smaller ROI pooling regions to workaround # (hence a smaller stride in the region that follows the ROI pool) channel_axis = 1 if K.image_data_format() == 'channels_first' else 4 # Mixed 7a (Reduction-B block): 8 x 8 x 2080 branch_0 = conv2d_bn_td(x, 256, 1, name='Reduction_B_block' + '_conv1') branch_0 = conv2d_bn_td(branch_0, 384, 3, strides=2, padding='valid', name='Reduction_B_block' + '_conv2') branch_1 = conv2d_bn_td(x, 256, 1, name='Reduction_B_block' + '_conv3') branch_1 = conv2d_bn_td(branch_1, 288, 3, strides=2, padding='valid', name='Reduction_B_block' + '_conv4') branch_2 = conv2d_bn_td(x, 256, 1, name='Reduction_B_block' + '_conv5') branch_2 = conv2d_bn_td(branch_2, 288, 3, name='Reduction_B_block' + '_conv6') branch_2 = conv2d_bn_td(branch_2, 320, 3, strides=2, padding='valid', name='Reduction_B_block' + '_conv7') branch_pool = TimeDistributed(MaxPooling2D(3, strides=2, padding='valid'))(x) branches = [branch_0, branch_1, branch_2, branch_pool] x = Concatenate(axis=channel_axis, name='mixed_7a')(branches) # 10x block8 (Inception-ResNet-C block): 8 x 8 x 2080 for block_idx in range(1, 10): x = inception_resnet_block_td(x, scale=0.2, block_type='block8', block_idx=block_idx) x = inception_resnet_block_td(x, scale=1., activation=None, block_type='block8', block_idx=10) # Final convolution block: 8 x 8 x 1536 x = conv2d_bn_td(x, 1536, 1, name='conv_7b') TimeDistributed(GlobalAveragePooling2D(), name='avg_pool')(x) return x
Example #28
Source File: inception_resnet_v2.py From Keras-FasterRCNN with MIT License | 5 votes |
def conv2d_bn_td(x, filters, kernel_size, strides=1, padding='same', activation='relu', use_bias=False, name=None): """Utility function to apply conv + BN. # Arguments x: input tensor. filters: filters in `Conv2D`. kernel_size: kernel size as in `Conv2D`. strides: strides in `Conv2D`. padding: padding mode in `Conv2D`. activation: activation in `Conv2D`. use_bias: whether to use a bias in `Conv2D`. name: name of the ops; will become `name + '_ac'` for the activation and `name + '_bn'` for the batch norm layer. # Returns Output tensor after applying `Conv2D` and `BatchNormalization`. """ x = TimeDistributed(Conv2D(filters, kernel_size, strides=strides, padding=padding, use_bias=use_bias), name=name)(x) if not use_bias: bn_axis = 1 if K.image_data_format() == 'channels_first' else 3 bn_name = None if name is None else name + '_bn' x = TimeDistributed(BatchNormalization(axis=bn_axis, scale=False), name=bn_name)(x) if activation is not None: ac_name = None if name is None else name + '_ac' x = Activation(activation, name=ac_name)(x) return x
Example #29
Source File: model.py From Mask-RCNN-Pedestrian-Detection with MIT License | 5 votes |
def find_trainable_layer(self, layer): """If a layer is encapsulated by another layer, this function digs through the encapsulation and returns the layer that holds the weights. """ if layer.__class__.__name__ == 'TimeDistributed': return self.find_trainable_layer(layer.layer) return layer
Example #30
Source File: model.py From Mask-RCNN-Pedestrian-Detection 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 trainble layer names if trainable and verbose > 0: log("{}{:20} ({})".format(" " * indent, layer.name, layer.__class__.__name__))