def create(self):
        language_model = Sequential()
        self.textual_embedding(language_model, mask_zero=True)
        self.temporal_pooling(language_model)
        language_model.add(DropMask())
        #language_model.add(BatchNormalization(mode=1))
        self.language_model = language_model

        visual_model_factory = \
                select_sequential_visual_model[self._config.trainable_perception_name](
                    self._config.visual_dim)
        visual_model = visual_model_factory.create()
        visual_dimensionality = visual_model_factory.get_dimensionality()
        self.visual_embedding(visual_model, visual_dimensionality)
        #visual_model.add(BatchNormalization(mode=1))
        self.visual_model = visual_model

        if self._config.multimodal_merge_mode == 'dot':
            self.add(
                Merge([language_model, visual_model],
                      mode='dot',
                      dot_axes=[(1, ), (1, )]))
        else:
            self.add(
                Merge([language_model, visual_model],
                      mode=self._config.multimodal_merge_mode))

        self.deep_mlp()
        self.add(Dense(self._config.output_dim))
        self.add(Activation('softmax'))
    def create(self):
        language_model = Sequential()
        self.textual_embedding(language_model, mask_zero=True)
        self.language_model = language_model


        visual_model_factory = \
                select_sequential_visual_model[self._config.trainable_perception_name](
                    self._config.visual_dim)
        visual_model = visual_model_factory.create()
        visual_dimensionality = visual_model_factory.get_dimensionality()
        self.visual_embedding(visual_model, visual_dimensionality)
        #visual_model = Sequential()
        #self.visual_embedding(visual_model)
        self.visual_model = visual_model
        visual_model.add(RepeatVector(self._config.max_input_time_steps))

        if self._config.multimodal_merge_mode == 'dot':
            self.add(
                Merge([language_model, visual_model],
                      mode='dot',
                      dot_axes=[(1, ), (1, )]))
        else:
            self.add(
                Merge([language_model, visual_model],
                      mode=self._config.multimodal_merge_mode))

        self.add(
            self._config.recurrent_encoder(
                self._config.hidden_state_dim,
                return_sequences=False,
                go_backwards=self._config.go_backwards))
        self.deep_mlp()
        self.add(Dense(self._config.output_dim))
        self.add(Activation('softmax'))
def test_merge_dot():
    (X_train, y_train), (X_test, y_test) = _get_test_data()

    left = Sequential()
    left.add(Dense(input_dim=input_dim, output_dim=nb_hidden))
    left.add(Activation('relu'))

    right = Sequential()
    right.add(Dense(input_dim=input_dim, output_dim=nb_hidden))
    right.add(Activation('relu'))

    model = Sequential()
    model.add(Merge([left, right], mode='dot', dot_axes=1))
    model.add(Dense(nb_class))
    model.add(Activation('softmax'))

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

    left = Sequential()
    left.add(Dense(input_dim=input_dim, output_dim=nb_hidden))
    left.add(Activation('relu'))

    right = Sequential()
    right.add(Dense(input_dim=input_dim, output_dim=nb_hidden))
    right.add(Activation('relu'))

    model = Sequential()
    model.add(Merge([left, right], mode='dot', dot_axes=[1, 1]))
    model.add(Dense(nb_class))
    model.add(Activation('softmax'))

    model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
Beispiel #4
0
def test_merge_sum():
    (X_train, y_train), (X_test, y_test) = _get_test_data()
    left = Sequential()
    left.add(Dense(nb_hidden, input_shape=(input_dim,)))
    left.add(Activation('relu'))

    right = Sequential()
    right.add(Dense(nb_hidden, input_shape=(input_dim,)))
    right.add(Activation('relu'))

    model = Sequential()
    model.add(Merge([left, right], mode='sum'))
    model.add(Dense(nb_class))
    model.add(Activation('softmax'))
    model.compile(loss='categorical_crossentropy', optimizer='rmsprop')

    model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=0, validation_data=([X_test, X_test], y_test))
    model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=0, validation_split=0.1)
    model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=0)
    model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=0, shuffle=False)

    loss = model.evaluate([X_test, X_test], y_test, verbose=0)

    model.predict([X_test, X_test], verbose=0)
    model.predict_classes([X_test, X_test], verbose=0)
    model.predict_proba([X_test, X_test], verbose=0)

    # test weight saving
    fname = 'test_merge_sum_temp.h5'
    model.save_weights(fname, overwrite=True)
    left = Sequential()
    left.add(Dense(nb_hidden, input_shape=(input_dim,)))
    left.add(Activation('relu'))
    right = Sequential()
    right.add(Dense(nb_hidden, input_shape=(input_dim,)))
    right.add(Activation('relu'))
    model = Sequential()
    model.add(Merge([left, right], mode='sum'))
    model.add(Dense(nb_class))
    model.add(Activation('softmax'))
    model.load_weights(fname)
    os.remove(fname)
    model.compile(loss='categorical_crossentropy', optimizer='rmsprop')

    nloss = model.evaluate([X_test, X_test], y_test, verbose=0)
    assert(loss == nloss)

    # test serialization
    config = model.get_config()
    new_model = Sequential.from_config(config)

    model.summary()
    json_str = model.to_json()
    new_model = model_from_json(json_str)

    yaml_str = model.to_yaml()
    new_model = model_from_yaml(yaml_str)
Beispiel #5
0
    def test_merge_concat(self):
        print('Test merge: concat')
        left = Sequential()
        left.add(Dense(nb_hidden, input_shape=(input_dim,)))
        left.add(Activation('relu'))

        right = Sequential()
        right.add(Dense(nb_hidden, input_shape=(input_dim,)))
        right.add(Activation('relu'))

        model = Sequential()
        model.add(Merge([left, right], mode='concat'))

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

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

        model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, show_accuracy=True, verbose=0, validation_data=([X_test, X_test], y_test))
        model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, show_accuracy=False, verbose=0, validation_data=([X_test, X_test], y_test))
        model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, show_accuracy=True, verbose=0, validation_split=0.1)
        model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, show_accuracy=False, verbose=0, validation_split=0.1)
        model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=0)
        model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=0, shuffle=False)

        loss = model.evaluate([X_train, X_train], y_train, verbose=0)
        print('loss:', loss)
        if loss > 0.6:
            raise Exception('Score too low, learning issue.')
        preds = model.predict([X_test, X_test], verbose=0)
        classes = model.predict_classes([X_test, X_test], verbose=0)
        probas = model.predict_proba([X_test, X_test], verbose=0)
        print(model.get_config(verbose=1))

        print('test weight saving')
        model.save_weights('temp.h5', overwrite=True)
        left = Sequential()
        left.add(Dense(nb_hidden, input_shape=(input_dim,)))
        left.add(Activation('relu'))

        right = Sequential()
        right.add(Dense(nb_hidden, input_shape=(input_dim,)))
        right.add(Activation('relu'))

        model = Sequential()
        model.add(Merge([left, right], mode='concat'))

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

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

        nloss = model.evaluate([X_train, X_train], y_train, verbose=0)
        print(nloss)
        assert(loss == nloss)
def test_merge_concat():
    (X_train, y_train), (X_test, y_test) = _get_test_data()

    left = Sequential()
    left.add(Dense(nb_hidden, input_shape=(input_dim,)))
    left.add(Activation('relu'))

    right = Sequential()
    right.add(Dense(nb_hidden, input_shape=(input_dim,)))
    right.add(Activation('relu'))

    model = Sequential()
    model.add(Merge([left, right], mode='concat'))
    model.add(Dense(nb_class))
    model.add(Activation('softmax'))
    model.compile(loss='categorical_crossentropy', optimizer='rmsprop')

    model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, show_accuracy=True, verbose=0, validation_data=([X_test, X_test], y_test))
    model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, show_accuracy=False, verbose=0, validation_data=([X_test, X_test], y_test))
    model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, show_accuracy=True, verbose=0, validation_split=0.1)
    model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, show_accuracy=False, verbose=0, validation_split=0.1)
    model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=0)
    model.fit([X_train, X_train], y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=0, shuffle=False)

    loss = model.evaluate([X_test, X_test], y_test, verbose=0)
    assert(loss < 0.8)

    model.predict([X_test, X_test], verbose=0)
    model.predict_classes([X_test, X_test], verbose=0)
    model.predict_proba([X_test, X_test], verbose=0)
    model.get_config(verbose=0)

    fname = 'test_merge_concat_temp.h5'
    model.save_weights(fname, overwrite=True)
    left = Sequential()
    left.add(Dense(nb_hidden, input_shape=(input_dim,)))
    left.add(Activation('relu'))

    right = Sequential()
    right.add(Dense(nb_hidden, input_shape=(input_dim,)))
    right.add(Activation('relu'))

    model = Sequential()
    model.add(Merge([left, right], mode='concat'))

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

    model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
    model.load_weights(fname)
    os.remove(fname)

    nloss = model.evaluate([X_test, X_test], y_test, verbose=0)
    assert(loss == nloss)
Beispiel #7
0
    def add_output(self, name, input=None, inputs=[], merge_mode='concat'):
        if name in self.output_order:
            raise Exception('Duplicate output identifier: ' + name)
        if input:
            if input not in self.namespace:
                raise Exception('Unknown node/input identifier: ' + input)
            if input in self.nodes:
                self.outputs[name] = self.nodes[input]
            elif input in self.inputs:
                self.outputs[name] = self.inputs[input]
        if inputs:
            to_merge = []
            for n in inputs:
                if n not in self.nodes:
                    raise Exception('Unknown identifier: ' + n)
                to_merge.append(self.nodes[n])
            merge = Merge(to_merge, mode=merge_mode)
            self.outputs[name] = merge

        self.output_order.append(name)
        self.output_config.append({
            'name': name,
            'input': input,
            'inputs': inputs,
            'merge_mode': merge_mode
        })
Beispiel #8
0
def seqCNN_CPT(c_conf=(4, 3, 32, 32),
               p_conf=(4, 3, 32, 32),
               t_conf=(4, 3, 32, 32)):
    '''
    C - Temporal Closeness
    P - Period
    T - Trend
    conf = (nb_flow, seq_len, map_height, map_width)
    '''
    model = Sequential()
    components = []

    for conf in [c_conf, p_conf, t_conf]:
        if conf is not None:
            components.append(seqCNNBaseLayer1(conf))
            nb_flow = conf[0]
    model.add(Merge(components, mode='concat', concat_axis=1))  # concat
    model.add(Convolution2D(64, 3, 3, border_mode='same'))
    model.add(Activation('relu'))

    model.add(Convolution2D(64, 3, 3, border_mode='same'))
    model.add(Activation('relu'))

    model.add(Convolution2D(nb_flow, 3, 3, border_mode='same'))
    model.add(Activation('tanh'))
    return model
Beispiel #9
0
    def build_model(self):
        premise = Sequential()
        premise.add(
            LSTM(input_shape=self.ds.X_p_train.shape[1:],
                 output_dim=ve.HIDDEN_SIZE))
        premise.add(Dropout(ve.DROPOUT_PROB))

        hypothesis = Sequential()
        hypothesis.add(
            LSTM(input_shape=self.ds.X_h_train.shape[1:],
                 output_dim=ve.HIDDEN_SIZE))
        hypothesis.add(Dropout(ve.DROPOUT_PROB))

        model = Sequential()
        model.add(Merge([premise, hypothesis], mode=ve.CONCAT))
        model.add(
            Dense(output_dim=ve.HIDDEN_SIZE,
                  activation=ve.TANH,
                  W_regularizer=l2(self.hp.dense_l2)))
        model.add(
            Dense(output_dim=ve.NLI_CLASSES,
                  activation=ve.SOFTMAX,
                  W_regularizer=l2(self.hp.dense_l2)))

        ve.compile_other_model(model, self.hp.optimizer)

        return model
Beispiel #10
0
def build_lstm(n_con, n_emb, vocabs_size, n_dis, emb_size, cluster_size):
    hidden_size = 800

    con = Sequential()
    con.add(Dense(input_dim=n_con, output_dim=emb_size))

    emb_list = []
    for i in range(n_emb):
        emb = Sequential()
        emb.add(
            Embedding(input_dim=vocabs_size[i],
                      output_dim=emb_size,
                      input_length=n_dis))
        emb.add(Flatten())
        emb_list.append(emb)

    in_dimension = 2
    seq = Sequential()
    seq.add(BatchNormalization(input_shape=((MAX_LENGTH, in_dimension))))
    seq.add(Masking([0] * in_dimension,
                    input_shape=(MAX_LENGTH, in_dimension)))
    seq.add(
        LSTM(emb_size,
             return_sequences=False,
             input_shape=(MAX_LENGTH, in_dimension)))

    model = Sequential()
    model.add(Merge([con] + emb_list + [seq], mode='concat'))
    model.add(BatchNormalization())
    model.add(Dense(hidden_size, activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(cluster_size, activation='softmax'))
    model.add(Lambda(caluate_point, output_shape=[2]))
    return model
Beispiel #11
0
    def __init__(self,
                 img_dim=4096,
                 word_dim=300,
                 max_sent_len=26,
                 nb_classes=1000,
                 lstm_hidden_dim=512,
                 fc_hidden_dim=2014,
                 bidirect=True,
                 dropout=0.5):
        img_model = Sequential()
        img_model.add(Reshape(input_shape=(img_dim, ), dims=(img_dim, )))

        txt_model = Sequential()
        # return sequences if use bidrectional LSTM
        txt_model.add(
            LSTM(output_dim=hidden_dim,
                 return_sequences=bidirect,
                 input_shape=(max_sent_len, word_dim)))
        #TODO: check if the paper actually use bi-lstm?!? not really understand what happened here!
        if bidirect:
            txt_model.add(LSTM(output_dim=hidden_dim, return_sequences=False))

        model = Sequential()
        model.add(Merge(txt_model, img_model), mode='concat', concat_axis=1)

        for i in xrange(2):
            model.add(Dense(fc_hidden_dim, init='uniform'))
            model.add(Activation('tanh'))
            model.add(Dropout(dropout))

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

        model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
        return model
Beispiel #12
0
    def _train_embedding(x_train, y_train, input_dim, hidden_layers,
                         batch_size, nb_epoch):
        models = []
        for feature in cols:
            if Config.feature_sizes[feature] == 1:
                model = Sequential()
                model.add(Dense(1, input_dim=1))
                models.append(model)
            else:
                model = Sequential()
                model.add(
                    Embedding(Config.feature_sizes[feature],
                              Config.embedding_sizes[feature],
                              input_length=1))
                model.add(
                    Reshape(target_shape=(Config.embedding_sizes[feature], )))
                models.append(model)

        model = Sequential()
        model.add(Merge(models, mode='concat'))

        for l in range(len(hidden_layers)):
            model.add(Dense(output_dim=hidden_layers[l], input_dim=input_dim))
            model.add(Dropout(Config.dropout))
            model.add(Activation(Config.activation))
            input_dim = hidden_layers[l]

        model.compile(loss=Config.loss_func, optimizer=Config.optimizer)
        model.fit(split_features(np.array(x_train)),
                  np.array(y_train),
                  batch_size=batch_size,
                  nb_epoch=nb_epoch)

        return model
Beispiel #13
0
def parallel_cnn(W):
    (nb_vocab, dims) =W.shape
    N_filter=20

    filter_shapes = [[2, 300], [3, 300], [4, 300], [5, 300]]
    pool_shapes = [[25, 1], [24, 1], [23, 1], [22, 1]]  # Four Parallel Convolutional Layers with Four Pooling Layers
    model = Sequential()
    sub_models = []
    for i in range(len(pool_shapes)):
        pool_shape = pool_shapes[i]
        filter_shape = filter_shapes[i]
        sub_model = Sequential()
        sub_model.add(Embedding(input_dim=nb_vocab, output_dim=dims, weights=[W], W_constraint=unitnorm()))
        # Reshape word vectors from Embedding to tensor format suitable for Convolutional layer
        sub_model.add(Reshape(dims=(1, 200, dims)))
        sub_model.add(Convolution2D(nb_filter=N_filter, nb_row=filter_shape[0], nb_col=filter_shape[1], border_mode = 'valid', activation = 'relu'))
        sub_model.add(MaxPooling2D(pool_size=(pool_shape[0], pool_shape[1]), border_mode='valid'))
        sub_model.add(Flatten())
        sub_models.append(sub_model)

    model.add((Merge(sub_models, mode='concat')))
    # Fully Connected Layer with dropout
    model.add(Flatten())
    model.add(Dense(256, activation='relu'))
    model.add(Dropout(0.5))
    # Fully Connected Layer as output layer
    model.add(Dense(2, activation='softmax'))
    return model
Beispiel #14
0
    def build_critic_network(self):
        conv_model = Sequential()
        conv_model.add(Conv2d(32, 8, 8, input_shape=(self.img_dims[0], self.img_dims[1], self.frame_num), activation='relu', subsample=(4,4)))
        conv_model.add(Conv2d(64,4,4, activation='relu', subsample=(2,2)))
        conv_model.add(Conv2d(64,3,3, activation='relu', subsample=(1,1)))
        conv_model.add(Flatten())
        conv_model.add(Dense(100, activation='tanh'))


        action_model = Sequential()
        action_model.add(Dense(10, activation='relu', input_dim=self.action_dim))

        merged = Merge([conv_model, action_model], mode='concat')

        final_model = Sequential()
        final_model.add(merged)
        final_model.add(Dense(self.action_dim, activation='tanh'))
        final_model.add(Dense(self.action_dim, activation='linear'))

        s_i_c = tf.placeholder(tf.float32, [None, self.img_dims[0], self.img_dims[1], self.frame_num])
        s_a_c = tf.placeholder(tf.float32, [None, self.action_dim])

        q = final_model([s_i_c, s_a_c])

        action_grads = tf.gradients(q, s_a_c)

        return final_model, s_i_c, s_a_c, q, action_grads
Beispiel #15
0
def cnn(embedding_size=EMBEDDING_SIZE, output_length=DEFAULT_LABELS):
    """ Create and return a keras model of a CNN """
    NB_FILTER = 256
    NGRAM_LENGTHS = [1, 2, 3, 4, 5]

    conv_layers = []
    for ngram_length in NGRAM_LENGTHS:
        ngram_layer = Sequential()
        ngram_layer.add(Convolution1D(
            NB_FILTER,
            ngram_length,
            input_dim=embedding_size,
            input_length=SAMPLE_LENGTH,
            init='lecun_uniform',
            activation='tanh',
        ))
        pool_length = SAMPLE_LENGTH - ngram_length + 1
        ngram_layer.add(MaxPooling1D(pool_length=pool_length))
        conv_layers.append(ngram_layer)

    model = Sequential()
    model.add(Merge(conv_layers, mode='concat'))

    model.add(Dropout(0.5))
    model.add(Flatten())

    model.add(Dense(output_length, activation='sigmoid'))

    model.compile(
        loss='binary_crossentropy',
        optimizer='adam',
        metrics=['accuracy'],
    )

    return model
def creat_binary_tag_LSTM( sourcevocabsize,targetvocabsize, source_W,input_seq_lenth ,output_seq_lenth ,
    hidden_dim ,emd_dim,loss='categorical_crossentropy',optimizer = 'rmsprop'):
    encoder_a = Sequential()
    encoder_b = Sequential()
    encoder_c = Sequential()
    l_A_embedding = Embedding(input_dim=sourcevocabsize+1,
                        output_dim=emd_dim,
                        input_length=input_seq_lenth,
                        mask_zero=True,
                        weights=[source_W])
    encoder_a.add(l_A_embedding)
    encoder_a.add(Dropout(0.3))
    encoder_b.add(l_A_embedding)
    encoder_b.add(Dropout(0.3))
    encoder_c.add(l_A_embedding)

    Model = Sequential()

    encoder_a.add(LSTM(hidden_dim,return_sequences=True))
    encoder_b.add(LSTM(hidden_dim,return_sequences=True,go_backwards=True))
    encoder_rb = Sequential()
    encoder_rb.add(ReverseLayer2(encoder_b))
    encoder_ab=Merge(( encoder_a,encoder_rb),mode='concat')
    Model.add(encoder_ab)

    decodelayer=LSTMDecoder_tag(hidden_dim=hidden_dim, output_dim=hidden_dim
                                         , input_length=input_seq_lenth,
                                        output_length=output_seq_lenth,
                                        state_input=False,
                                         return_sequences=True)
    Model.add(decodelayer)
    Model.add(TimeDistributedDense(targetvocabsize+1))
    Model.add(Activation('softmax'))
    Model.compile(loss=loss, optimizer=optimizer)
    return Model
Beispiel #17
0
def modelQA(vocab_size, img_dim, wordvec_dim, inp_len, embeddings):
    # Returns the QA model
    x = Input(shape=(4096, ))
    img_model1 = Model(input=x, output=x)
    img_model2 = Sequential()
    img_model2.add(img_model1)
    img_model2.add(Dense(300))

    text_model = Sequential()
    text_model.add(
        Embedding(vocab_size,
                  wordvec_dim,
                  weights=[embeddings],
                  input_length=inp_len,
                  trainable=False))  #, mask_zero=True))
    text_model.add(Lambda(MeanPool1D, output_shape=MeanPool1D_shape))
    text_model.add(Dense(300))

    model = Sequential()
    model.add(Merge([img_model2, text_model], mode='mul'))
    model.add(Dropout(0.25))
    model.add(Dense(300))
    model.add(Dropout(0.25))
    model.add(Dense(300))
    model.add(Dropout(0.25))
    model.add(Dense(100))
    model.add(Dropout(0.5))
    model.add(Dense(1, activation='sigmoid'))

    model.compile(optimizer='adam', loss='binary_crossentropy', \
                  metrics=['accuracy'])

    return model
    def create(self):

        assert self._config.textual_embedding_dim == 0, \
                'Embedding cannot be learnt but must be fixed'

        language_forward = Sequential()
        language_forward.add(
            self._config.recurrent_encoder(
                self._config.hidden_state_dim,
                return_sequences=False,
                input_shape=(self._config.max_input_time_steps,
                             self._config.input_dim)))
        self.language_forward = language_forward

        language_backward = Sequential()
        language_backward.add(
            self._config.recurrent_encoder(
                self._config.hidden_state_dim,
                return_sequences=False,
                go_backwards=True,
                input_shape=(self._config.max_input_time_steps,
                             self._config.input_dim)))
        self.language_backward = language_backward

        self.add(Merge([language_forward, language_backward]))
        self.deep_mlp()
        self.add(Dense(self._config.output_dim))
        self.add(Activation('softmax'))
Beispiel #19
0
def test_embeddings(df, y_train):

    df = df[['Agencia_ID', 'Canal_ID']]
    X = np.array(df.values.copy())
    y = y_train
    print "Before", X.shape, y.shape

    print np.max(X[:, 0]), np.max(X[:, 1])

    #X = np.array([[0, 0], [1, 1], [2, 2], [3, 3], [3, 4], [5,6]])
    X_list = [X[:, 0].reshape(-1, 1), X[:, 1].reshape(-1, 1)]

    #y = np.array([0, 0, 0, 1, 1, 6])

    print "After", X.shape, y.shape, X_list[0].shape, X_list[1].shape

    embed1 = Sequential()
    embed1.add(Embedding(30000, 5, input_length=1))
    embed1.add(Reshape(dims=(5, )))

    embed2 = Sequential()
    embed2.add(Embedding(12, 3, input_length=1))
    embed2.add(Reshape(dims=(3, )))

    model = Sequential()
    model.add(Merge([embed1, embed2], mode='concat'))
    model.add(Dense(32, init='uniform'))
    model.add(Activation('relu'))
    model.add(Dense(1, init='uniform'))
    model.add(Activation('sigmoid'))
    model.compile(loss='mean_absolute_error', optimizer='adam')

    model.fit(X_list, y, nb_epoch=10, batch_size=4)
Beispiel #20
0
def get_cnn_network_embed(rna_len, pro_len):
    nbfilter = 16
    print 'configure cnn network'
    embedded_dim, embedding_weights, n_aa_symbols = get_embed_dim('peptideEmbedding25.pickle')
    seq_model = set_cnn_embed(n_aa_symbols, pro_len, embedded_dim, embedding_weights)
    print n_aa_symbols
    embedded_rna_dim, embedding_rna_weights, n_nucl_symbols = get_embed_dim('rnaEmbedding.pickle')
    print 'symbol', n_nucl_symbols
    struct_model = set_cnn_embed(n_nucl_symbols, rna_len, embedded_rna_dim, embedding_rna_weights)
    #pdb.set_trace()
    print 'pro cnn', seq_model.output_shape
    print 'rna cnn', struct_model.output_shape
    model = Sequential()
    model.add(Merge([seq_model, struct_model], mode='concat', concat_axis=1))
    
    #model.add(Bidirectional(LSTM(2*nbfilter)))
    #model.add(Dropout(0.10))
    model.add(Flatten())
    #model.add(Dense(nbfilter*(n_aa_symbols + n_nucl_symbols), activation='relu'))
    #model.add(Dropout(0.50))
    model.add(Dense(nbfilter*100, activation='relu')) 
    model.add(Dropout(0.50))
    #model.add(BatchNormalization(mode=2))
    print model.output_shape
    
    return model
Beispiel #21
0
def design_model_A(lstm_data_dim, nn_data_dim, timesteps):
    model_A = Sequential()
    model_B = Sequential()
    model_Combine = Sequential()

    # LSTM Part
    lstm_hidden_size = [40, 100]
    drop_out_rate = [0.6, 0.5]
    reg = [0.01]
    areg = [0.01]
    # unfortunately regularization is not implemented for LSTMs
    model_A.add(
        LSTM(lstm_hidden_size[0],
             return_sequences=True,
             input_shape=(timesteps, lstm_data_dim)))
    model_A.add(
        Dropout(drop_out_rate[0])
    )  # return_sequences=True means output cell state C at each LSTM sequence
    model_A.add(LSTM(lstm_hidden_size[1], return_sequences=False))
    model_A.add(
        Dropout(drop_out_rate[1])
    )  # return_sequence=False means output only last cell state C in LSTM sequence
    model_A.add(
        Dense(1,
              activation='linear',
              W_regularizer=l2(reg[0]),
              activity_regularizer=activity_l2(areg[0])))

    # NN Part
    nn_hidden_size = [40, 40]
    nn_drop_rate = [0.5, 0.5]
    nn_reg = [0.01, 0.01, 0.01]
    nn_areg = [0.01, 0.01, 0.01]
    model_B.add(
        Dense(nn_hidden_size[0],
              input_dim=nn_data_dim,
              W_regularizer=l2(nn_reg[0]),
              activity_regularizer=activity_l2(nn_areg[0])))
    model_B.add(Dropout(nn_drop_rate[0]))
    model_B.add(
        Dense(nn_hidden_size[1],
              W_regularizer=l2(nn_reg[1]),
              activity_regularizer=activity_l2(nn_areg[1])))
    model_B.add(Dropout(nn_drop_rate[1]))
    model_B.add(
        Dense(1,
              activation='linear',
              W_regularizer=l2(nn_reg[2]),
              activity_regularizer=activity_l2(nn_areg[2])))

    # Merge and Final Layer
    model_Combine.add(Merge([model_A, model_B], mode='concat'))
    model_Combine.add(Dense(1, activation='linear'))

    # output the model to a PNG file for visualization
    print "Outputting model graph to model.png"
    graph = to_graph(model_Combine, show_shape=True)
    graph.write_png("model.png")

    return model_Combine
    def build(self):
        self.img_model = Sequential()
        self.img_model.add(MaxPooling2D(input_shape=(14, 14, 512)))
        self.img_model.add(Flatten())
        for i in xrange(3):
            self.img_model.add(Dense(self.img_dim, activation='tanh'))
            self.img_model.add(BatchNormalization())

        self.txt_model = Sequential()
        # self.txt_model.add(Embedding(self.vocab_size, self.word_dim, input_length=self.max_sent_len, mask_zero = True))
        if self.bidirect:
            self.txt_model.add(Bidirectional(LSTM(output_dim=self.lstm_hidden_dim), input_shape=(self.max_sent_len, self.word_dim)))
            # self.txt_model.add(Bidirectional(GRU(output_dim=self.lstm_hidden_dim), input_shape=(self.max_sent_len, self.word_dim)))
        else:
            M = Masking(mask_value=0., input_shape=(self.max_sent_len, self.word_dim))
            self.txt_model.add(M)
            self.txt_model.add(LSTM(output_dim=self.lstm_hidden_dim, input_shape=(self.max_sent_len, self.word_dim)))
            # self.txt_model.add(GRU(output_dim=self.lstm_hidden_dim, input_shape=(self.max_sent_len, self.word_dim)))

        self.model = Sequential()
        self.model.add(Merge([self.txt_model, self.img_model], mode='concat', concat_axis=1))
        self.model.add(BatchNormalization())

        for i in xrange(2):
            self.model.add(Dense(self.fc_hidden_dim, init='he_normal', activation='relu'))
            self.model.add(BatchNormalization())
            self.model.add(Dropout(self.dropout))

        self.model.add(Dense(self.nb_classes, activation='softmax'))

        self.model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])
        self.model.summary()
def lstm_resnet_network(num_classes, num_hidden_units, max_len, word_dim,
                        img_dim):
    image_model = Sequential()
    image_model.add(Reshape((img_dim, ), input_shape=(img_dim, )))

    lstm_model = Sequential()
    lstm_model.add(
        LSTM(num_hidden_units,
             activation='tanh',
             return_sequences=False,
             input_shape=(max_len, word_dim)))
    lstm_model.add(Dropout(0.5))

    combined_model = Sequential()
    combined_model.add(
        Merge([image_model, lstm_model], mode='concat', concat_axis=1))
    combined_model.add(Dense(1024, init='glorot_uniform'))
    combined_model.add(Activation('relu'))

    combined_model.add(Dropout(0.5))
    combined_model.add(Dense(num_classes, init='glorot_uniform'))
    combined_model.add(Activation('softmax'))

    print 'Model Compilation started'
    combined_model.compile(
        loss='categorical_crossentropy',
        optimizer='adam')  #### adam,rmsprop better than sgd for rnns
    print 'Model compilation done'
    return combined_model
def lstm_resnet_embedding_network(num_classes, num_hidden_units, max_len,
                                  word_dim, img_dim, embedding_matrix):
    image_model = Sequential()
    image_model.add(Reshape((img_dim, ), input_shape=(img_dim, )))

    lstm_model = Sequential()
    lstm_model.add(
        Embedding(embedding_matrix.shape[0],
                  word_dim,
                  weights=[embedding_matrix],
                  trainable=True,
                  input_length=max_len))
    lstm_model.add(Activation('tanh'))
    lstm_model.add(
        LSTM(num_hidden_units,
             activation='tanh',
             return_sequences=False,
             input_shape=(max_len, word_dim)))
    lstm_model.add(Dropout(0.5))

    combined_model = Sequential()
    combined_model.add(
        Merge([image_model, lstm_model], mode='concat', concat_axis=1))
    combined_model.add(Dense(1024, init='glorot_uniform'))
    combined_model.add(Activation('relu'))
    combined_model.add(Dropout(0.5))
    combined_model.add(Dense(num_classes, init='glorot_uniform'))
    combined_model.add(Activation('softmax'))
    #adam = Adam(decay=0.99997592083)
    print 'Model Compilation started'
    combined_model.compile(
        loss='categorical_crossentropy',
        optimizer='adam')  #### adam,rmsprop better than sgd for rnns
    print 'Model compilation done'
    return combined_model
    def _build_model(self, word_length, label_length, sentence_length):

        embedding_size = 128
        lstm_size = 64
        dropout_rate = 0.1

        forward = Sequential()
        forward.add(
            Embedding(word_length,
                      embedding_size,
                      input_length=sentence_length))
        forward.add(LSTM(lstm_size, activation='tanh'))

        backward = Sequential()
        backward.add(
            Embedding(word_length,
                      embedding_size,
                      input_length=sentence_length))
        backward.add(LSTM(lstm_size, activation='tanh', go_backwards=True))

        model = Sequential()
        model.add(Merge([forward, backward], mode='concat'))
        model.add(Dropout(dropout_rate))
        model.add(Dense(label_length, activation='softmax'))

        model.compile(loss='categorical_crossentropy',
                      optimizer='rmsprop',
                      metrics=['accuracy'])

        self._model = model
Beispiel #26
0
    def build_critic_network(self):
        sensor_model = Sequential()
        sensor_model.add(
            Dense(30, activation='relu', input_dim=self.sensor_dim))
        #sensor_model.add(Dense(10, activation='tanh'))

        action_model = Sequential()
        action_model.add(
            Dense(30, activation='relu', input_dim=self.action_dim))
        #sensor_model.add(Dense(10, activation='tanh'))

        merged = Merge([sensor_model, action_model], mode='concat')

        final_model = Sequential()
        final_model.add(merged)
        #final_model.add(Dense(self.action_dim, activation='tanh'))
        final_model.add(Dense(self.action_dim, activation='linear'))

        s_s_c = tf.placeholder(tf.float32, [None, self.sensor_dim])
        s_a_c = tf.placeholder(tf.float32, [None, self.action_dim])

        q = final_model([s_s_c, s_a_c])

        action_grads = tf.gradients(q, s_a_c)

        return final_model, s_s_c, s_a_c, q, action_grads
Beispiel #27
0
def inception_net(_input):
    x = Reshape((28, 28, 1))(_input)
    #x = Convolution2D(32, 3, 3, subsample=(1, 1))(x)
    #x = Activation('relu')(x)
    x = Convolution2D(16, 3, 3, subsample=(2, 2))(x)
    x = BatchNormalization()(x)
    x = Activation('relu')(x)
    x = Convolution2D(48, 3, 3, subsample=(1, 1))(x)
    x = BatchNormalization()(x)
    x = Activation('relu')(x)
    #x = MaxPooling2D((3, 3), strides=(2,2))(x)
    x = mniny_inception_module(x, 1)
    x = mniny_inception_module(x, 2)
    #x = MaxPooling2D((3, 3), strides=(2,2))(x)
    x = mniny_inception_module(x, 2)
    x, soft1 = mniny_inception_module(x, 3, True)
    x = mniny_inception_module(x, 3)
    x = mniny_inception_module(x, 3)
    x, soft2 = mniny_inception_module(x, 4, True)
    x = MaxPooling2D((3, 3), strides=(2, 2))(x)
    x = mniny_inception_module(x, 4)
    x = mniny_inception_module(x, 5)
    x = AveragePooling2D((5, 5), strides=(1, 1))(x)
    x = Dropout(0.4)(x)
    x = Flatten()(x)
    x = Dense(10)(x)
    soft3 = Activation('softmax')(x)
    out = Merge(mode='ave', concat_axis=1)([soft1, soft2, soft3])
    return out
Beispiel #28
0
    def build_model(self):

        vector_input = Sequential()
        vector_input.add(
            Embedding(input_dim=len(self.ds.vocab),
                      output_dim=ve.EMBEDDING_SIZE,
                      weights=[self.ds.weights],
                      input_length=ve.WINDOW_SIZE))
        caps_input = Sequential()
        caps_input.add(
            Embedding(input_dim=ve.CAPS_DIMS,
                      output_dim=ve.CAPS_DIMS,
                      weights=[np.eye(ve.CAPS_DIMS)],
                      input_length=ve.WINDOW_SIZE))
        model = Sequential()
        model.add(Merge([vector_input, caps_input], mode=ve.CONCAT))
        model.add(
            Reshape(((ve.EMBEDDING_SIZE + ve.CAPS_DIMS) * ve.WINDOW_SIZE, )))
        model.add(Dense(output_dim=ve.HIDDEN_SIZE))
        model.add(Activation(ve.TANH))
        model.add(Dropout(ve.DROPOUT_PROB))
        model.add(Dense(input_dim=ve.HIDDEN_SIZE, output_dim=ve.NER_CLASSES))
        model.add(Activation(ve.SOFTMAX))
        ve.compile_other_model(model, self.hp.optimizer)

        return model
Beispiel #29
0
def build_model(learning_rate=0.001, reg_rate=0.001, input_size=SIZE):
    cnn = Sequential()
    cnn.add(
        Convolution2D(8,
                      5,
                      5,
                      border_mode='same',
                      activation='relu',
                      input_shape=(1, input_size, input_size)))
    #cnn.add(Convolution2D(8, 3, 3, border_mode='same', activation='relu'))
    #cnn.add(BatchNormalization())
    #cnn.add(Activation('relu'))
    cnn.add(MaxPooling2D())
    cnn.add(Convolution2D(32, 5, 5, border_mode='same', activation='relu'))
    #cnn.add(Convolution2D(32, 3, 3, border_mode='same', activation='relu'))
    #cnn.add(BatchNormalization())
    #cnn.add(Activation('relu'))
    cnn.add(MaxPooling2D())
    cnn.add(Flatten())
    cnn.add(Dropout(0.5))

    mlp = Sequential()
    mlp.add(Flatten(input_shape=(3, 8, 8)))

    model = Sequential()
    model.add(Merge([cnn, mlp], mode='concat'))
    model.add(Dense(128, activation='relu'))
    model.add(Dropout(0.5))

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

    model.compile(optimizer='adam',
                  loss='categorical_crossentropy',
                  metrics=['accuracy'])
    return model
Beispiel #30
0
def mul

model = Sequential()
model.add(Embedding(1000, 64, input_length=2))
mode.add(Merge(

input_array = np.random.randint
Beispiel #31
0
    def buildComposition(self, shared=True):
        q_input = self.tensors['q_input']
        a_input = self.tensors['a_input']
        if shared:
            q_embedding = self.layers['shared-embedding'](q_input)
            a_embedding = self.layers['shared-embedding'](a_input)
        else:
            q_embedding = self.layers['q-embedding'](q_input)
            a_embedding = self.layers['a-embedding'](a_input)

        print('Embedding ndim q %d a %d' % (K.ndim(q_embedding), K.ndim(a_embedding)))
        print('Embedding shape ', q_embedding._keras_shape, a_embedding._keras_shape)

        # compute Semantic Matching
        cross = Merge(
        #   [q_embedding, a_embedding],
            mode=semantic_matrix,
            output_shape=(self.q_length, self.a_length),
            name='semantic'
        )
        semantic = cross([q_embedding, a_embedding])
        print('Semantic ndim %d' % K.ndim(semantic))
        print('Semantic shape ', semantic._keras_shape)
        print('Semantic shape ', cross.get_output_shape_at(0))

        # compute cross 
        q_match = merge(
            [a_embedding, semantic],
            mode=lambda x: match_matrix(*x,axis=0, w=self.params['window']),
            output_shape=(self.q_length, self.wdim),
            name='q_match'
        )
        print('q_match ', q_match._keras_shape, K.ndim(q_match))

        a_match = merge(
            [q_embedding, semantic],
            mode=lambda x: match_matrix(*x,axis=1, w=self.params['window']),
            output_shape=(self.a_length, self.wdim),
            name='a_match'
        )
        print('Match ndim q %d a %d' % (K.ndim(q_match), K.ndim(a_match)))
        print('Match shape ', q_match._keras_shape, a_match._keras_shape)
        self.tensors['q-embedding'] = q_embedding
        self.tensors['a-embedding'] = a_embedding
        self.tensors['q-match'] = q_match
        self.tensors['a-match'] = a_match
Beispiel #32
0
embedding = Embedding(
	len(vocab), 
	WORD_EMBEDDING_DIM, 
	#input_length=QMAX_TIMESTAMP,
)

q_embedding = embedding(q_input)
a_embedding = embedding(a_input)
print('Embedding ndim q %d a %d' % (K.ndim(q_embedding), K.ndim(a_embedding)))
print('Embedding shape ', q_embedding._keras_shape, a_embedding._keras_shape)

# compute Semantic Matching
cross = Merge(
#	[q_embedding, a_embedding],
	mode=semantic_matrix,
	output_shape=(QMAX_TIMESTAMP, AMAX_TIMESTAMP),
	name='semantic'
)
semantic = cross([q_embedding, a_embedding])
print('Semantic ndim %d' % K.ndim(semantic))
print('Semantic shape ', semantic._keras_shape)
print('Semantic shape ', cross.get_output_shape_at(0))

# compute cross 
q_match = merge(
	[a_embedding, semantic],
	mode=lambda x: match_matrix(x,axis=0),
	output_shape=(QMAX_TIMESTAMP, WORD_EMBEDDING_DIM),
	name='q_match'
)
print('q_match ', q_match._keras_shape, K.ndim(q_match))