Example #1
0
def make_entity_start_model(bert_path, ckpt_file, max_seq_len, bert_dim):
    model_ckpt = bert_path + ckpt_file
    bert_params = params_from_pretrained_ckpt(bert_path)
    bert_layer = BertModelLayer.from_params(bert_params,
                                            name="bert",
                                            trainable=True)
    slice_fn = make_gather_entity_start_fn(bert_dim)

    input_ids = Input(shape=(max_seq_len, ), dtype='int32')
    index_ent1 = Input(shape=(2, ), dtype='int32')
    index_ent2 = Input(shape=(2, ), dtype='int32')
    bert_emb = bert_layer(input_ids)
    ent1_start = Lambda(lambda x: slice_fn(x))([bert_emb, index_ent1])
    ent2_start = Lambda(lambda x: slice_fn(x))([bert_emb, index_ent2])
    concat = concatenate([ent1_start, ent2_start])
    output = Dense(2, activation='softmax')(concat)
    model = Model(inputs=[input_ids, index_ent1, index_ent2], outputs=output)
    model.build(input_shape=(None, max_seq_len))

    load_bert_weights(bert_layer, model_ckpt)
    model.compile(loss='categorical_crossentropy',
                  optimizer='adam',
                  metrics=['accuracy'])

    return model
Example #2
0
def make_entity_border_encoder(bert_path, ckpt_file, max_seq_len, bert_dim):
    model_ckpt = bert_path + ckpt_file
    bert_params = params_from_pretrained_ckpt(bert_path)
    bert_layer = BertModelLayer.from_params(bert_params,
                                            name="bert",
                                            trainable=False)
    gather_fn = make_gather_entity_border_fn(bert_dim)

    input_ids = Input(shape=(max_seq_len, ), dtype='int32')
    index_border_ent1 = Input(shape=(2, ), dtype='int32')
    index_border_ent2 = Input(shape=(2, ), dtype='int32')
    bert_emb = bert_layer(input_ids)
    ent1_avg_emb = Lambda(lambda x: gather_fn(x))(
        [bert_emb, index_border_ent1])
    ent2_avg_emb = Lambda(lambda x: gather_fn(x))(
        [bert_emb, index_border_ent2])
    ent1_flatten = Flatten()(ent1_avg_emb)
    ent2_flatten = Flatten()(ent2_avg_emb)
    output = concatenate([ent1_flatten, ent2_flatten])

    model = Model(inputs=[input_ids, index_border_ent1, index_border_ent2],
                  outputs=output)
    model.build(input_shape=(None, max_seq_len))

    load_bert_weights(bert_layer, model_ckpt)
    model.compile(loss='categorical_crossentropy',
                  optimizer='adam',
                  metrics=['accuracy'])

    return model
Example #3
0
    def build_model(self):
        x = Input(shape=(self.input_shape, ))
        outputs = self.regime(x, self.num_stages, self.hidden_size,
                              self.num_class, self.graph_model,
                              self.graph_param)
        model = Model(inputs=[x], outputs=[outputs])
        model.build(input_shape=[self.input_shape])

        return model
Example #4
0
    def build_critic_model(self, input_size, action_size, model_name='critic'):
        """
        Returns Q(st+1 | a, s)
        """

        inputs = [Input(shape=(input_size)), Input(shape=(action_size, ))]
        concat = Concatenate(axis=-1)(inputs)
        x = Dense(24, name="hidden_1", activation='tanh')(concat)
        x = Dense(48, name="hidden_2", activation='tanh')(x)
        output = Dense(1, name="Out")(x)
        model = Model(inputs=inputs, outputs=output, name=model_name)
        model.build(input_shape=[(input_size, ), (action_size, )])

        return model
Example #5
0
def make_cls_encoder(bert_path, ckpt_file, max_seq_len, bert_dim):
    model_ckpt = bert_path + ckpt_file
    bert_params = params_from_pretrained_ckpt(bert_path)
    bert_layer = BertModelLayer.from_params(bert_params,
                                            name="bert",
                                            trainable=False)

    input_ids = Input(shape=(max_seq_len, ), dtype='int32')
    bert_emb = bert_layer(input_ids)
    output = Lambda(lambda x: tf.gather(x, indices=0, axis=1))(bert_emb)

    model = Model(inputs=input_ids, outputs=output)
    model.build(input_shape=(None, max_seq_len))

    load_bert_weights(bert_layer, model_ckpt)
    model.compile(loss='categorical_crossentropy',
                  optimizer='adam',
                  metrics=['accuracy'])

    return model
Example #6
0
 def encoder_df(self):
     """ DFL SAE DF Encoder Network"""
     global TPU_ADDRESS
     input_ = Input(shape=self.input_shape)
     dims = self.input_shape[-1] * self.config["encoder_dims"]
     lowest_dense_res = self.input_shape[0] // 16
     var_x = input_
     var_x = self.blocks.conv(var_x, dims)
     var_x = self.blocks.conv(var_x, dims * 2)
     var_x = self.blocks.conv(var_x, dims * 4)
     var_x = self.blocks.conv(var_x, dims * 8)
     var_x = Dense(self.ae_dims)(Flatten()(var_x))
     var_x = Dense(lowest_dense_res * lowest_dense_res *
                   self.ae_dims)(var_x)
     var_x = Reshape(
         (lowest_dense_res, lowest_dense_res, self.ae_dims))(var_x)
     var_x = self.blocks.upscale(var_x, self.ae_dims)
     gpu_model = KerasModel(input_, var_x)
     gpu_model.build(self.input_shape)
     return gpu_model
def create_text_model(max_seq_len,
                      bert_ckpt_file,
                      bert_config_file,
                      NUM_CLASS,
                      overwriteLayerAndEmbeddingSize=False,
                      isPreTrained=False,
                      pathToBertModelWeights=None,
                      isTrainable=True):
    with GFile(bert_config_file, "r") as reader:
        bc = StockBertConfig.from_json_string(reader.read())

        if overwriteLayerAndEmbeddingSize:
            bc.max_position_embeddings = max_seq_len

        bert_params = map_stock_config_to_params(bc)
        bert_params.adapter_size = None
        bert = BertModelLayer.from_params(bert_params, name="bert")

    input_ids = Input(shape=(max_seq_len, ), dtype='int32', name="input_ids")
    bert_output = bert(input_ids)

    print("bert shape", bert_output.shape)

    cls_out = Lambda(lambda seq: seq[:, 0, :],
                     name='bert_output_layer_768')(bert_output)
    cls_out = Dropout(0.5)(cls_out)
    output = Dense(NUM_CLASS, activation="softmax")(cls_out)  #

    model_bert = Model(inputs=input_ids, outputs=output, name='BERT')
    model_bert.build(input_shape=(None, max_seq_len))

    if not isPreTrained:
        load_stock_weights(bert, bert_ckpt_file)
        return model_bert
    else:
        model_bert.load_weights(pathToBertModelWeights)
        if not isTrainable:
            for layer in model_bert.layers:
                layer.trainable = False
        return model_bert, 2
Example #8
0
def HPE(num_modules=4):
    layers_dict = dict()

    inputs = Input(shape=(256, 256, 3),
                   batch_size=16,
                   sparse=False,
                   ragged=False)

    #base part
    conv1 = layers.Conv2D(64, (7, 7), padding='same', strides=2)
    bn1 = layers.BatchNormalization()

    conv2 = ConvBlock(64, 128)
    conv3 = ConvBlock(128, 128)
    conv4 = ConvBlock(128, 256)

    # Stacking part
    for hg_module in range(num_modules):
        layers_dict['m' + str(hg_module)] = HourGlass(1, 4, 256)
        layers_dict['top_m_' + str(hg_module)] = ConvBlock(256, 256)
        layers_dict['conv_last' + str(hg_module)] = layers.Conv2D(
            256, (1, 1), padding='valid', strides=1)
        layers_dict['bn_end' + str(hg_module)] = layers.BatchNormalization()
        layers_dict['l' + str(hg_module)] = layers.Conv2D(
            16, (1, 1), padding='valid', strides=1)  # 16 heatmaps

        if hg_module < num_modules - 1:
            layers_dict['bl' + str(hg_module)] = layers.Conv2D(256, (1, 1),
                                                               padding='valid',
                                                               strides=1)
            layers_dict['al' + str(hg_module)] = layers.Conv2D(256, (1, 1),
                                                               padding='valid',
                                                               strides=1)

    # Call
    x = tf.nn.relu(bn1(conv1(inputs)))
    x = conv2(x)
    x = layers.AveragePooling2D((2, 2), strides=2)(x)
    x = conv3(x)
    x = conv4(x)

    previous = x
    outputs = []

    for i in range(num_modules):
        hg = layers_dict['m' + str(i)](previous)

        ll = hg
        ll = layers_dict['top_m_' + str(i)](ll)

        ll = tf.nn.relu(layers_dict['bn_end' + str(i)](
            layers_dict['conv_last' + str(i)](ll)))

        # Predict heatmaps
        tmp_out = layers_dict['l' + str(i)](ll)
        outputs.append(tmp_out)

        if i < num_modules - 1:
            ll = layers_dict['bl' + str(i)](ll)
            tmp_out_ = layers_dict['al' + str(i)](tmp_out)
            previous = previous + ll + tmp_out_

    opt = tf.keras.optimizers.Adam(learning_rate=1e-03)
    model = models.Model(inputs=inputs, outputs=outputs[-1], name='HPE')
    model.compile(optimizer=opt, loss=HeatmapLoss)
    model.build((None, 256, 256, 3))
    model.summary()

    return model
Example #9
0
    def decoder(self):
        """ DFL SAE Decoder Network"""
        global TPU_ADDRESS
        if self.architecture == "liae":
            input_shape = np.array(
                self.networks["intermediate"].output_shapes[0][1:]) * (1, 1, 2)
        else:
            input_shape = self.networks["encoder"].output_shapes[0][1:]
        input_ = Input(shape=input_shape)
        outputs = list()

        dims = self.input_shape[-1] * self.config["decoder_dims"]
        var_x = input_

        var_x1 = self.blocks.upscale(var_x, dims * 8, res_block_follows=True)
        var_x1 = self.blocks.res_block(var_x1, dims * 8)
        var_x1 = self.blocks.res_block(var_x1, dims * 8)
        if self.multiscale_count >= 3:
            outputs.append(
                self.blocks.conv2d(var_x1,
                                   3,
                                   kernel_size=5,
                                   padding="same",
                                   activation="sigmoid",
                                   name="face_out_32"))

        var_x2 = self.blocks.upscale(var_x1, dims * 4, res_block_follows=True)
        var_x2 = self.blocks.res_block(var_x2, dims * 4)
        var_x2 = self.blocks.res_block(var_x2, dims * 4)
        if self.multiscale_count >= 2:
            outputs.append(
                self.blocks.conv2d(var_x2,
                                   3,
                                   kernel_size=5,
                                   padding="same",
                                   activation="sigmoid",
                                   name="face_out_64"))

        var_x3 = self.blocks.upscale(var_x2, dims * 2, res_block_follows=True)
        var_x3 = self.blocks.res_block(var_x3, dims * 2)
        var_x3 = self.blocks.res_block(var_x3, dims * 2)

        outputs.append(
            self.blocks.conv2d(var_x3,
                               3,
                               kernel_size=5,
                               padding="same",
                               activation="sigmoid",
                               name="face_out_128"))

        if self.use_mask:
            var_y = input_
            var_y = self.blocks.upscale(var_y, self.config["decoder_dims"] * 8)
            var_y = self.blocks.upscale(var_y, self.config["decoder_dims"] * 4)
            var_y = self.blocks.upscale(var_y, self.config["decoder_dims"] * 2)
            var_y = self.blocks.conv2d(var_y,
                                       1,
                                       kernel_size=5,
                                       padding="same",
                                       activation="sigmoid",
                                       name="mask_out")
            outputs.append(var_y)
        gpu_model = KerasModel(input_, outputs=outputs)
        gpu_model.build(input_shape)
        return gpu_model