Python keras.layers.convolutional.MaxPooling1D() Examples
The following are 23
code examples of keras.layers.convolutional.MaxPooling1D().
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.convolutional
, or try the search function
.
Example #1
Source File: model_zoo.py From visual_turing_test-tutorial with MIT License | 6 votes |
def create(self): self.textual_embedding(self, mask_zero=False) self.add(Convolution1D( nb_filter=self._config.language_cnn_filters, filter_length=self._config.language_cnn_filter_length, border_mode='valid', activation=self._config.language_cnn_activation, subsample_length=1)) #self.add(MaxPooling1D(pool_length=self._config.language_max_pool_length)) self.add(self._config.recurrent_encoder( self._config.hidden_state_dim, return_sequences=False, go_backwards=False)) self.deep_mlp() self.add(Dense(self._config.output_dim)) self.add(Activation('softmax'))
Example #2
Source File: models.py From very-deep-convnets-raw-waveforms with Apache License 2.0 | 6 votes |
def m_rec(num_classes=10): from keras.layers.recurrent import LSTM print('Using Model LSTM 1') m = Sequential() m.add(Conv1D(64, input_shape=[AUDIO_LENGTH, 1], kernel_size=80, strides=4, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) m.add(LSTM(32, kernel_regularizer=regularizers.l2(l=0.0001), return_sequences=True, dropout=0.2)) m.add(LSTM(32, kernel_regularizer=regularizers.l2(l=0.0001), return_sequences=False, dropout=0.2)) m.add(Dense(32)) m.add(Dense(num_classes, activation='softmax')) return m
Example #3
Source File: deep_models.py From urgent-care-comparative with GNU General Public License v3.0 | 6 votes |
def hierarchical_cnn (input_shape, aux_shape, targets = 1, hidden = 256, multiclass = False, learn_rate=1e-4): x = Input(shape = input_shape, name = 'x') xx = Convolution1D(nb_filter = 64, filter_length = 3, border_mode = 'same', activation = 'relu') (x) xx = MaxPooling1D(pool_length = 3) (xx) xx = Bidirectional(LSTM (256, activation = 'relu'), merge_mode = 'concat') (xx) xx = Dropout(0.5)(xx) dx = Input(shape = aux_shape, name = 'aux') xx = concatenate([xx, dx]) if multiclass: y = Dense(targets, activation = 'softmax') (xx) model = Model(inputs = [x, dx], outputs = [y]) model.compile (loss = 'categorical_crossentropy', optimizer = Adam(lr = learn_rate), metrics = ['categorical_accuracy']) else: y = Dense(targets, activation = 'sigmoid') (xx) model = Model(inputs = [x, dx], outputs = [y]) model.compile (loss = 'binary_crossentropy', optimizer = Adam(lr = learn_rate), metrics = ['accuracy']) return (model)
Example #4
Source File: deep_models.py From urgent-care-comparative with GNU General Public License v3.0 | 6 votes |
def cnn_model(input_shape, hidden = 256, targets = 1, learn_rate = 1e-4): model = Sequential() model.add(Convolution1D(input_shape = input_shape, nb_filter = 64, filter_length = 3, border_mode = 'same', activation = 'relu')) model.add(MaxPooling1D(pool_length = 3)) model.add(Bidirectional(LSTM(hidden), merge_mode = 'concat')) model.add(Activation('tanh')) model.add(Dropout(0.5)) model.add(Dense(targets)) if multiclass: model.add(Activation('softmax')) model.compile(loss='categorical_crossentropy', optimizer=Adam(lr=learn_rate, beta_1 =.5 ), metrics=['categorical_accuracy']) else: model.add(Activation ('sigmoid')) model.compile(loss='binary_crossentropy', optimizer=Adam(lr=learn_rate, beta_1 =.5 ), metrics=['accuracy']) return (model)
Example #5
Source File: rnn_text.py From EventForecast with GNU Lesser General Public License v3.0 | 5 votes |
def model_cnn(vocab, weights, dataPath, batchn, epoch): global LEN global DIM global BATCH testx, testy = build_dataset('%s%d'%(dataPath, 2528), vocab, weights=weights) testx = np.array(testx, dtype=np.float64) testy = np.array(testx, dtype=np.float64) model = Sequential() #model.add(Embedding(400001, 50, input_length=LEN, mask_zero=False,weights=[embedModel])) model.add(Conv1D(input_shape=(LEN, DIM), filters=32, kernel_size=30, padding='same', activation='relu')) model.add(MaxPooling1D(pool_size=2)) model.add(Flatten()) model.add(Dense(250, activation='softmax')) model.add(Dense(1, activation='softmax')) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) print(model.summary()) index = 0 while True: data, result = build_dataset('%s%d'%(dataPath, index%2528), vocab, weights) for i in range(1, batchn): index += 1 newData, newResult = build_dataset('%s%d'%(dataPath, index), vocab, weights) data.extend(newData) result.extend(newResult) model.fit(np.array(data, dtype=np.float64), np.array(result, dtype=np.float64), epochs=10, batch_size=BATCH, verbose=2, validation_data = (testx,testy)) model.save('hotnews_c_%d_%d.h5'%(BATCH, index)) predict = model.predict(testx) for i in range(testy.shape[0]): print(testy[i], predict[i]) index += 1 if index > epoch: return model
Example #6
Source File: model_zoo.py From visual_turing_test-tutorial with MIT License | 5 votes |
def create(self): self.textual_embedding_fixed_length(self, mask_zero=False) self.add(Convolution1D( nb_filter=self._config.language_cnn_filters, filter_length=self._config.language_cnn_filter_length, border_mode='valid', activation=self._config.language_cnn_activation, subsample_length=1)) self.add(MaxPooling1D(pool_length=self._config.language_max_pool_length)) self.add(Flatten()) self.deep_mlp() self.add(Dense(self._config.output_dim)) self.add(Activation('softmax'))
Example #7
Source File: models.py From very-deep-convnets-raw-waveforms with Apache License 2.0 | 5 votes |
def m5(num_classes=10): print('Using Model M5') m = Sequential() m.add(Conv1D(128, input_shape=[AUDIO_LENGTH, 1], kernel_size=80, strides=4, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) m.add(Conv1D(128, kernel_size=3, strides=1, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) m.add(Conv1D(256, kernel_size=3, strides=1, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) m.add(Conv1D(512, kernel_size=3, strides=1, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) m.add(Lambda(lambda x: K.mean(x, axis=1))) # Same as GAP for 1D Conv Layer m.add(Dense(num_classes, activation='softmax')) return m
Example #8
Source File: models.py From very-deep-convnets-raw-waveforms with Apache License 2.0 | 5 votes |
def m3(num_classes=10): print('Using Model M3') m = Sequential() m.add(Conv1D(256, input_shape=[AUDIO_LENGTH, 1], kernel_size=80, strides=4, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) m.add(Conv1D(256, kernel_size=3, strides=1, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) m.add(Lambda(lambda x: K.mean(x, axis=1))) # Same as GAP for 1D Conv Layer m.add(Dense(num_classes, activation='softmax')) return m
Example #9
Source File: cnn.py From keras-english-resume-parser-and-analyzer with MIT License | 5 votes |
def define_model(self, length, vocab_size): embedding_size = 100 cnn_filter_size = 32 inputs1 = Input(shape=(length,)) embedding1 = Embedding(vocab_size, embedding_size)(inputs1) conv1 = Conv1D(filters=cnn_filter_size, kernel_size=4, activation='relu')( embedding1) drop1 = Dropout(0.5)(conv1) pool1 = MaxPooling1D(pool_size=2)(drop1) flat1 = Flatten()(pool1) inputs2 = Input(shape=(length,)) embedding2 = Embedding(vocab_size, embedding_size)(inputs2) conv2 = Conv1D(filters=cnn_filter_size, kernel_size=6, activation='relu')( embedding2) drop2 = Dropout(0.5)(conv2) pool2 = MaxPooling1D(pool_size=2)(drop2) flat2 = Flatten()(pool2) inputs3 = Input(shape=(length,)) embedding3 = Embedding(vocab_size, embedding_size)(inputs3) conv3 = Conv1D(filters=cnn_filter_size, kernel_size=8, activation='relu')( embedding3) drop3 = Dropout(0.5)(conv3) pool3 = MaxPooling1D(pool_size=2)(drop3) flat3 = Flatten()(pool3) merged = concatenate([flat1, flat2, flat3]) # interpretation dense1 = Dense(10, activation='relu')(merged) outputs = Dense(units=len(self.labels), activation='softmax')(dense1) model = Model(inputs=[inputs1, inputs2, inputs3], outputs=outputs) # compile model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # summarize print(model.summary()) return model
Example #10
Source File: cnn_lstm.py From hyperas with MIT License | 5 votes |
def model(X_train, X_test, y_train, y_test, maxlen, max_features): embedding_size = 300 pool_length = 4 lstm_output_size = 100 batch_size = 200 nb_epoch = 1 model = Sequential() model.add(Embedding(max_features, embedding_size, input_length=maxlen)) model.add(Dropout({{uniform(0, 1)}})) # Note that we use unnamed parameters here, which is bad style, but is used here # to demonstrate that it works. Always prefer named parameters. model.add(Convolution1D({{choice([64, 128])}}, {{choice([6, 8])}}, border_mode='valid', activation='relu', subsample_length=1)) model.add(MaxPooling1D(pool_length=pool_length)) model.add(LSTM(lstm_output_size)) model.add(Dense(1)) model.add(Activation('sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) print('Train...') model.fit(X_train, y_train, batch_size=batch_size, nb_epoch=nb_epoch, validation_data=(X_test, y_test)) score, acc = model.evaluate(X_test, y_test, batch_size=batch_size) print('Test score:', score) print('Test accuracy:', acc) return {'loss': -acc, 'status': STATUS_OK, 'model': model}
Example #11
Source File: convolutional_test.py From DeepLearning_Wavelet-LSTM with MIT License | 5 votes |
def test_maxpooling_1d(): for padding in ['valid', 'same']: for stride in [1, 2]: layer_test(convolutional.MaxPooling1D, kwargs={'strides': stride, 'padding': padding}, input_shape=(3, 5, 4))
Example #12
Source File: convolutional_test.py From DeepLearning_Wavelet-LSTM with MIT License | 5 votes |
def test_maxpooling_1d(): for padding in ['valid', 'same']: for stride in [1, 2]: layer_test(convolutional.MaxPooling1D, kwargs={'strides': stride, 'padding': padding}, input_shape=(3, 5, 4))
Example #13
Source File: convolutional_test.py From DeepLearning_Wavelet-LSTM with MIT License | 5 votes |
def test_maxpooling_1d(): for padding in ['valid', 'same']: for stride in [1, 2]: layer_test(convolutional.MaxPooling1D, kwargs={'strides': stride, 'padding': padding}, input_shape=(3, 5, 4))
Example #14
Source File: convolutional_test.py From DeepLearning_Wavelet-LSTM with MIT License | 5 votes |
def test_maxpooling_1d(): for padding in ['valid', 'same']: for stride in [1, 2]: layer_test(convolutional.MaxPooling1D, kwargs={'strides': stride, 'padding': padding}, input_shape=(3, 5, 4))
Example #15
Source File: convolutional_test.py From DeepLearning_Wavelet-LSTM with MIT License | 5 votes |
def test_maxpooling_1d(): for padding in ['valid', 'same']: for stride in [1, 2]: layer_test(convolutional.MaxPooling1D, kwargs={'strides': stride, 'padding': padding}, input_shape=(3, 5, 4))
Example #16
Source File: convolutional_test.py From DeepLearning_Wavelet-LSTM with MIT License | 5 votes |
def test_maxpooling_1d(): for padding in ['valid', 'same']: for stride in [1, 2]: layer_test(convolutional.MaxPooling1D, kwargs={'strides': stride, 'padding': padding}, input_shape=(3, 5, 4))
Example #17
Source File: convolutional_test.py From DeepLearning_Wavelet-LSTM with MIT License | 5 votes |
def test_maxpooling_1d(): for padding in ['valid', 'same']: for stride in [1, 2]: layer_test(convolutional.MaxPooling1D, kwargs={'strides': stride, 'padding': padding}, input_shape=(3, 5, 4))
Example #18
Source File: model_keras_cnn_rnn.py From Sentiment-Analysis-in-Event-Driven-Stock-Price-Movement-Prediction with MIT License | 5 votes |
def embeddingCNN(shape, clusters=2, embedLayer=200, middle = 100): top_words = 2001 lossType = 'binary_crossentropy' if clusters == 2 else 'categorical_crossentropy' model = Sequential() model.add(Embedding(top_words, embedLayer, input_length=shape)) model.add(Convolution1D(nb_filter=embedLayer, filter_length=3, border_mode='same', activation='relu')) model.add(MaxPooling1D(pool_length=2)) model.add(Flatten()) model.add(Dense(middle, activation='relu')) model.add(Dense(clusters, activation='sigmoid')) model.compile(loss=lossType, optimizer='adam', metrics=['accuracy']) return model
Example #19
Source File: models.py From very-deep-convnets-raw-waveforms with Apache License 2.0 | 4 votes |
def m11(num_classes=10): print('Using Model M11') m = Sequential() m.add(Conv1D(64, input_shape=[AUDIO_LENGTH, 1], kernel_size=80, strides=4, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) for i in range(2): m.add(Conv1D(64, kernel_size=3, strides=1, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) for i in range(2): m.add(Conv1D(128, kernel_size=3, strides=1, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) for i in range(3): m.add(Conv1D(256, kernel_size=3, strides=1, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) for i in range(2): m.add(Conv1D(512, kernel_size=3, strides=1, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(Lambda(lambda x: K.mean(x, axis=1))) # Same as GAP for 1D Conv Layer m.add(Dense(num_classes, activation='softmax')) return m
Example #20
Source File: Q_Learning_Agent.py From rf_helicopter with MIT License | 4 votes |
def create_neural_network_rnn(self): """ Create the Neural Network Model :return: Keras Modelh """ model = Sequential() # we start off with an efficient embedding layer which maps # our vocab indices into embedding_dims dimensions model.add(Embedding(12, # Number of Features from State Space 300, # Vector Size input_length=self.input_dim)) # we add a Convolution1D, which will learn nb_filter # word group filters of size filter_length: model.add(Convolution1D(nb_filter=self.nb_filter, filter_length=self.filter_length, border_mode='valid', activation='relu', subsample_length=1)) # we use standard max pooling (halving the output of the previous # layer): model.add(MaxPooling1D(pool_length=self.pool_length)) model.add(Dropout(self.dropout)) # We flatten the output of the conv layer, # so that we can add a vanilla dense layer: model.add(Flatten()) # We add a vanilla hidden layer: model.add(Dense(self.neurons)) model.add(Dropout(self.dropout)) model.add(Activation('relu')) # We project onto a single unit output layer, and squash it with a # sigmoid: model.add(Dense(len(self.actions))) model.add(Activation('linear')) model.compile(loss='mse', optimizer=Adadelta(lr=0.00025)) print(model.summary()) return model
Example #21
Source File: models.py From very-deep-convnets-raw-waveforms with Apache License 2.0 | 4 votes |
def m18(num_classes=10): print('Using Model M18') m = Sequential() m.add(Conv1D(64, input_shape=[AUDIO_LENGTH, 1], kernel_size=80, strides=4, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) for i in range(4): m.add(Conv1D(64, kernel_size=3, strides=1, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) for i in range(4): m.add(Conv1D(128, kernel_size=3, strides=1, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) for i in range(4): m.add(Conv1D(256, kernel_size=3, strides=1, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(MaxPooling1D(pool_size=4, strides=None)) for i in range(4): m.add(Conv1D(512, kernel_size=3, strides=1, padding='same', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(l=0.0001))) m.add(BatchNormalization()) m.add(Activation('relu')) m.add(Lambda(lambda x: K.mean(x, axis=1))) # Same as GAP for 1D Conv Layer m.add(Dense(num_classes, activation='softmax')) return m
Example #22
Source File: kerasClassify.py From emailinsight with MIT License | 4 votes |
def evaluate_conv_model(dataset, num_classes, maxlen=125,embedding_dims=250,max_features=5000,nb_filter=300,filter_length=3,num_hidden=250,dropout=0.25,verbose=True,pool_length=2,with_lstm=False): (X_train, Y_train), (X_test, Y_test) = dataset batch_size = 32 nb_epoch = 7 if verbose: print('Loading data...') print(len(X_train), 'train sequences') print(len(X_test), 'test sequences') print('Pad sequences (samples x time)') X_train = sequence.pad_sequences(X_train, maxlen=maxlen) X_test = sequence.pad_sequences(X_test, maxlen=maxlen) if verbose: print('X_train shape:', X_train.shape) print('X_test shape:', X_test.shape) print('Build model...') model = Sequential() # we start off with an efficient embedding layer which maps # our vocab indices into embedding_dims dimensions model.add(Embedding(max_features, embedding_dims, input_length=maxlen)) model.add(Dropout(dropout)) # we add a Convolution1D, which will learn nb_filter # word group filters of size filter_length: model.add(Conv1D(activation="relu", filters=nb_filter, kernel_size=filter_length, strides=1, padding="valid")) if pool_length: # we use standard max pooling (halving the output of the previous layer): model.add(MaxPooling1D(pool_size=2)) if with_lstm: model.add(LSTM(125)) else: # We flatten the output of the conv layer, # so that we can add a vanilla dense layer: model.add(Flatten()) #We add a vanilla hidden layer: model.add(Dense(num_hidden)) model.add(Activation('relu')) model.add(Dropout(dropout)) # We project onto a single unit output layer, and squash it with a sigmoid: model.add(Dense(num_classes)) model.add(Activation('softmax')) model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy']) model.fit(X_train, Y_train, batch_size=batch_size,epochs=nb_epoch, validation_split=0.1) score = model.evaluate(X_test, Y_test, batch_size=batch_size, verbose=1 if verbose else 0) if verbose: print('Test score:',score[0]) print('Test accuracy:', score[1]) predictions = model.predict_classes(X_test,verbose=1 if verbose else 0) return predictions,score[1]
Example #23
Source File: Unet.py From ECG_UNet with MIT License | 4 votes |
def Unet(nClasses, optimizer=None, input_length=1800, nChannels=1): inputs = Input((input_length, nChannels)) conv1 = Conv1D(16, 32, activation='relu', padding='same', kernel_initializer='he_normal')(inputs) conv1 = Conv1D(16, 32, activation='relu', padding='same', kernel_initializer='he_normal')(conv1) pool1 = MaxPooling1D(pool_size=2)(conv1) conv2 = Conv1D(32, 32, activation='relu', padding='same', kernel_initializer='he_normal')(pool1) conv2 = Dropout(0.2)(conv2) conv2 = Conv1D(32, 32, activation='relu', padding='same', kernel_initializer='he_normal')(conv2) pool2 = MaxPooling1D(pool_size=2)(conv2) conv3 = Conv1D(64, 32, activation='relu', padding='same', kernel_initializer='he_normal')(pool2) conv3 = Conv1D(64, 32, activation='relu', padding='same', kernel_initializer='he_normal')(conv3) pool3 = MaxPooling1D(pool_size=2)(conv3) conv4 = Conv1D(128, 32, activation='relu', padding='same', kernel_initializer='he_normal')(pool3) conv4 = Dropout(0.5)(conv4) conv4 = Conv1D(128, 32, activation='relu', padding='same', kernel_initializer='he_normal')(conv4) up1 = Conv1D(64, 2, activation='relu', padding='same', kernel_initializer='he_normal')(UpSampling1D(size=2)(conv4)) merge1 = concatenate([up1, conv3], axis=-1) conv5 = Conv1D(64, 32, activation='relu', padding='same', kernel_initializer='he_normal')(merge1) conv5 = Conv1D(64, 32, activation='relu', padding='same', kernel_initializer='he_normal')(conv5) up2 = Conv1D(32, 2, activation='relu', padding='same', kernel_initializer = 'he_normal')(UpSampling1D(size=2)(conv5)) merge2 = concatenate([up2, conv2], axis=-1) conv6 = Conv1D(32, 32, activation='relu', padding='same', kernel_initializer = 'he_normal')(merge2) conv6 = Dropout(0.2)(conv6) conv6 = Conv1D(32, 32, activation='relu', padding='same')(conv6) up3 = Conv1D(16, 2, activation='relu', padding='same', kernel_initializer='he_normal')(UpSampling1D(size=2)(conv6)) merge3 = concatenate([up3, conv1], axis=-1) conv7 = Conv1D(16, 32, activation='relu', padding='same', kernel_initializer='he_normal')(merge3) conv7 = Conv1D(16, 32, activation='relu', padding='same', kernel_initializer='he_normal')(conv7) conv8 = Conv1D(nClasses, 1, activation='relu', padding='same', kernel_initializer='he_normal')(conv7) conv8 = core.Reshape((nClasses, input_length))(conv8) conv8 = core.Permute((2, 1))(conv8) conv9 = core.Activation('softmax')(conv8) model = Model(inputs=inputs, outputs=conv9) if not optimizer is None: model.compile(loss="categorical_crossentropy", optimizer=optimizer, metrics=['accuracy']) return model