Python keras.layers.Permute() Examples
The following are 30
code examples of keras.layers.Permute().
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: utils.py From deeplabv2-keras with MIT License | 6 votes |
def softmax(x, restore_shape=True): """ Softmax activation for a tensor x. No need to unroll the input first. :param x: x is a tensor with shape (None, channels, h, w) :param restore_shape: if False, output is returned unrolled (None, h * w, channels) :return: softmax activation of tensor x """ _, c, h, w = x._keras_shape x = Permute(dims=(2, 3, 1))(x) x = Reshape(target_shape=(h * w, c))(x) x = Activation('softmax')(x) if restore_shape: x = Reshape(target_shape=(h, w, c))(x) x = Permute(dims=(3, 1, 2))(x) return x
Example #2
Source File: mtcnn.py From faceswap with GNU General Public License v3.0 | 6 votes |
def model_definition(): """ Keras ONetwork for MTCNN """ input_ = Input(shape=(48, 48, 3)) var_x = Conv2D(32, (3, 3), strides=1, padding='valid', name='conv1')(input_) var_x = PReLU(shared_axes=[1, 2], name='prelu1')(var_x) var_x = MaxPool2D(pool_size=3, strides=2, padding='same')(var_x) var_x = Conv2D(64, (3, 3), strides=1, padding='valid', name='conv2')(var_x) var_x = PReLU(shared_axes=[1, 2], name='prelu2')(var_x) var_x = MaxPool2D(pool_size=3, strides=2)(var_x) var_x = Conv2D(64, (3, 3), strides=1, padding='valid', name='conv3')(var_x) var_x = PReLU(shared_axes=[1, 2], name='prelu3')(var_x) var_x = MaxPool2D(pool_size=2)(var_x) var_x = Conv2D(128, (2, 2), strides=1, padding='valid', name='conv4')(var_x) var_x = PReLU(shared_axes=[1, 2], name='prelu4')(var_x) var_x = Permute((3, 2, 1))(var_x) var_x = Flatten()(var_x) var_x = Dense(256, name='conv5')(var_x) var_x = PReLU(name='prelu5')(var_x) classifier = Dense(2, activation='softmax', name='conv6-1')(var_x) bbox_regress = Dense(4, name='conv6-2')(var_x) landmark_regress = Dense(10, name='conv6-3')(var_x) return [input_], [classifier, bbox_regress, landmark_regress]
Example #3
Source File: multivariate_example.py From interp-net with MIT License | 6 votes |
def interp_net(): if gpu_num > 1: dev = "/cpu:0" else: dev = "/gpu:0" with tf.device(dev): main_input = Input(shape=(4*num_features, timestamp), name='input') sci = single_channel_interp(ref_points, hours_look_ahead) cci = cross_channel_interp() interp = cci(sci(main_input)) reconst = cci(sci(main_input, reconstruction=True), reconstruction=True) aux_output = Lambda(lambda x: x, name='aux_output')(reconst) z = Permute((2, 1))(interp) z = GRU(hid, activation='tanh', recurrent_dropout=0.2, dropout=0.2)(z) main_output = Dense(1, activation='sigmoid', name='main_output')(z) orig_model = Model([main_input], [main_output, aux_output]) if gpu_num > 1: model = multi_gpu_model(orig_model, gpus=gpu_num) else: model = orig_model print(orig_model.summary()) return model
Example #4
Source File: spatial_gru.py From MatchZoo with Apache License 2.0 | 6 votes |
def softmax_by_row(self, z: typing.Any) -> tuple: """Conduct softmax on each dimension across the four gates.""" # z_transform: [B, U, 4] z_transform = Permute((2, 1))(Reshape((4, self._units))(z)) size = [-1, 1, -1] # Perform softmax on each slice for i in range(0, self._units): begin = [0, i, 0] # z_slice: [B, 1, 4] z_slice = tf.slice(z_transform, begin, size) if i == 0: z_s = tf.nn.softmax(z_slice) else: z_s = tf.concat([z_s, tf.nn.softmax(z_slice)], 1) # zi, zl, zt, zd: [B, U] zi, zl, zt, zd = tf.unstack(z_s, axis=2) return zi, zl, zt, zd
Example #5
Source File: mtcnn_model.py From SmooFaceEngine with Apache License 2.0 | 6 votes |
def create_Kao_Onet( weight_path = 'model48.h5'): input = Input(shape = [48,48,3]) x = Conv2D(32, (3, 3), strides=1, padding='valid', name='conv1')(input) x = PReLU(shared_axes=[1,2],name='prelu1')(x) x = MaxPool2D(pool_size=3, strides=2, padding='same')(x) x = Conv2D(64, (3, 3), strides=1, padding='valid', name='conv2')(x) x = PReLU(shared_axes=[1,2],name='prelu2')(x) x = MaxPool2D(pool_size=3, strides=2)(x) x = Conv2D(64, (3, 3), strides=1, padding='valid', name='conv3')(x) x = PReLU(shared_axes=[1,2],name='prelu3')(x) x = MaxPool2D(pool_size=2)(x) x = Conv2D(128, (2, 2), strides=1, padding='valid', name='conv4')(x) x = PReLU(shared_axes=[1,2],name='prelu4')(x) x = Permute((3,2,1))(x) x = Flatten()(x) x = Dense(256, name='conv5') (x) x = PReLU(name='prelu5')(x) classifier = Dense(2, activation='softmax',name='conv6-1')(x) bbox_regress = Dense(4,name='conv6-2')(x) landmark_regress = Dense(10,name='conv6-3')(x) model = Model([input], [classifier, bbox_regress, landmark_regress]) model.load_weights(weight_path, by_name=True) return model
Example #6
Source File: mtcnn_model.py From SmooFaceEngine with Apache License 2.0 | 6 votes |
def create_Kao_Rnet (weight_path = 'model24.h5'): input = Input(shape=[24, 24, 3]) # change this shape to [None,None,3] to enable arbitraty shape input x = Conv2D(28, (3, 3), strides=1, padding='valid', name='conv1')(input) x = PReLU(shared_axes=[1, 2], name='prelu1')(x) x = MaxPool2D(pool_size=3,strides=2, padding='same')(x) x = Conv2D(48, (3, 3), strides=1, padding='valid', name='conv2')(x) x = PReLU(shared_axes=[1, 2], name='prelu2')(x) x = MaxPool2D(pool_size=3, strides=2)(x) x = Conv2D(64, (2, 2), strides=1, padding='valid', name='conv3')(x) x = PReLU(shared_axes=[1, 2], name='prelu3')(x) x = Permute((3, 2, 1))(x) x = Flatten()(x) x = Dense(128, name='conv4')(x) x = PReLU( name='prelu4')(x) classifier = Dense(2, activation='softmax', name='conv5-1')(x) bbox_regress = Dense(4, name='conv5-2')(x) model = Model([input], [classifier, bbox_regress]) model.load_weights(weight_path, by_name=True) return model
Example #7
Source File: mtcnn.py From faceswap with GNU General Public License v3.0 | 6 votes |
def model_definition(): """ Keras RNetwork for MTCNN """ input_ = Input(shape=(24, 24, 3)) var_x = Conv2D(28, (3, 3), strides=1, padding='valid', name='conv1')(input_) var_x = PReLU(shared_axes=[1, 2], name='prelu1')(var_x) var_x = MaxPool2D(pool_size=3, strides=2, padding='same')(var_x) var_x = Conv2D(48, (3, 3), strides=1, padding='valid', name='conv2')(var_x) var_x = PReLU(shared_axes=[1, 2], name='prelu2')(var_x) var_x = MaxPool2D(pool_size=3, strides=2)(var_x) var_x = Conv2D(64, (2, 2), strides=1, padding='valid', name='conv3')(var_x) var_x = PReLU(shared_axes=[1, 2], name='prelu3')(var_x) var_x = Permute((3, 2, 1))(var_x) var_x = Flatten()(var_x) var_x = Dense(128, name='conv4')(var_x) var_x = PReLU(name='prelu4')(var_x) classifier = Dense(2, activation='softmax', name='conv5-1')(var_x) bbox_regress = Dense(4, name='conv5-2')(var_x) return [input_], [classifier, bbox_regress]
Example #8
Source File: utils.py From dilation-keras with MIT License | 6 votes |
def softmax(x, restore_shape=True): """ Softmax activation for a tensor x. No need to unroll the input first. :param x: x is a tensor with shape (None, channels, h, w) :param restore_shape: if False, output is returned unrolled (None, h * w, channels) :return: softmax activation of tensor x """ _, c, h, w = x._keras_shape x = Permute(dims=(2, 3, 1))(x) x = Reshape(target_shape=(h * w, c))(x) x = Activation('softmax')(x) if restore_shape: x = Reshape(target_shape=(h, w, c))(x) x = Permute(dims=(3, 1, 2))(x) return x
Example #9
Source File: blocks.py From dfc2019 with MIT License | 6 votes |
def DUC(factor=(8, 8)): if factor[0] != factor[1]: raise ValueError('DUC upconvolution support only equal factors, ' 'got {}'.format(factor)) factor = factor[0] def layer(input_tensor): h, w, c = int_shape(input_tensor)[1:] H = h * factor W = w * factor x = Conv2DBlock(c*factor**2, (1,1), padding='same', name='duc_{}'.format(factor))(input_tensor) x = Permute((3, 1, 2))(x) x = Reshape((c, factor, factor, h, w))(x) x = Permute((1, 4, 2, 5, 3))(x) x = Reshape((c, H, W))(x) x = Permute((2, 3, 1))(x) return x return layer
Example #10
Source File: dqn_breakout.py From Deep-Learning-Quick-Reference with MIT License | 6 votes |
def build_model(state_size, num_actions): input_shape = (4,) + state_size model = Sequential() if K.image_dim_ordering() == 'tf': # (width, height, channels) model.add(Permute((2, 3, 1), input_shape=input_shape)) elif K.image_dim_ordering() == 'th': # (channels, width, height) model.add(Permute((1, 2, 3), input_shape=input_shape)) else: raise RuntimeError('Unknown image_dim_ordering.') model.add(Convolution2D(32, 8, 8, subsample=(4, 4))) model.add(Activation('relu')) model.add(Convolution2D(64, 4, 4, subsample=(2, 2))) model.add(Activation('relu')) model.add(Convolution2D(64, 3, 3, subsample=(1, 1))) model.add(Activation('relu')) model.add(Flatten()) model.add(Dense(512)) model.add(Activation('relu')) model.add(Dense(num_actions)) model.add(Activation('linear')) print(model.summary()) return model
Example #11
Source File: dqn_breakout_test.py From Deep-Learning-Quick-Reference with MIT License | 6 votes |
def build_model(state_size, num_actions): input_shape = (4,) + state_size model = Sequential() if K.image_dim_ordering() == 'tf': # (width, height, channels) model.add(Permute((2, 3, 1), input_shape=input_shape)) elif K.image_dim_ordering() == 'th': # (channels, width, height) model.add(Permute((1, 2, 3), input_shape=input_shape)) else: raise RuntimeError('Unknown image_dim_ordering.') model.add(Convolution2D(32, 8, 8, subsample=(4, 4))) model.add(Activation('relu')) model.add(Convolution2D(64, 4, 4, subsample=(2, 2))) model.add(Activation('relu')) model.add(Convolution2D(64, 3, 3, subsample=(1, 1))) model.add(Activation('relu')) model.add(Flatten()) model.add(Dense(512)) model.add(Activation('relu')) model.add(Dense(num_actions)) model.add(Activation('linear')) print(model.summary()) return model
Example #12
Source File: blocks.py From SpaceNet_Off_Nadir_Solutions with Apache License 2.0 | 6 votes |
def DUC(factor=(8, 8)): if factor[0] != factor[1]: raise ValueError('DUC upconvolution support only equal factors, ' 'got {}'.format(factor)) factor = factor[0] def layer(input_tensor): h, w, c = int_shape(input_tensor)[1:] H = h * factor W = w * factor x = Conv2DBlock(c*factor**2, (1,1), padding='same', name='duc_{}'.format(factor))(input_tensor) x = Permute((3, 1, 2))(x) x = Reshape((c, factor, factor, h, w))(x) x = Permute((1, 4, 2, 5, 3))(x) x = Reshape((c, H, W))(x) x = Permute((2, 3, 1))(x) return x return layer
Example #13
Source File: MTCNN.py From keras-mtcnn with MIT License | 6 votes |
def create_Kao_Onet( weight_path = 'model48.h5'): input = Input(shape = [48,48,3]) x = Conv2D(32, (3, 3), strides=1, padding='valid', name='conv1')(input) x = PReLU(shared_axes=[1,2],name='prelu1')(x) x = MaxPool2D(pool_size=3, strides=2, padding='same')(x) x = Conv2D(64, (3, 3), strides=1, padding='valid', name='conv2')(x) x = PReLU(shared_axes=[1,2],name='prelu2')(x) x = MaxPool2D(pool_size=3, strides=2)(x) x = Conv2D(64, (3, 3), strides=1, padding='valid', name='conv3')(x) x = PReLU(shared_axes=[1,2],name='prelu3')(x) x = MaxPool2D(pool_size=2)(x) x = Conv2D(128, (2, 2), strides=1, padding='valid', name='conv4')(x) x = PReLU(shared_axes=[1,2],name='prelu4')(x) x = Permute((3,2,1))(x) x = Flatten()(x) x = Dense(256, name='conv5') (x) x = PReLU(name='prelu5')(x) classifier = Dense(2, activation='softmax',name='conv6-1')(x) bbox_regress = Dense(4,name='conv6-2')(x) landmark_regress = Dense(10,name='conv6-3')(x) model = Model([input], [classifier, bbox_regress, landmark_regress]) model.load_weights(weight_path, by_name=True) return model
Example #14
Source File: MTCNN.py From keras-mtcnn with MIT License | 6 votes |
def create_Kao_Rnet (weight_path = 'model24.h5'): input = Input(shape=[24, 24, 3]) # change this shape to [None,None,3] to enable arbitraty shape input x = Conv2D(28, (3, 3), strides=1, padding='valid', name='conv1')(input) x = PReLU(shared_axes=[1, 2], name='prelu1')(x) x = MaxPool2D(pool_size=3,strides=2, padding='same')(x) x = Conv2D(48, (3, 3), strides=1, padding='valid', name='conv2')(x) x = PReLU(shared_axes=[1, 2], name='prelu2')(x) x = MaxPool2D(pool_size=3, strides=2)(x) x = Conv2D(64, (2, 2), strides=1, padding='valid', name='conv3')(x) x = PReLU(shared_axes=[1, 2], name='prelu3')(x) x = Permute((3, 2, 1))(x) x = Flatten()(x) x = Dense(128, name='conv4')(x) x = PReLU( name='prelu4')(x) classifier = Dense(2, activation='softmax', name='conv5-1')(x) bbox_regress = Dense(4, name='conv5-2')(x) model = Model([input], [classifier, bbox_regress]) model.load_weights(weight_path, by_name=True) return model
Example #15
Source File: dl_models.py From Sarcasm-Detection with MIT License | 5 votes |
def stateless_attention_model(**kwargs): X = LSTM(kwargs['hidden_units'], kernel_initializer='he_normal', activation='tanh', dropout=kwargs['dropout'], return_sequences=True)(kwargs['embeddings']) attention_layer = Permute((2, 1))(X) attention_layer = Dense(kwargs['max_tweet_length'], activation='softmax')(attention_layer) attention_layer = Lambda(lambda x: K.mean(x, axis=1), name='dim_reduction')(attention_layer) attention_layer = RepeatVector(int(X.shape[2]))(attention_layer) attention_probabilities = Permute((2, 1), name='attention_probs')(attention_layer) attention_layer = Multiply()([X, attention_probabilities]) attention_layer = Flatten()(attention_layer) return attention_layer
Example #16
Source File: keras_bert_classify_text_cnn.py From nlp_xiaojiang with MIT License | 5 votes |
def attention(inputs, single_attention_vector=False): # attention机制 time_steps = k_keras.int_shape(inputs)[1] input_dim = k_keras.int_shape(inputs)[2] x = Permute((2, 1))(inputs) x = Dense(time_steps, activation='softmax')(x) if single_attention_vector: x = Lambda(lambda x: k_keras.mean(x, axis=1))(x) x = RepeatVector(input_dim)(x) a_probs = Permute((2, 1))(x) output_attention_mul = Multiply()([inputs, a_probs]) return output_attention_mul
Example #17
Source File: keras_bert_classify_bi_lstm.py From nlp_xiaojiang with MIT License | 5 votes |
def attention(inputs, single_attention_vector=False): # attention机制 time_steps = k_keras.int_shape(inputs)[1] input_dim = k_keras.int_shape(inputs)[2] x = Permute((2, 1))(inputs) x = Dense(time_steps, activation='softmax')(x) if single_attention_vector: x = Lambda(lambda x: k_keras.mean(x, axis=1))(x) x = RepeatVector(input_dim)(x) a_probs = Permute((2, 1))(x) output_attention_mul = Multiply()([inputs, a_probs]) return output_attention_mul
Example #18
Source File: utils.py From CIKM-AnalytiCup-2018 with Apache License 2.0 | 5 votes |
def soft_attention_alignment(input_1, input_2): "Align text representation with neural soft attention" attention = Dot(axes=-1)([input_1, input_2]) w_att_1 = Lambda(lambda x: softmax(x, axis=1), output_shape=unchanged_shape)(attention) w_att_2 = Permute((2, 1))(Lambda(lambda x: softmax(x, axis=2), output_shape=unchanged_shape)(attention)) in1_aligned = Dot(axes=1)([w_att_1, input_1]) in2_aligned = Dot(axes=1)([w_att_2, input_2]) return in1_aligned, in2_aligned
Example #19
Source File: inceptionv3_crnn.py From crnn-lid with GNU General Public License v3.0 | 5 votes |
def create_model(input_shape, config): input_tensor = Input(shape=input_shape) # this assumes K.image_dim_ordering() == 'tf' inception_model = InceptionV3(include_top=False, weights=None, input_tensor=input_tensor) # inception_model.load_weights("logs/2016-12-18-13-56-44/weights.21.model", by_name=True) for layer in inception_model.layers: layer.trainable = False x = inception_model.output #x = GlobalAveragePooling2D()(x) # (bs, y, x, c) --> (bs, x, y, c) x = Permute((2, 1, 3))(x) # (bs, x, y, c) --> (bs, x, y * c) _x, _y, _c = [int(s) for s in x._shape[1:]] x = Reshape((_x, _y*_c))(x) x = Bidirectional(LSTM(512, return_sequences=False), merge_mode="concat")(x) predictions = Dense(config["num_classes"], activation='softmax')(x) model = Model(input=inception_model.input, output=predictions) model.load_weights("logs/2017-01-02-13-39-41/weights.06.model") return model
Example #20
Source File: mtcnn.py From mtcnn-keras with MIT License | 5 votes |
def create_Rnet(weight_path): input = Input(shape=[24, 24, 3]) # 24,24,3 -> 11,11,28 x = Conv2D(28, (3, 3), strides=1, padding='valid', name='conv1')(input) x = PReLU(shared_axes=[1, 2], name='prelu1')(x) x = MaxPool2D(pool_size=3,strides=2, padding='same')(x) # 11,11,28 -> 4,4,48 x = Conv2D(48, (3, 3), strides=1, padding='valid', name='conv2')(x) x = PReLU(shared_axes=[1, 2], name='prelu2')(x) x = MaxPool2D(pool_size=3, strides=2)(x) # 4,4,48 -> 3,3,64 x = Conv2D(64, (2, 2), strides=1, padding='valid', name='conv3')(x) x = PReLU(shared_axes=[1, 2], name='prelu3')(x) # 3,3,64 -> 64,3,3 x = Permute((3, 2, 1))(x) x = Flatten()(x) # 576 -> 128 x = Dense(128, name='conv4')(x) x = PReLU( name='prelu4')(x) # 128 -> 2 128 -> 4 classifier = Dense(2, activation='softmax', name='conv5-1')(x) bbox_regress = Dense(4, name='conv5-2')(x) model = Model([input], [classifier, bbox_regress]) model.load_weights(weight_path, by_name=True) return model #-----------------------------# # mtcnn的第三段 # 精修框并获得五个点 #-----------------------------#
Example #21
Source File: mtcnn.py From mtcnn-keras with MIT License | 5 votes |
def create_Onet(weight_path): input = Input(shape = [48,48,3]) # 48,48,3 -> 23,23,32 x = Conv2D(32, (3, 3), strides=1, padding='valid', name='conv1')(input) x = PReLU(shared_axes=[1,2],name='prelu1')(x) x = MaxPool2D(pool_size=3, strides=2, padding='same')(x) # 23,23,32 -> 10,10,64 x = Conv2D(64, (3, 3), strides=1, padding='valid', name='conv2')(x) x = PReLU(shared_axes=[1,2],name='prelu2')(x) x = MaxPool2D(pool_size=3, strides=2)(x) # 8,8,64 -> 4,4,64 x = Conv2D(64, (3, 3), strides=1, padding='valid', name='conv3')(x) x = PReLU(shared_axes=[1,2],name='prelu3')(x) x = MaxPool2D(pool_size=2)(x) # 4,4,64 -> 3,3,128 x = Conv2D(128, (2, 2), strides=1, padding='valid', name='conv4')(x) x = PReLU(shared_axes=[1,2],name='prelu4')(x) # 3,3,128 -> 128,12,12 x = Permute((3,2,1))(x) # 1152 -> 256 x = Flatten()(x) x = Dense(256, name='conv5') (x) x = PReLU(name='prelu5')(x) # 鉴别 # 256 -> 2 256 -> 4 256 -> 10 classifier = Dense(2, activation='softmax',name='conv6-1')(x) bbox_regress = Dense(4,name='conv6-2')(x) landmark_regress = Dense(10,name='conv6-3')(x) model = Model([input], [classifier, bbox_regress, landmark_regress]) model.load_weights(weight_path, by_name=True) return model
Example #22
Source File: layers_export.py From Fabrik with GNU General Public License v3.0 | 5 votes |
def permute(layer, layer_in, layerId, tensor=True): out = {layerId: Permute(map(int, layer['params']['dim'].split(',')))} if tensor: out[layerId] = out[layerId](*layer_in) return out
Example #23
Source File: test_views.py From Fabrik with GNU General Public License v3.0 | 5 votes |
def test_keras_import(self): model = Sequential() model.add(Permute((2, 1), input_shape=(64, 10))) model.build() self.keras_type_test(model, 0, 'Permute')
Example #24
Source File: test_views.py From Fabrik with GNU General Public License v3.0 | 5 votes |
def test_keras_export(self): tests = open(os.path.join(settings.BASE_DIR, 'tests', 'unit', 'keras_app', 'keras_export_test.json'), 'r') response = json.load(tests) tests.close() net = yaml.safe_load(json.dumps(response['net'])) net = {'l0': net['Input2'], 'l1': net['Permute']} net['l0']['connection']['output'].append('l1') inp = data(net['l0'], '', 'l0')['l0'] net = permute(net['l1'], [inp], 'l1') model = Model(inp, net['l1']) self.assertEqual(model.layers[1].__class__.__name__, 'Permute')
Example #25
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 #26
Source File: attention_module.py From CBAM-keras with MIT License | 5 votes |
def spatial_attention(input_feature): kernel_size = 7 if K.image_data_format() == "channels_first": channel = input_feature._keras_shape[1] cbam_feature = Permute((2,3,1))(input_feature) else: channel = input_feature._keras_shape[-1] cbam_feature = input_feature avg_pool = Lambda(lambda x: K.mean(x, axis=3, keepdims=True))(cbam_feature) assert avg_pool._keras_shape[-1] == 1 max_pool = Lambda(lambda x: K.max(x, axis=3, keepdims=True))(cbam_feature) assert max_pool._keras_shape[-1] == 1 concat = Concatenate(axis=3)([avg_pool, max_pool]) assert concat._keras_shape[-1] == 2 cbam_feature = Conv2D(filters = 1, kernel_size=kernel_size, strides=1, padding='same', activation='sigmoid', kernel_initializer='he_normal', use_bias=False)(concat) assert cbam_feature._keras_shape[-1] == 1 if K.image_data_format() == "channels_first": cbam_feature = Permute((3, 1, 2))(cbam_feature) return multiply([input_feature, cbam_feature])
Example #27
Source File: pie_predict.py From PIEPredict with Apache License 2.0 | 5 votes |
def attention_temporal(self, input_data, sequence_length): """ A temporal attention layer :param input_data: Network input :param sequence_length: Length of the input sequence :return: The output of attention layer """ a = Permute((2, 1))(input_data) a = Dense(sequence_length, activation='sigmoid')(a) a_probs = Permute((2, 1))(a) output_attention_mul = Multiply()([input_data, a_probs]) return output_attention_mul
Example #28
Source File: pspnet.py From keras-image-segmentation with MIT License | 5 votes |
def duc(x, factor=8, output_shape=(512, 512, 1)): if K.image_data_format() == 'channels_last': bn_axis = 3 else: bn_axis = 1 H, W, c, r = output_shape[0], output_shape[1], output_shape[2], factor h = H / r w = W / r x = Conv2D( c*r*r, (3, 3), padding='same', name='conv_duc_%s'%factor)(x) x = BatchNormalization(axis=bn_axis,name='bn_duc_%s'%factor)(x) x = Activation('relu')(x) x = Permute((3, 1, 2))(x) x = Reshape((c, r, r, h, w))(x) x = Permute((1, 4, 2, 5, 3))(x) x = Reshape((c, H, W))(x) x = Permute((2, 3, 1))(x) return x # interpolation
Example #29
Source File: se.py From keras-squeeze-excite-network with MIT License | 5 votes |
def squeeze_excite_block(input, ratio=16): ''' Create a channel-wise squeeze-excite block Args: input: input tensor filters: number of output filters Returns: a keras tensor References - [Squeeze and Excitation Networks](https://arxiv.org/abs/1709.01507) ''' init = input channel_axis = 1 if K.image_data_format() == "channels_first" else -1 filters = init._keras_shape[channel_axis] se_shape = (1, 1, filters) se = GlobalAveragePooling2D()(init) se = Reshape(se_shape)(se) se = Dense(filters // ratio, activation='relu', kernel_initializer='he_normal', use_bias=False)(se) se = Dense(filters, activation='sigmoid', kernel_initializer='he_normal', use_bias=False)(se) if K.image_data_format() == 'channels_first': se = Permute((3, 1, 2))(se) x = multiply([init, se]) return x
Example #30
Source File: se.py From keras-squeeze-excite-network with MIT License | 5 votes |
def squeeze_excite_block(input_tensor, ratio=16): """ Create a channel-wise squeeze-excite block Args: input_tensor: input Keras tensor ratio: number of output filters Returns: a Keras tensor References - [Squeeze and Excitation Networks](https://arxiv.org/abs/1709.01507) """ init = input_tensor channel_axis = 1 if K.image_data_format() == "channels_first" else -1 filters = _tensor_shape(init)[channel_axis] se_shape = (1, 1, filters) se = GlobalAveragePooling2D()(init) se = Reshape(se_shape)(se) se = Dense(filters // ratio, activation='relu', kernel_initializer='he_normal', use_bias=False)(se) se = Dense(filters, activation='sigmoid', kernel_initializer='he_normal', use_bias=False)(se) if K.image_data_format() == 'channels_first': se = Permute((3, 1, 2))(se) x = multiply([init, se]) return x