Example #1
0
	def _init_model_32(self, inputs):
		# 3 to 2 network
		x = inputs
		x = CuDNNLSTM(96, kernel_regularizer=L1L2(l1=0.01, l2=0.01), \
				recurrent_regularizer=L1L2(l1=0.01, l2=0.01), return_sequences = True)(x)
		x = CuDNNLSTM(32, kernel_regularizer=L1L2(l1=0.01, l2=0.01), \
				recurrent_regularizer=L1L2(l1=0.01, l2=0.01), return_sequences = False)(x)
		x = Dense(2, activation='softmax')(x)
		return x
    def build_model(self, X_train, X_val, y_train, y_val):
        model = Sequential()

        model.add(
            CuDNNLSTM(128,
                      input_shape=(X_train.shape[1:]),
                      return_sequences=True))
        model.add(Dropout(0.2))
        model.add(BatchNormalization())

        model.add(
            CuDNNLSTM(128,
                      input_shape=(X_train.shape[1:]),
                      return_sequences=True))
        model.add(Dropout(0.1))
        model.add(BatchNormalization())

        model.add(CuDNNLSTM(128, input_shape=(X_train.shape[1:])))
        model.add(Dropout(0.2))
        model.add(BatchNormalization())

        model.add(Dense(32, activation='relu'))
        model.add(Dropout(0.2))

        model.add(Dense(2, activation='softmax'))

        opt = tf.keras.optimizers.Adam(lr=0.001, decay=1e-6)

        model.compile(loss='sparse_categorical_crossentropy',
                      optimizer=opt,
                      metrics=['accuracy'])

        tensorboard = TensorBoard(
            log_dir='logs/{}'.format(PriceClassification.NAME))

        filepath = "RNN_Final-{epoch:02d}-{val_acc:.3f}"
        checkpoint = ModelCheckpoint("../models/{}.model".format(
            filepath,
            monitor='val_acc',
            verbose=2,
            save_best_only=True,
            mode='max'))

        history = model.fit(X_train,
                            y_train,
                            batch_size=PriceClassification.BATCH_SIZE,
                            epochs=PriceClassification.EPOCHS,
                            validation_data=(X_val, y_val),
                            shuffle=True,
                            callbacks=[tensorboard, checkpoint])

        # Score model
        score = model.evaluate(X_val, y_val, verbose=0)
        print('Test loss:', score[0])
        print('Test accuracy:', score[1])
        # Save model
        model.save("models/{}".format(PriceClassification.NAME))
Example #3
0
    def __init__(self, input_shape):

        self.model = Sequential()
        self.model.add(
            CuDNNLSTM(2, input_shape=input_shape[1:], return_sequences=True))
        self.model.add(CuDNNLSTM(1, return_sequences=False))
        #self.model.add(CuDNNLSTM(1,return_sequences=False))
        #self.model.add(BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001))

        self.model.compile(loss="mse", optimizer="adam", metrics=["accuracy"])
Example #4
0
    def build(self):
        input_tensor = Input(name='inputs',
                             shape=(None, *self._feat_shape, 1),
                             dtype=tf.float32)

        x = input_tensor

        x = Conv2D(32, (11, 5),
                   use_bias=True,
                   activation='relu',
                   padding='same',
                   kernel_initializer='he_normal',
                   name="conv1")(x)
        x = Conv2D(32, (11, 5),
                   use_bias=True,
                   activation='relu',
                   padding='same',
                   kernel_initializer='he_normal',
                   name="conv2")(x)

        _, _, dim, channels = x.get_shape().as_list()
        output_dim = dim * channels
        x = Reshape((-1, output_dim))(x)

        x = TimeDistributed(Dropout(0.8))(x)
        x = CuDNNLSTM(512,
                      kernel_initializer='glorot_uniform',
                      bias_initializer='random_normal',
                      return_sequences=True,
                      name='lstm')(x)
        x = Activation('tanh', name='activation')(x)

        x = TimeDistributed(Dropout(0.8))(x)
        x = CuDNNLSTM(512,
                      kernel_initializer='glorot_uniform',
                      bias_initializer='random_normal',
                      return_sequences=True,
                      name='lstm1')(x)
        x = Activation('tanh', name='activation1')(x)

        x = TimeDistributed(Dense(1024, activation='relu'))(x)
        x = TimeDistributed(Dropout(0.5))(x)

        # Output layer with softmax
        x = TimeDistributed(Dense(self._vocab_size))(x)

        input_length = Input(name='input_length', shape=[1], dtype='int64')
        labels = Input(name='targets', shape=[None], dtype='int32')
        label_length = Input(name='target_length', shape=[1], dtype='int64')
        loss_out = Lambda(self.ctc_lambda_func, output_shape=(1, ),
                          name='ctc')([x, input_length, labels, label_length])

        self._model = tf.keras.Model(
            inputs=[input_tensor, labels, input_length, label_length],
            outputs=[loss_out])
def get_model():

    model = Sequential()

    # IF you are running with a GPU, try out the CuDNNLSTM layer type instead (don't pass an activation, tanh is required)
    model = Sequential()
    model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(64, 300, 1)))
    model.add(Conv2D(32, (3, 3)))
    #	model.add(Dropout(0.4))
    model.add(BatchNormalization())
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))

    model.add(Conv2D(64, (3, 3), activation='relu'))
    model.add(Conv2D(64, (3, 3)))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    #	model.add(Dropout(0.4))
    model.add(BatchNormalization())
    model.add(Activation('relu'))

    model.add(Conv2D(128, (3, 3), activation='relu'))
    model.add(Conv2D(128, (3, 3)))
    #	model.add(Dropout(0.4))
    model.add(BatchNormalization())
    model.add(Activation('relu'))

    model.add(Conv2D(256, (3, 3), activation='relu'))
    model.add(Conv2D(256, (3, 3)))
    #	model.add(Dropout(0.4))
    model.add(BatchNormalization())
    model.add(Activation('relu'))

    model.add(Conv2D(512, (3, 3), activation='relu'))
    model.add(Conv2D(1100, (3, 3), activation='relu'))
    model.add(GlobalAveragePooling2D())
    model.add(Reshape((11, 100)))

    model.add(CuDNNLSTM(128, return_sequences=True))
    #	model.add(Dropout(0.4))

    model.add(CuDNNLSTM(128, return_sequences=True))
    #	model.add(Dropout(0.4))

    model.add(CuDNNLSTM(256, return_sequences=True))
    #	model.add(Dropout(0.4))

    model.add(CuDNNLSTM(256, return_sequences=True))
    #	model.add(Dropout(0.4))

    model.add(TimeDistributed(Dense(17)))
    model.add(Activation('softmax'))

    return model
def rnn_train(X, Y, h1=64, h2=32, n_epochs=100, s_batch=100, Lr=0.001):
    model = tf.keras.models.Sequential()
    model.add(CuDNNLSTM(h1, input_shape=(X.shape[1:]), return_sequences=True))
    model.add(CuDNNLSTM(h2))
    model.add(Dense(1))

    optimizer = tf.keras.optimizers.Adam(lr=Lr)

    model.compile(optimizer=optimizer, loss='mse', metrics=['mae', 'mse'])

    hist = model.fit(X, Y, epochs=n_epochs, batch_size=s_batch)
    return hist
Example #7
0
    def define_model(self, look_back_steps, batch_size, state_ful=False):

        # The base LM model
        # batch_input_shape=(batch_size, timesteps, data_dim)
        if state_ful:
            word_input = Input((look_back_steps, self.vocab_size), batch_size=batch_size)
        else:
            word_input = Input((look_back_steps, self.vocab_size))
        # The output vector from the LSTM layer is 200d and return_sequences=True must be set in order to use
        lstm_layer1 = CuDNNLSTM(100, return_sequences=True, stateful=state_ful)(word_input)
        lstm_layer2 = CuDNNLSTM(100, stateful=state_ful)(lstm_layer1)
        #lstm_layer1 = LSTM(100, return_sequences=True, stateful=state_ful)(word_input)
        #lstm_layer2 = LSTM(100, stateful=state_ful)(lstm_layer1)
        # Set the weights to the weights corresponding to the embedding
        dense_word_decoder = Dense(self.vocab_size, trainable=False, name='embedding_layer')(lstm_layer2)


        #print('Embedding matrix shape: {}'.format(self.embedding.shape))


        # The energy term for affect words
        # The input is the LIWC feature extraction which has 5 categories (5 index input vector)
        affect_input = Input((5,))
        dense_1 = Dense(50, activation=sigmoid)(affect_input)
        dense_2 = Dense(100, activation=sigmoid)(dense_1)
        # The report does not say anything about the activation function for the second layer
        dense_affect_decoder_1 = Dense(self.vocab_size)(dense_2)
        # multiply the affect vector with the beta energy term
        beta = 1.75
        dense_affect_decoder = Lambda(lambda x: x*beta)(dense_affect_decoder_1)

        # the bias term for unigram occurrences has not been added to the model
        final_layer = Add()([dense_word_decoder, dense_affect_decoder])
        prediction_layer = Softmax()(final_layer)

        model = models.Model(inputs=[word_input, affect_input], outputs=[prediction_layer])

        weights = model.get_layer('embedding_layer').get_weights()

        #print(weights[1].shape)
        weights[0] = self.embedding
        weights[1] = self.bias_vector
        #print(weights)
        model.get_layer('embedding_layer').set_weights(weights)

        self.start_weights.append(weights[0])
        self.start_weights.append(weights[1])

        model.summary()

        return model
Example #8
0
    def __init__(self,
                 units,
                 kernel_initializer='glorot_uniform',
                 recurrent_initializer='orthogonal',
                 bias_initializer='zeros',
                 unit_forget_bias=True,
                 kernel_regularizer=None,
                 recurrent_regularizer=None,
                 bias_regularizer=None,
                 activity_regularizer=None,
                 kernel_constraint=None,
                 recurrent_constraint=None,
                 bias_constraint=None,
                 return_sequences=False,
                 **kwargs) -> None:
        super().__init__(**kwargs)

        self.return_sequences = return_sequences

        if not return_sequences:
            raise NotImplementedError("Must set return_sequences=True")

        self.forward_lstm = CuDNNLSTM(units,
                                      kernel_initializer,
                                      recurrent_constraint,
                                      bias_initializer,
                                      unit_forget_bias,
                                      kernel_regularizer,
                                      recurrent_regularizer,
                                      bias_regularizer,
                                      activity_regularizer,
                                      kernel_constraint,
                                      recurrent_constraint,
                                      bias_constraint,
                                      return_sequences=True)

        self.reverse_lstm = CuDNNLSTM(units,
                                      kernel_initializer,
                                      recurrent_constraint,
                                      bias_initializer,
                                      unit_forget_bias,
                                      kernel_regularizer,
                                      recurrent_regularizer,
                                      bias_regularizer,
                                      activity_regularizer,
                                      kernel_constraint,
                                      recurrent_constraint,
                                      bias_constraint,
                                      return_sequences=True)
Example #9
0
def get_cudnncnnlstm(shape, dropout):
    model = Sequential()
    with tf.variable_scope("Conv1D1", reuse=tf.AUTO_REUSE) as scope:
        model.add(
            Conv1D(128,
                   input_shape=(train_X.shape[1:]),
                   kernel_size=3,
                   activation='relu'))
        model.add(BatchNormalization())
        model.add(Dropout(0.5))
    with tf.variable_scope("Conv1D2", reuse=tf.AUTO_REUSE) as scope:
        model.add(Conv1D(128, kernel_size=3, activation='relu'))
        model.add(BatchNormalization())
        model.add(Dropout(0.5))

    with tf.variable_scope("CuDNNLSTM1", reuse=tf.AUTO_REUSE) as scope:
        model.add(CuDNNLSTM(64, return_sequences=True))
        model.add(BatchNormalization())
        model.add(Dropout(dropout))

    with tf.variable_scope("CuDNNLSTM2", reuse=tf.AUTO_REUSE) as scope:
        model.add(CuDNNLSTM(64, return_sequences=True))
        model.add(BatchNormalization())
        model.add(Dropout(dropout))

    with tf.variable_scope("CuDNNLSTM3", reuse=tf.AUTO_REUSE) as scope:
        model.add(CuDNNLSTM(64, return_sequences=True))
        model.add(BatchNormalization())
        model.add(Dropout(dropout))

    with tf.variable_scope("CuDNNLSTM4", reuse=tf.AUTO_REUSE) as scope:
        model.add(CuDNNLSTM(64, return_sequences=False))
        model.add(BatchNormalization())
        model.add(Dropout(dropout))

    with tf.variable_scope("DENSE1", reuse=tf.AUTO_REUSE) as scope:
        model.add(Dense(128, activation='relu'))
        model.add(BatchNormalization())
        model.add(Dropout(dropout))

    with tf.variable_scope("DENSE2", reuse=tf.AUTO_REUSE) as scope:
        model.add(Dense(1, activation='sigmoid'))
        opt = tf.keras.optimizers.Adam(lr=1e-2, decay=1e-3)
        model.compile(loss='binary_crossentropy',
                      optimizer=opt,
                      metrics=['accuracy'])
        model.summary()
    return model
Example #10
0
 def dynamicLayerCreator(self, lastLstm=False):
     if self.typeNet == "LSTM":
         if not lastLstm:
             if self.gpu:
                 self.model.add(
                     CuDNNLSTM(self.neurons,
                               return_sequences=True,
                               batch_size=self.batchSize,
                               stateful=True))
             else:
                 self.model.add(
                     LSTM(self.neurons,
                          return_sequences=True,
                          batch_size=self.batchSize,
                          stateful=True))
             self.model.add(BatchNormalization())
         else:
             if self.gpu:
                 self.model.add(
                     CuDNNLSTM(self.neurons,
                               batch_size=self.batchSize,
                               stateful=True))
             else:
                 self.model.add(
                     LSTM(self.neurons,
                          batch_size=self.batchSize,
                          stateful=True))
             self.model.add(BatchNormalization())
             self.model.add(Dropout(0.2))
     elif self.typeNet == "Conv1D":
         paddingType = ["same", "valid"]
         self.model.add(
             Conv1D(self.neurons,
                    self.filterSize,
                    activation="relu",
                    padding=paddingType[self.padding],
                    batch_size=self.batchSize))
         self.model.add(BatchNormalization())
         self.model.add(Dropout(0.2))
     elif self.typeNet == "Dense":
         self.model.add(
             Dense(self.neurons,
                   activation='relu',
                   batch_size=self.batchSize))
         self.model.add(BatchNormalization())
         self.model.add(Dropout(0.2))
     else:
         logging.error("No valid NN type selected")
Example #11
0
def model_lstm_atten(embedding_matrix):

    inp = Input(shape=(maxlen, ))
    x = Embedding(max_features,
                  embed_size,
                  weights=[embedding_matrix],
                  trainable=False)(inp)
    x = SpatialDropout1D(0.1)(x)
    x = Bidirectional(CuDNNLSTM(40, return_sequences=True))(x)
    y = Bidirectional(CuDNNGRU(40, return_sequences=True))(x)

    atten_1 = Attention(maxlen)(x)  # skip connect
    atten_2 = Attention(maxlen)(y)
    avg_pool = GlobalAveragePooling1D()(y)
    max_pool = GlobalMaxPooling1D()(y)

    conc = concatenate([atten_1, atten_2, avg_pool, max_pool])
    conc = Dense(16, activation="relu")(conc)
    conc = Dropout(0.1)(conc)
    outp = Dense(1, activation="sigmoid")(conc)

    model = Model(inputs=inp, outputs=outp)
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=[f1])

    return model
Example #12
0
    def create_model(self):
        """
        Creates the model
        """
        self.mod = Sequential()

        # Add the RNN layer
        # Note 1:  For RNN, we set unroll=True to enable fast GPU usage
        # Note 2:  You need to set the CuDNN version of LSTM
        unroll = tf.test.is_gpu_available()
        if (self.mod_type == 'lstm'):
            # LSTM model
            if tf.test.is_gpu_available():
                self.mod.add(CuDNNLSTM(self.nh, input_shape=(self.nt, self.nin),\
                                  return_sequences=False, name='RNN'))
            else:
                self.mod.add(LSTM(self.nh, input_shape=(self.nt, self.nin),\
                                  return_sequences=False, name='RNN',unroll=unroll))

        elif self.is_complex:
            # Complex RNN
            cell = ComplexRNNCell(nh=self.nh)
            self.mod.add(RNN(cell, input_shape=(self.nt, self.nin),\
                return_sequences=False, name='RNN',unroll=True))
        else:
            # Real RNN model
            self.mod.add(SimpleRNN(self.nh, input_shape=(self.nt, self.nin),\
                return_sequences=False, name='RNN',activation='relu',unroll=unroll))
        self.mod.add(Dense(nout, activation='softmax', name='Output'))
        self.mod.summary()
Example #13
0
def get_model():
    speed = Input(shape=(4, 2), name='speed_input')
    img = Input(shape=(64, 64, 12), name='img_input')

    conv_0 = Conv2D(32, 3, strides=(1, 1), padding='same',
                    activation='relu')(img)
    conv_1 = Conv2D(64, 3, strides=(2, 2), padding='same',
                    activation='relu')(conv_0)

    maxpool_1 = MaxPool2D(padding='same')(conv_1)
    conv_2 = Conv2D(64, 3, padding='same', activation='relu')(maxpool_1)

    maxpool_2 = MaxPool2D(padding='same')(conv_2)
    conv_3 = Conv2D(128, 3, padding='same', activation='relu')(maxpool_2)

    flatten_0 = Flatten()(conv_3)
    fc_0 = Dense(64)(flatten_0)
    fc_1 = CuDNNLSTM(64)(speed)

    con_0 = Concatenate()([fc_0, fc_1])

    steer = Dense(1, activation='tanh', name='steer_output')(con_0)
    acc = Dense(1, activation='tanh', name='acc_output')(con_0)

    model = tf.keras.models.Model([img, speed], [steer, acc])
    model.compile(optimizer='adam', loss='mse')

    return model
Example #14
0
def model_lstm(input_shape):
    inp = Input(shape=(
        input_shape[1],
        input_shape[2],
    ))
    x = Bidirectional(CuDNNLSTM(128, return_sequences=True))(inp)
    x = Bidirectional(CuDNNLSTM(64, return_sequences=True))(x)
    x = Attention(input_shape[1])(x)
    x = Dense(64, activation="relu")(x)
    x = Dense(1, activation="sigmoid")(x)
    model = Model(inputs=inp, outputs=x)
    model.compile(loss='binary_crossentropy',
                  optimizer='adam',
                  metrics=[matthews_correlation])

    return model
Example #15
0
def training_run(X_train, y_train, X_val, y_val, MAX_LEN, bias_reg, kernel_reg,
                 recur_reg, word_index, class_assoc, X_test, y_test,
                 num_epochs, embedding_layer):

    print('Training model.')

    # Train an LSTM - the model will only contain one layer
    # to add additional layers, simply add another CuDNNLSTM layer with option return_sequences = True
    # to use a different number of neurons change the first argument of the CuDNNLSTM layer
    model = Sequential()
    model.add(embedding_layer)
    model.add(
        CuDNNLSTM(100,
                  bias_regularizer=bias_reg,
                  kernel_regularizer=kernel_reg,
                  recurrent_regularizer=recur_reg))
    if len(class_assoc) > 2:  #multiclass classification
        model.add(Dense(len(class_assoc), activation='softmax'))
        model.compile(loss="categorical_crossentropy",
                      optimizer='adam',
                      metrics=['accuracy'])
    else:  #binary classification
        model.add(Dense(1, activation='sigmoid'))
        model.compile(loss="binary_crossentropy",
                      optimizer='adam',
                      metrics=['accuracy'])

    hist = model.fit(X_train,
                     y_train,
                     epochs=num_epochs,
                     batch_size=1000,
                     validation_data=(X_val, y_val))
    hist = hist.history
    predictions = model.predict(X_test, batch_size=1000)
    return hist, predictions
def train_lstm():

    # Create symbolic vars
    x = Input(shape=(None, in_dim), dtype='float32', name='input')

    # Create network
    # fw_cell = LSTM(hidden_units_size, return_sequences=False,
    #                implementation=2)(x)
    fw_cell = CuDNNLSTM(hidden_units_size, return_sequences=False)(x)

    h3 = Dense(classes, activation='softmax', use_bias=False)(fw_cell)
    model = Model(inputs=x, outputs=h3)
    validate_lstm_in_out(model)
    start = timer.perf_counter()
    model.compile(optimizer='Adam', loss='categorical_crossentropy')
    end = timer.perf_counter()
    print('>>> Model compilation took {:.1f} seconds'.format(end - start))

    # Print parameter count
    params = model.count_params()
    print('# network parameters: ' + str(params))

    # Start training
    batch_time = []
    batch_loss = []
    train_start = timer.perf_counter()
    for i in range(nb_batches):
        batch_start = timer.perf_counter()
        loss = model.train_on_batch(x=bX,
                                    y=to_categorical(bY, num_classes=classes))
        batch_end = timer.perf_counter()
        batch_time.append(batch_end - batch_start)
        batch_loss.append(loss)
        train_end = timer.perf_counter()
    print_results(batch_loss, batch_time, train_start, train_end)
def initialise_model():
    global model, bottleneck_mdl
    from tensorflow.keras.layers import CuDNNGRU, Dropout, Dense, Embedding, CuDNNLSTM, Input, add

    #===========================================================#
    #=========================[MODEL]===========================#
    #===========================================================#
    bottleneck_input = Input(shape=(2048, ))
    fe1 = Dropout(0.5)(bottleneck_input)
    fe2 = Dense(256, activation=tf.nn.selu)(fe1)

    #Partial Caption Input
    cap_inputs = Input(shape=(72, ))
    #se1 is already pretrained on GLOVE model
    se1 = Embedding(5411, 200)(cap_inputs)
    se2 = Dropout(0.5)(se1)
    se3 = CuDNNGRU(256, return_sequences=True)(se2)
    se4 = CuDNNLSTM(256)(se3)

    decoder1 = add([fe2, se4])
    decoder2 = Dense(256, activation=tf.nn.selu)(decoder1)
    outputs = Dense(5411, activation=tf.nn.softmax)(decoder2)

    model = Model(inputs=[bottleneck_input, cap_inputs], outputs=outputs)

    model.load_weights('model_xeon.h5')
    #===========================================================#
    #=========================[MODEL]===========================#
    #===========================================================#

    incep_mdl = InceptionV3(weights="imagenet")
    bottleneck_mdl = Model(incep_mdl.input, incep_mdl.layers[-2].output)
Example #18
0
def create_network(network_input, n_vocab):
    """ create the structure of the neural network """
    model = Sequential()
    model.add(CuDNNLSTM(256, input_shape=(network_input.shape[1], network_input.shape[2]), return_sequences=True))              
    model.add(CuDNNLSTM(128, return_sequences=True))
    model.add(CuDNNLSTM(64))

    model.add(Dense(n_vocab))
    model.add(Activation('softmax'))

    model.compile(loss='categorical_crossentropy', optimizer='rmsprop')

    # Load the weights to each node
    model.load_weights(weight)

    return model
 def _build_model(self):
     for i in range(self.num_of_lstms):
         input_vec = Input(shape=(self.maxlen, self.inner_maxlen))
         bidi1 = Bidirectional(
             CuDNNLSTM(self.units[i], return_sequences=True))(input_vec)
         do1 = Dropout(self.dropouts[i])(bidi1)
         bidi2 = Bidirectional(
             CuDNNLSTM(self.units[i], return_sequences=True))(do1)
         do2 = Dropout(self.dropouts[i])(bidi2)
         output = TimeDistributed(
             Dense(len(ANSWER_REVERSE_MAPPER) + 1,
                   activation='softmax'))(do2)
         self.models.append(Model(inputs=[input_vec], outputs=[output]))
         self.models[-1].compile(loss='categorical_crossentropy',
                                 optimizer='adam',
                                 metrics=['acc'])
Example #20
0
def biLSTM(X_1, X_2, y, X_1_val, X_2_val, y_val, maxlen, vocab_size):
    # best so far:
    # lr-0.001-epochs-10-batch_size-64-lstm_dim-32-dense_dim-64-emb_dim-32-num_dnn-1
    # lr-0.001-epochs-20-batch_size-32-lstm_dim-64-dense_dim-64-emb_dim-64-num_dnn-2
    tf.keras.backend.clear_session()
    with tf.device('/GPU:0'):

        lr = 1e-3  # Learning rate
        epochs = 20  # Number of epochs
        batch_size = 32  # Batch size
        lstm_dim = 64  # LSTM dimension
        emb_dim = 64  # Embedding dimension
        num_dnn = 2  # Number of outer DNN layers

        input_aux = Input(shape=(maxlen, ))
        x = Embedding(input_dim=vocab_size,
                      output_dim=emb_dim,
                      input_length=maxlen)(input_aux)

        #output_aux_1 = CuDNNLSTM(lstm_dim, go_backwards=False)(x)
        #output_aux_2 = CuDNNLSTM(lstm_dim)(x)
        #output_aux = concatenate([output_aux_1, output_aux_2])
        output_aux = Bidirectional(CuDNNLSTM(lstm_dim))(x)
        model_aux = Model(inputs=[input_aux], outputs=[output_aux])

        # Creating outer model

        input_1 = Input(shape=(maxlen, ))
        input_2 = Input(shape=(maxlen, ))

        x_1 = model_aux(input_1)
        x_2 = model_aux(input_2)
        x = concatenate([x_1, x_2])

        for i in range(num_dnn):
            dense_dim = {{choice([32, 64])}}
            x = Dense(dense_dim, activation='relu')(x)
        x = Flatten()(x)
        output = Dense(1, activation='sigmoid')(x)

        model = Model(inputs=[input_1, input_2], outputs=[output])
        #tensorboard = TensorBoard(log_dir=param)
        model.compile(optimizer=tf.keras.optimizers.Adam(lr=lr),
                      loss='binary_crossentropy',
                      metrics=['accuracy'])

        result = model.fit(
            [X_1, X_2],
            y,
            batch_size=batch_size,
            epochs=epochs,
            #callbacks=[tensorboard],
            verbose=2,
            validation_data=([X_1_val, X_2_val], y_val))

        validation_acc = np.amax(result.history['val_acc'])

        print(param)
        print('Best validation acc of epoch:', validation_acc)
        return {'loss': -validation_acc, 'status': STATUS_OK, 'model': model}
Example #21
0
def lstm_cnn_chars(input_shape: Tuple[int, ...],
                   output_shape: Tuple[int, ...],
                   dropout: float = 0.2) -> Model:
    num_classes = output_shape[0]

    inputs = Input(input_shape)
    #8700 as it is 29 words x 300 the dimension of the embeddings
    #    charsInputs = Lambda(lambda x: x[:,:240])(inputs)
    charsEmbeddings = Embedding(193, output_dim=4)(inputs)
    chars1 = Conv1D(3,
                    kernel_size=2,
                    activation='tanh',
                    input_shape=input_shape,
                    kernel_initializer='glorot_normal')(charsEmbeddings)
    chars1 = Flatten()(chars1)
    chars2 = Conv1D(4,
                    kernel_size=3,
                    activation='tanh',
                    input_shape=input_shape,
                    kernel_initializer='glorot_normal')(charsEmbeddings)
    chars2 = Flatten()(chars2)
    chars3 = Conv1D(5,
                    kernel_size=4,
                    activation='tanh',
                    input_shape=input_shape,
                    kernel_initializer='glorot_normal')(charsEmbeddings)
    chars3 = Flatten()(chars3)
    chars = Concatenate(axis=-1)([chars1, chars2, chars3])
    chars = Lambda(lambda x: tf.expand_dims(x, -1))(chars)
    chars = MaxPooling1D()(chars)
    chars = BatchNormalization()(chars)
    chars = Bidirectional(
        CuDNNLSTM(8, return_sequences=True,
                  kernel_initializer='glorot_normal'))(chars)
    chars = Bidirectional(
        CuDNNLSTM(8, return_sequences=True,
                  kernel_initializer='glorot_normal'))(chars)
    chars = Bidirectional(
        CuDNNLSTM(8, return_sequences=True,
                  kernel_initializer='glorot_normal'))(chars)
    chars = Flatten()(chars)
    X = Dropout(dropout)(chars)
    output = Dense(num_classes,
                   activation='sigmoid',
                   kernel_initializer='random_normal')(chars)

    return Model(inputs=inputs, outputs=output)
Example #22
0
def model(feat_seq, max_len, embed_shape, emb_dim, env):

    inputs = []
    models = []

    input_ = Input(shape=(max_len, len(feat_seq)),
                   dtype='float32',
                   name='input_1')
    lstm_ = CuDNNLSTM(30,
                      name='cudnnlstm_1')(input_) if env == 'cloud' else LSTM(
                          30, name='lstm_1')(input_)

    inputs.append(input_)
    models.append(lstm_)

    for key, value in embed_shape.items():
        input_ = Input(shape=(max_len, ),
                       dtype='float32',
                       name='input_%s' % key)
        inputs.append(input_)
        embedding_ = Embedding(value,
                               emb_dim,
                               input_length=max_len,
                               name='embedding_%s' % key)(input_)
        lstm_ = CuDNNLSTM(30, name='cudnnlstm_%s' %
                          key)(embedding_) if env == 'cloud' else LSTM(
                              30, name='lstm_%s' % key)(embedding_)
        models.append(lstm_)

    models_merged = Concatenate(axis=1)(models)

    output = Dense(1, use_bias=False)(models_merged)
    output = BatchNormalization()(output)
    output = Activation("sigmoid")(output)

    model_params = {
        'loss': 'binary_crossentropy',
        'optimizer': 'adam',
        'metrics': ['acc']
    }
    model = Model(inputs=inputs, outputs=output)
    model.compile(**model_params)

    logger.info(model.summary())

    return model
Example #23
0
def GRUModel(max_words, embedding_size, sequence_length, optimizer, num_classes):
    model = Sequential()
    model.add(keras.layers.Embedding(max_words+1, embedding_size, input_length=sequence_length, trainable=True))
    model.add(CuDNNLSTM(512))
    model.add(keras.layers.Dropout(0.3))
    model.add(keras.layers.Dense(num_classes, activation='sigmoid'))
    model.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['categorical_accuracy'])
    return model
Example #24
0
def newModel():
    model = Sequential()
    model.add(CuDNNLSTM(128, input_shape=(maxInputLength, vocabSize)))
    model.add(Dense(vocabSize, activation="softmax"))

    optimizer = tf.keras.optimizers.RMSprop(lr=0.01)
    model.compile(optimizer=optimizer, loss="categorical_crossentropy")
    return model
Example #25
0
 def __init__(self, num_units, backwards, batch_size, embedding_dim,
              src_vocab_size):
     super(tf.keras.Model, self).__init__()
     self.embd = Embedding(src_vocab_size,
                           embedding_dim,
                           batch_input_shape=[batch_size, None])
     self.lstm_layers = Sequential([
         # Dropout(0.5),
         CuDNNLSTM(num_units,
                   return_sequences=True,
                   return_state=False,
                   go_backwards=backwards),
         # Dropout(0.5),
         CuDNNLSTM(num_units, return_sequences=True, return_state=False),
         # Dropout(0.5),
         CuDNNLSTM(num_units, return_sequences=False, return_state=True)
     ])
     self.dropout = Dropout(0.5)
Example #26
0
def makeCuDNNLSTM(cells=25):
    inputs = Input(shape=(sequence_length,1))
    x = CuDNNLSTM(cells,return_sequences=False)(inputs)
    x = Dropout(0.1)(x)
    outputs = Dense(2,activation='softmax')(x)
    model = Model(inputs=inputs, outputs=outputs)
    model.compile(loss='categorical_crossentropy',optimizer=optimizers.RMSprop(),
                          metrics=['accuracy'])
    model.summary()
    return model  
Example #27
0
def lstm_chars(input_shape: Tuple[int, ...],
               output_shape: Tuple[int, ...],
               dropout: float = 0.0) -> Model:

    num_classes = output_shape[0]
    inputs = Input(input_shape)
    #8700 as it is 29 words x 300 the dimension of the embeddings
    #chars = Lambda(lambda x: x[:,:240])(inputs)
    chars = Embedding(193, output_dim=4)(inputs)
    chars = Bidirectional(CuDNNLSTM(121, return_sequences=False))(chars)
    chars = Lambda(lambda x: tf.expand_dims(x, -1))(chars)
    #chars = BatchNormalization()(chars)
    chars = Bidirectional(CuDNNLSTM(8, return_sequences=True))(chars)
    chars = Bidirectional(CuDNNLSTM(8, return_sequences=True))(chars)
    chars = Flatten()(chars)
    X = Dropout(dropout)(chars)
    output = Dense(num_classes, activation='sigmoid')(X)

    return Model(inputs=inputs, outputs=output)
Example #28
0
def modelLSTM(num_units1, num_units2, time_steps, n_features, _batch_size,
              n_classes, _patience, sub_db, n_epochs):

    (train_images, train_labels_encoded, test_images,
     test_labels_encoded) = sub_db

    modelLSTM = ks.Sequential()

    #Batch size should be (at most) the same number of hidden cells
    #no activation selection
    modelLSTM.add(
        Bidirectional(CuDNNLSTM(num_units1,
                                unit_forget_bias='true',
                                return_sequences='true'),
                      input_shape=(time_steps, n_features)))
    modelLSTM.add(Bidirectional(CuDNNLSTM(num_units2,
                                          unit_forget_bias='true')))
    modelLSTM.add(Dense(n_classes, activation='softmax'))

    modelLSTM.compile(loss='sparse_categorical_crossentropy',
                      optimizer='adam',
                      metrics=['accuracy'])

    #Definizione callback
    es = ks.callbacks.EarlyStopping(monitor='val_loss',
                                    patience=_patience,
                                    mode='auto',
                                    restore_best_weights=True,
                                    verbose=0)
    time_callback = TimeHistory()

    #Validation_data è usato al termine di ogni epoch;
    hist = modelLSTM.fit(train_images,
                         train_labels_encoded,
                         batch_size=_batch_size,
                         validation_data=(test_images, test_labels_encoded),
                         epochs=n_epochs,
                         shuffle='true',
                         callbacks=[time_callback, es],
                         verbose=0)

    return modelLSTM, hist, time_callback
Example #29
0
def AttRNNSpeechModelWave(input_shape, n_classes):

    X_input = Input(input_shape)

    X = Lambda(lambda q: expand_dims(q, -1), name='expand_dims')(X_input)

    X = Conv1D(16, 9, activation=relu, padding='valid')(X)
    X = MaxPool1D(8)(X)

    X = Conv1D(32, 9, activation=relu, padding='valid')(X)
    X = MaxPool1D(8)(X)

    X = Conv1D(32, 9, activation=relu, padding='valid')(X)
    X = MaxPool1D(6)(X)

    #X = Lambda(lambda q: squeeze(q, -1), name='squeeze_last_dim') (X)

    X = Bidirectional(CuDNNLSTM(64, return_sequences=True))(X)
    X = Dropout(0.5)(X)
    X = Bidirectional(CuDNNLSTM(64, return_sequences=True))(X)
    X = Dropout(0.5)(X)

    xFirst = Lambda(lambda q: q[:, 16])(X)
    query = Dense(128)(xFirst)
    query = Dropout(0.5)(query)

    attScores = Dot(axes=[1, 2])([query, X])
    attScores = Softmax(name='attSoftmax')(attScores)

    attVector = Dot(axes=[1, 1])([attScores, X])

    X = Dense(64, activation='relu')(attVector)
    X = Dropout(0.5)(X)
    X = Dense(32)(X)
    X = Dropout(0.5)(X)

    X = Dense(n_classes, activation='softmax', name='output')(X)

    model = Model(inputs=X_input, outputs=X)

    return model
def get_model():

    model = Sequential()

    model.add(
        CuDNNLSTM(36,
                  stateful=True,
                  return_sequences=True,
                  batch_input_shape=(BATCH_SIZE, train_x.shape[1],
                                     train_x.shape[2])))
    model.add(Activation('relu'))

    model.add(CuDNNLSTM(36, stateful=True, return_sequences=False))
    model.add(Activation('relu'))

    model.add(Dense(1))
    """.....compile model....."""

    model.compile(loss='mae', optimizer='adam', metrics=['mse', 'mae'])

    return model