コード例 #1
0
 def __init__(self,
              vocab_size,
              embedding_size=128,
              hidden_dropout_prob=0.1,
              max_position_embeddings=512,
              type_vocab_size=16,
              padding_idx=0):
     super().__init__()
     self.word_embeddings = nn.Embedding(
         vocab_size, embedding_size, padding_idx=padding_idx)
     self.position_embeddings = nn.Embedding(max_position_embeddings,
                                             embedding_size)
     self.token_type_embeddings = nn.Embedding(type_vocab_size,
                                               embedding_size)
     self.layer_norm = nn.LayerNorm(embedding_size)
     self.dropout = nn.Dropout(hidden_dropout_prob)
コード例 #2
0
    def __init__(self, cfg, name=None):
        """
        Fundamental pretrained Ernie model
        """
        log.debug('init ErnieModel with config: %s' % repr(cfg))
        nn.Layer.__init__(self)
        d_model = cfg['hidden_size']
        d_emb = cfg.get('emb_size', cfg['hidden_size'])
        d_vocab = cfg['vocab_size']
        d_pos = cfg['max_position_embeddings']
        d_sent = cfg.get("sent_type_vocab_size") or cfg['type_vocab_size']
        self.n_head = cfg['num_attention_heads']
        self.return_additional_info = cfg.get('return_additional_info', False)
        initializer = nn.initializer.TruncatedNormal(
            std=cfg['initializer_range'])

        self.ln = _build_ln(d_model, name=append_name(name, 'pre_encoder'))
        self.word_emb = nn.Embedding(
            d_vocab,
            d_emb,
            weight_attr=P.ParamAttr(name=append_name(name, 'word_embedding'),
                                    initializer=initializer))
        self.pos_emb = nn.Embedding(
            d_pos,
            d_emb,
            weight_attr=P.ParamAttr(name=append_name(name, 'pos_embedding'),
                                    initializer=initializer))
        self.sent_emb = nn.Embedding(
            d_sent,
            d_emb,
            weight_attr=P.ParamAttr(name=append_name(name, 'sent_embedding'),
                                    initializer=initializer))
        prob = cfg['hidden_dropout_prob']
        self.dropout = nn.Dropout(p=prob)

        self.encoder_stack = ErnieEncoderStack(cfg,
                                               append_name(name, 'encoder'))
        if cfg.get('has_pooler', True):
            self.pooler = _build_linear(
                cfg['hidden_size'],
                cfg['hidden_size'],
                append_name(name, 'pooled_fc'),
                initializer,
            )
        else:
            self.pooler = None
        self.train()
コード例 #3
0
ファイル: modeling.py プロジェクト: QingshuChen/PaddleNLP
 def __init__(self,
              vocab_size,
              hidden_size=768,
              hidden_dropout_prob=0.1,
              max_position_embeddings=512,
              type_vocab_size=16,
              pad_token_id=0):
     super(RobertaEmbeddings, self).__init__()
     self.word_embeddings = nn.Embedding(vocab_size,
                                         hidden_size,
                                         padding_idx=pad_token_id)
     self.position_embeddings = nn.Embedding(max_position_embeddings,
                                             hidden_size)
     self.token_type_embeddings = nn.Embedding(type_vocab_size, hidden_size)
     self.layer_norm = nn.LayerNorm(hidden_size)
     self.dropout = nn.Dropout(hidden_dropout_prob)
     self.padding_idx = pad_token_id
コード例 #4
0
ファイル: rec_nrtr_head.py プロジェクト: gongliyu/PaddleOCR
 def __init__(self, d_model, vocab, padding_idx, scale_embedding):
     super(Embeddings, self).__init__()
     self.embedding = nn.Embedding(vocab, d_model, padding_idx=padding_idx)
     w0 = np.random.normal(0.0, d_model**-0.5,
                           (vocab, d_model)).astype(np.float32)
     self.embedding.weight.set_value(w0)
     self.d_model = d_model
     self.scale_embedding = scale_embedding
コード例 #5
0
ファイル: modeling.py プロジェクト: chenxiaozeng/PaddleNLP
 def __init__(self,
              vocab_size,
              d_model,
              hidden_dropout_prob,
              memory_len,
              max_position_embeddings=512,
              type_vocab_size=3,
              padding_idx=0):
     super(ErnieDocEmbeddings, self).__init__()
     self.word_emb = nn.Embedding(vocab_size, d_model)
     self.pos_emb = nn.Embedding(max_position_embeddings * 2 + memory_len,
                                 d_model)
     self.token_type_emb = nn.Embedding(type_vocab_size, d_model)
     self.memory_len = memory_len
     self.dropouts = nn.LayerList(
         [nn.Dropout(hidden_dropout_prob) for i in range(3)])
     self.norms = nn.LayerList([nn.LayerNorm(d_model) for i in range(3)])
コード例 #6
0
ファイル: model.py プロジェクト: tianxin1860/PaddleNLP
    def __init__(self, vocab_size, embed_dim, hidden_size, num_layers):
        super(Seq2SeqEncoder, self).__init__()
        self.embedder = nn.Embedding(vocab_size, embed_dim)

        self.lstm = nn.LSTM(input_size=embed_dim,
                            hidden_size=hidden_size,
                            num_layers=num_layers,
                            dropout=0.2 if num_layers > 1 else 0.)
コード例 #7
0
    def __init__(self):
        super(SimpleNet, self).__init__()
        self.word_embeddings = nn.Embedding(vocab_size, hidden_size)

        self.softmax_weight = self.create_parameter(
            shape=[hidden_size, vocab_size])
        self.softmax_bias = self.create_parameter(shape=[vocab_size],
                                                  is_bias=False)
コード例 #8
0
ファイル: modeling.py プロジェクト: tianxin1860/PaddleNLP
    def __init__(self,
                 vocab_size,
                 hidden_size=768,
                 hidden_dropout_prob=0.1,
                 max_position_embeddings=512,
                 max_2d_position_embeddings=1024,
                 layer_norm_eps=1e-12,
                 pad_token_id=0,
                 type_vocab_size=16):
        super(LayoutLMEmbeddings, self).__init__()
        self.word_embeddings = nn.Embedding(vocab_size,
                                            hidden_size,
                                            padding_idx=pad_token_id)
        self.position_embeddings = nn.Embedding(max_position_embeddings,
                                                hidden_size)
        # gry add for layoutlm
        self.x_position_embeddings = nn.Embedding(max_2d_position_embeddings,
                                                  hidden_size)
        self.y_position_embeddings = nn.Embedding(max_2d_position_embeddings,
                                                  hidden_size)
        self.h_position_embeddings = nn.Embedding(max_2d_position_embeddings,
                                                  hidden_size)
        self.w_position_embeddings = nn.Embedding(max_2d_position_embeddings,
                                                  hidden_size)
        # end of gry add for layoutlm
        #self.token_type_embeddings = nn.Embedding(type_vocab_size, hidden_size, padding_idx=pad_token_id)
        self.token_type_embeddings = nn.Embedding(type_vocab_size, hidden_size)
        self.layer_norm = nn.LayerNorm(hidden_size, epsilon=layer_norm_eps)
        self.dropout = nn.Dropout(hidden_dropout_prob)

        self.register_buffer(
            "position_ids",
            paddle.arange(max_position_embeddings).expand((1, -1)))
コード例 #9
0
ファイル: modeling.py プロジェクト: joey12300/PaddleNLP
    def __init__(self, config):
        super(LayoutXLMEmbeddings, self).__init__()
        self.word_embeddings = nn.Embedding(
            config["vocab_size"], config["hidden_size"], padding_idx=0)
        self.position_embeddings = nn.Embedding(
            config["max_position_embeddings"], config["hidden_size"])
        # gry add for layoutxlm
        self.x_position_embeddings = nn.Embedding(
            config["max_2d_position_embeddings"], config["coordinate_size"])
        self.y_position_embeddings = nn.Embedding(
            config["max_2d_position_embeddings"], config["coordinate_size"])
        self.h_position_embeddings = nn.Embedding(
            config["max_2d_position_embeddings"], config["coordinate_size"])
        self.w_position_embeddings = nn.Embedding(
            config["max_2d_position_embeddings"], config["coordinate_size"])
        # end of gry add for layoutxlm
        self.token_type_embeddings = nn.Embedding(config["type_vocab_size"],
                                                  config["hidden_size"])
        self.LayerNorm = nn.LayerNorm(
            config["hidden_size"], epsilon=config["layer_norm_eps"])
        self.dropout = nn.Dropout(config["hidden_dropout_prob"])

        self.register_buffer(
            "position_ids",
            paddle.arange(config["max_position_embeddings"]).expand((1, -1)))
コード例 #10
0
    def __init__(self, cfg, name=None):
        super(RelationalTransformerBlock, self).__init__()
        d_model = cfg['hidden_size']
        n_heads = cfg['num_attention_heads']
        self.attn = RelationalAttentionLayer(cfg,
                                             name=new_name(
                                                 name, 'multi_head_att'))
        self.ln1 = _build_ln(d_model, name=new_name(name, 'post_att'))
        self.ffn = PositionwiseFeedForwardLayer(cfg,
                                                name=new_name(name, 'ffn'))
        self.ln2 = _build_ln(d_model, name=new_name(name, 'post_ffn'))
        prob = cfg.get('intermediate_dropout_prob', cfg['hidden_dropout_prob'])
        self.dropout = nn.Dropout(p=prob)

        # 假设 k/v 的
        rel_hidden = d_model // n_heads
        self.relation_k_emb = nn.Embedding(cfg['num_relations'], rel_hidden)
        self.relation_v_emb = nn.Embedding(cfg['num_relations'], rel_hidden)
コード例 #11
0
ファイル: model.py プロジェクト: tianxin1860/PaddleNLP
    def __init__(self, config):
        """
        Model initialization
        
        Args:
            config: model configuration, see config.yaml for more detail
        """
        super(MemN2N, self).__init__()
        self.nwords = config.nwords
        self.init_hid = config.init_hid
        self.init_std = config.init_std
        self.nhop = config.nhop
        self.edim = config.edim
        self.mem_size = config.mem_size
        self.lindim = config.lindim
        self.max_grad_norm = config.max_grad_norm
        self.batch_size = config.batch_size

        self.checkpoint_dir = config.checkpoint_dir

        normal_attr = paddle.framework.ParamAttr(
            initializer=paddle.nn.initializer.Normal(std=self.init_std))
        self.A = nn.Embedding(self.nwords, self.edim, weight_attr=normal_attr)
        self.C = nn.Embedding(self.nwords, self.edim, weight_attr=normal_attr)

        # Temporal Encoding
        self.T_A = nn.Embedding(self.mem_size,
                                self.edim,
                                weight_attr=normal_attr)
        self.T_C = nn.Embedding(self.mem_size,
                                self.edim,
                                weight_attr=normal_attr)

        # Linear mapping for q
        self.H = nn.Linear(self.edim,
                           self.edim,
                           weight_attr=normal_attr,
                           bias_attr=False)

        # output mapping
        self.W = nn.Linear(self.edim,
                           self.nwords,
                           weight_attr=normal_attr,
                           bias_attr=False)
コード例 #12
0
    def __init__(self, bond_names, embed_dim):
        super(BondEmbedding, self).__init__()
        self.bond_names = bond_names

        self.embed_list = nn.LayerList()
        for name in self.bond_names:
            embed = nn.Embedding(CompoundKit.get_bond_feature_size(name) + 5,
                                 embed_dim,
                                 weight_attr=nn.initializer.XavierUniform())
            self.embed_list.append(embed)
コード例 #13
0
ファイル: test_ofa.py プロジェクト: wanghailan/PaddleSlim
 def __init__(self):
     super(ModelLinear2, self).__init__()
     with supernet(expand_ratio=None) as ofa_super:
         models = []
         models += [nn.Embedding(num_embeddings=64, embedding_dim=64)]
         models += [nn.Linear(64, 128)]
         models += [nn.LayerNorm(128)]
         models += [nn.Linear(128, 256)]
         models = ofa_super.convert(models)
     self.models = paddle.nn.Sequential(*models)
コード例 #14
0
ファイル: modeling.py プロジェクト: Steffy-zxf/PaddleNLP
    def __init__(self, emb_dim, max_length, bos_idx=0):
        super(PositionalEmbedding, self).__init__()
        self.emb_dim = emb_dim

        self.pos_encoder = nn.Embedding(
            num_embeddings=max_length,
            embedding_dim=self.emb_dim,
            weight_attr=paddle.ParamAttr(
                initializer=paddle.nn.initializer.Assign(
                    position_encoding_init(max_length, self.emb_dim))))
コード例 #15
0
 def __init__(self,
              vocab_size,
              hidden_size=768,
              hidden_dropout_prob=0.1,
              max_position_embeddings=512,
              type_vocab_size=16,
              initializer_range=0.02):
     super(GPT2Embeddings, self).__init__()
     self.word_embeddings = nn.Embedding(
         vocab_size,
         hidden_size,
         weight_attr=paddle.ParamAttr(initializer=nn.initializer.Normal(
             mean=0.0, std=initializer_range)))
     self.position_embeddings = nn.Embedding(
         max_position_embeddings,
         hidden_size,
         weight_attr=paddle.ParamAttr(initializer=nn.initializer.Normal(
             mean=0.0, std=initializer_range)))
     self.dropout = nn.Dropout(hidden_dropout_prob)
コード例 #16
0
ファイル: jtnn_vae.py プロジェクト: xueeinstein/PaddleHelix
    def __init__(self, vocab, hidden_size, latent_size, depthT, depthG):
        super(JTNNVAE, self).__init__()
        self.vocab = vocab
        self.hidden_size = hidden_size
        self.latent_size = latent_size = int(latent_size / 2)

        self.jtnn = JTNNEncoder(hidden_size, depthT, nn.Embedding(vocab.size(), hidden_size))
        self.decoder = JTNNDecoder(vocab, hidden_size, latent_size, nn.Embedding(vocab.size(), hidden_size))

        self.jtmpn = JTMPN(hidden_size, depthG)
        self.mpn = MPN(hidden_size, depthG)

        self.A_assm = nn.Linear(latent_size, hidden_size, bias_attr=False)
        self.assm_loss = nn.CrossEntropyLoss(reduction='sum')

        self.T_mean = nn.Linear(hidden_size, latent_size)
        self.T_var = nn.Linear(hidden_size, latent_size)
        self.G_mean = nn.Linear(hidden_size, latent_size)
        self.G_var = nn.Linear(hidden_size, latent_size)
コード例 #17
0
    def __init__(self, vocab_size, emb_dim, bos_id=0):
        super(WordEmbedding, self).__init__()
        self.emb_dim = emb_dim

        self.word_embedding = nn.Embedding(
            num_embeddings=vocab_size,
            embedding_dim=emb_dim,
            padding_idx=bos_id,
            weight_attr=paddle.ParamAttr(
                initializer=nn.initializer.Normal(0., emb_dim**-0.5)))
コード例 #18
0
ファイル: modeling.py プロジェクト: mawenjie8731/PaddleNLP
    def __init__(self,
                 vocab_size,
                 hidden_size=768,
                 hidden_dropout_prob=0.1,
                 max_position_embeddings=512,
                 type_vocab_size=16,
                 use_relative_position=True):
        super(NeZhaEmbeddings, self).__init__()
        self.use_relative_position = use_relative_position

        self.word_embeddings = nn.Embedding(vocab_size, hidden_size)

        if not use_relative_position:
            self.position_embeddings = nn.Embedding(max_position_embeddings,
                                                    hidden_size)

        self.token_type_embeddings = nn.Embedding(type_vocab_size, hidden_size)
        self.layer_norm = nn.LayerNorm(hidden_size)
        self.dropout = nn.Dropout(hidden_dropout_prob)
コード例 #19
0
    def __init__(self, emb_dim, max_length):
        super(PositionalEmbedding, self).__init__()
        self.emb_dim = emb_dim

        self.pos_encoder = nn.Embedding(num_embeddings=max_length,
                                        embedding_dim=self.emb_dim)
        self.pos_encoder.weight.set_value(
            position_encoding_init(max_length,
                                   self.emb_dim,
                                   dtype=paddle.get_default_dtype()))
コード例 #20
0
    def __init__(self):
        super(ModelOriginLinear, self).__init__()
        models = []
        models += [nn.Embedding(num_embeddings=64, embedding_dim=64)]
        models += [nn.Linear(64, 128)]
        models += [nn.LayerNorm(128)]
        models += [nn.Linear(128, 256)]
        models += [nn.Linear(256, 256)]

        self.models = paddle.nn.Sequential(*models)
コード例 #21
0
 def __init__(self, hidden_dim, cut_dist, activation=F.relu):
     super(SpatialInputLayer, self).__init__()
     self.cut_dist = cut_dist
     self.dist_embedding_layer = nn.Embedding(int(cut_dist) - 1,
                                              hidden_dim,
                                              sparse=True)
     self.dist_input_layer = DenseLayer(hidden_dim,
                                        hidden_dim,
                                        activation,
                                        bias=True)
コード例 #22
0
ファイル: model.py プロジェクト: PaddlePaddle/PaddleHelix
    def __init__(self, max_d=100, max_p=1000, n_filter=5, embed_dim=128, p_features=25, d_features=64, d_filter=4, p_filter=8, num_filters=32):
        super(DeepdtaModel,self).__init__()
        # Basic config
        self.max_drug = max_d
        self.max_protein = max_p
        self.embed_dim = embed_dim
        self.BN = nn.BatchNorm(1024)
        self.dropout = nn.Dropout(p=0.1)
        self.relu =nn.ReLU()
        self.p_embedding = nn.Embedding(p_features, embed_dim)
        self.d_embedding = nn.Embedding(d_features, embed_dim)
        # Protein CNN
        self.p_conv = nn.Sequential(
            nn.Conv1D(in_channels=self.embed_dim, out_channels=num_filters, kernel_size=p_filter),
            nn.ReLU(),

            nn.Conv1D(in_channels=num_filters, out_channels=num_filters*2, kernel_size=p_filter),
            nn.ReLU(),

            nn.Conv1D(in_channels=num_filters*2, out_channels=num_filters*3, kernel_size=p_filter),
            nn.ReLU(),
            
            nn.MaxPool1D(kernel_size=1000-3*p_filter+3)
        )
        # Drug CNN
        self.d_conv = nn.Sequential(
            nn.Conv1D(in_channels=self.embed_dim, out_channels=num_filters, kernel_size=d_filter),
            nn.ReLU(),

            nn.Conv1D(in_channels=num_filters, out_channels=num_filters*2, kernel_size=d_filter),
            nn.ReLU(),

            nn.Conv1D(in_channels=num_filters*2, out_channels=num_filters*3, kernel_size=d_filter),
            nn.ReLU(),

            nn.MaxPool1D(kernel_size=100-3*d_filter+3)
        )
        #Decoder
        self.fc1 = nn.Linear(192,1024)
        self.fc2 = nn.Linear(1024,1024)
        self.fc3 = nn.Linear(1024,512)
        self.fc4 = nn.Linear(512,1)
コード例 #23
0
    def __init__(self,
                 vocab_size,
                 emb_dim=128,
                 hidden_size=256,
                 kernel_size=9,
                 n_layers=35,
                 padding_idx=0,
                 dropout_rate=0.1,
                 epsilon=1e-6):
        super(ResnetEncoderModel, self).__init__()

        self.hidden_size = hidden_size
        self.n_layers = n_layers

        self.token_embedding = nn.Embedding(vocab_size,
                                            emb_dim,
                                            padding_idx=padding_idx)
        max_pos_len = 3000
        self.pos_embedding = nn.Embedding(max_pos_len,
                                          emb_dim,
                                          padding_idx=padding_idx)

        self.layer_norm = nn.BatchNorm1D(emb_dim, data_format="NLC")
        self.dropout = nn.Dropout(dropout_rate)

        self.padded_conv = nn.Sequential(
            nn.Conv1D(in_channels=emb_dim, out_channels=hidden_size, kernel_size=kernel_size, padding="same", \
                      data_format="NLC", weight_attr=nn.initializer.KaimingNormal()),
            nn.BatchNorm1D(hidden_size, data_format="NLC"),
            nn.GELU(),
            nn.Dropout(p=dropout_rate)
        )
        self.residual_block_1 = ResnetBasicBlock(inplanes=hidden_size,
                                                 planes=hidden_size,
                                                 kernel_size=kernel_size,
                                                 dropout_rate=dropout_rate)
        self.residual_block_n = nn.Sequential()
        for i in range(1, n_layers):
            self.residual_block_n.add_sublayer("residual_block_%d" % i, \
                ResnetBasicBlock(inplanes=hidden_size, planes=hidden_size, kernel_size=kernel_size, dilation=2, dropout_rate=dropout_rate))

        self.apply(self.init_weights)
コード例 #24
0
ファイル: model.py プロジェクト: wbj0110/models
    def __init__(self, vocab_size, type_size, max_position_seq_len, num_layers,
                 n_head, hidden_size, attn_dropout, act_dropout):
        super(Plato2Encoder, self).__init__()

        self.n_head = n_head

        self.word_embedding_layer = nn.Embedding(vocab_size, hidden_size)
        self.sent_embedding_layer = nn.Embedding(type_size, hidden_size)
        self.pos_embedding_layer = nn.Embedding(max_position_seq_len,
                                                hidden_size)

        self.encoder_layers = []
        for i in range(num_layers):
            encoder_layer = Plato2EncoderLayer(n_head, hidden_size,
                                               attn_dropout, act_dropout)
            self.encoder_layers.append(encoder_layer)
            self.add_sublayer('layers.' + str(i), encoder_layer)
        self.post_encoder_layer_norm = nn.LayerNorm(hidden_size)

        self.dropout_layer = nn.Dropout(act_dropout)
コード例 #25
0
    def __init__(self,
                 feat,
                 n_feats,
                 n_words,
                 pad_index=0,
                 feat_pad_index=0,
                 n_char_embed=50,
                 n_feat_embed=60,
                 n_lstm_char_embed=100,
                 n_embed=300,
                 embed_dropout=0.33,
                 n_lstm_hidden=300,
                 n_lstm_layers=3,
                 lstm_dropout=0.33):
        super(LSTMEncoder, self).__init__()
        self.pad_index = pad_index

        if feat == "char":
            self.feat_embed = CharLSTMEncoder(
                n_chars=n_feats,
                n_embed=n_char_embed,
                n_out=n_lstm_char_embed,
                pad_index=feat_pad_index,
            )
            feat_embed_size = n_lstm_char_embed
        else:
            self.feat_embed = nn.Embedding(num_embeddings=n_feats,
                                           embedding_dim=n_feat_embed)
            feat_embed_size = n_feat_embed

        self.word_embed = nn.Embedding(num_embeddings=n_words,
                                       embedding_dim=n_embed)
        self.embed_dropout = IndependentDropout(p=embed_dropout)

        self.lstm = nn.LSTM(input_size=n_embed + feat_embed_size,
                            hidden_size=n_lstm_hidden,
                            num_layers=n_lstm_layers,
                            dropout=lstm_dropout,
                            direction="bidirectional")
        self.lstm_dropout = SharedDropout(p=lstm_dropout)
        self.mlp_input_size = n_lstm_hidden * 2
コード例 #26
0
ファイル: model.py プロジェクト: weihua916/PGL
    def __init__(self, num_nodes, embed_size=16, neg_num=5, sparse=False):
        super(SkipGramModel, self).__init__()

        self.num_nodes = num_nodes
        self.neg_num = neg_num

        embed_init = nn.initializer.Uniform(
            low=-1. / math.sqrt(embed_size), high=1. / math.sqrt(embed_size))
        emb_attr = paddle.ParamAttr(name="node_embedding")
        self.emb = nn.Embedding(
            num_nodes, embed_size, sparse=sparse, weight_attr=emb_attr)
        self.loss = paddle.nn.BCEWithLogitsLoss(reduction="none")
コード例 #27
0
    def __init__(self,
                 hidden_size,
                 vocab_size,
                 class_num=2,
                 num_steps=128,
                 num_layers=1,
                 init_scale=0.1,
                 dropout=None):
        # 参数含义如下:
        # 1.hidden_size,表示embedding-size,hidden和cell向量的维度
        # 2.vocab_size,模型可以考虑的词表大小
        # 3.class_num,情感类型个数,可以是2分类,也可以是多分类
        # 4.num_steps,表示这个情感分析模型最大可以考虑的句子长度
        # 5.num_layers,表示网络的层数
        # 6.init_scale,表示网络内部的参数的初始化范围
        # 长短时记忆网络内部用了很多Tanh,Sigmoid等激活函数,这些函数对数值精度非常敏感,
        # 因此我们一般只使用比较小的初始化范围,以保证效果

        super(SentimentClassifier, self).__init__()
        self.hidden_size = hidden_size
        self.vocab_size = vocab_size
        self.class_num = class_num
        self.init_scale = init_scale
        self.num_layers = num_layers
        self.num_steps = num_steps
        self.dropout = dropout

        # 声明一个embedding层,用来把句子中的每个词转换为向量
        self.embedding = nn.Embedding(
            num_embeddings=vocab_size,
            embedding_dim=hidden_size,
            sparse=False,
            weight_attr=paddle.ParamAttr(
                initializer=paddle.nn.initializer.Uniform(low=-init_scale,
                                                          high=init_scale)))

        # 声明一个LSTM模型,用来把每个句子抽象成向量
        self.simple_lstm_rnn = nn.LSTM(input_size=hidden_size,
                                       hidden_size=hidden_size,
                                       num_layers=num_layers)

        # 在得到一个句子的向量表示后,需要根据这个向量表示对这个句子进行分类
        # 一般来说,可以把这个句子的向量表示乘以一个大小为[self.hidden_size, self.class_num]的W参数,
        # 并加上一个大小为[self.class_num]的b参数,从而达到把句子向量映射到分类结果的目的

        # 我们需要声明最终在使用句子向量映射到具体情感类别过程中所需要使用的参数
        # 这个参数的大小一般是[self.hidden_size, self.class_num]
        self.cls_fc = nn.Linear(in_features=self.hidden_size,
                                out_features=self.class_num,
                                weight_attr=None,
                                bias_attr=None)
        self.dropout_layer = nn.Dropout(p=self.dropout,
                                        mode='upscale_in_train')
コード例 #28
0
    def __init__(self,
                 word_emb_dim,
                 hidden_size,
                 vocab_size,
                 num_labels,
                 emb_lr=2.0,
                 crf_lr=0.2,
                 with_start_stop_tag=True):
        super(BiGruCrf, self).__init__()
        self.word_emb_dim = word_emb_dim
        self.vocab_size = vocab_size
        self.num_labels = num_labels
        self.hidden_size = hidden_size
        self.emb_lr = emb_lr
        self.crf_lr = crf_lr
        self.init_bound = 0.1

        self.word_embedding = nn.Embedding(
            num_embeddings=self.vocab_size,
            embedding_dim=self.word_emb_dim,
            weight_attr=paddle.ParamAttr(learning_rate=self.emb_lr,
                                         initializer=nn.initializer.Uniform(
                                             low=-self.init_bound,
                                             high=self.init_bound)))

        self.gru = nn.GRU(
            input_size=self.word_emb_dim,
            hidden_size=self.hidden_size,
            num_layers=2,
            direction='bidirectional',
            weight_ih_attr=paddle.ParamAttr(
                initializer=nn.initializer.Uniform(low=-self.init_bound,
                                                   high=self.init_bound),
                regularizer=paddle.regularizer.L2Decay(coeff=1e-4)),
            weight_hh_attr=paddle.ParamAttr(
                initializer=nn.initializer.Uniform(low=-self.init_bound,
                                                   high=self.init_bound),
                regularizer=paddle.regularizer.L2Decay(coeff=1e-4)))

        self.fc = nn.Linear(
            in_features=self.hidden_size * 2,
            out_features=self.num_labels + 2 \
                if with_start_stop_tag else self.num_labels,
            weight_attr=paddle.ParamAttr(
                initializer=nn.initializer.Uniform(
                    low=-self.init_bound, high=self.init_bound),
                regularizer=paddle.regularizer.L2Decay(coeff=1e-4)))

        self.crf = LinearChainCrf(self.num_labels, self.crf_lr,
                                  with_start_stop_tag)
        self.crf_loss = LinearChainCrfLoss(self.crf)
        self.viterbi_decoder = ViterbiDecoder(self.crf.transitions,
                                              with_start_stop_tag)
コード例 #29
0
ファイル: modeling.py プロジェクト: tianxin1860/PaddleNLP
    def __init__(self,
                 vocab_size,
                 emb_size=128,
                 hidden_dropout_prob=0.1,
                 max_position_embeddings=512,
                 type_vocab_size=2,
                 pad_token_id=0,
                 rel_pos_size=None,
                 num_attention_heads=None):
        super(ErnieGramEmbeddings, self).__init__()

        self.word_embeddings = nn.Embedding(
            vocab_size, emb_size, padding_idx=pad_token_id)
        self.position_embeddings = nn.Embedding(max_position_embeddings,
                                                emb_size)
        self.token_type_embeddings = nn.Embedding(type_vocab_size, emb_size)
        if rel_pos_size and num_attention_heads:
            self.rel_pos_embeddings = nn.Embedding(rel_pos_size,
                                                   num_attention_heads)
        self.layer_norm = nn.LayerNorm(emb_size)
        self.dropout = nn.Dropout(hidden_dropout_prob)
コード例 #30
0
ファイル: model.py プロジェクト: PaddlePaddle/Contrib
    def __init_weight(self):
        self.num_users = self.dataset.n_users
        self.num_items = self.dataset.m_items
        self.latent_dim = self.config['latent_dim_rec']
        self.n_layers = self.config['lightGCN_n_layers']
        self.gcn = NGCFConv(self.latent_dim, self.latent_dim, self.n_layers)
        weight_attr1 = paddle.framework.ParamAttr(
            initializer=paddle.nn.initializer.XavierUniform())
        weight_attr2 = paddle.framework.ParamAttr(
            initializer=paddle.nn.initializer.XavierUniform())
        self.embedding_user = nn.Embedding(num_embeddings=self.num_users,
                                           embedding_dim=self.latent_dim,
                                           weight_attr=weight_attr1)
        self.embedding_item = nn.Embedding(num_embeddings=self.num_items,
                                           embedding_dim=self.latent_dim,
                                           weight_attr=weight_attr2)
        self.f = nn.Sigmoid()
        num_nodes = self.dataset.n_users + self.dataset.m_items
        edges = paddle.to_tensor(self.dataset.trainEdge, dtype='int64')

        self.Graph = pgl.Graph(num_nodes=num_nodes, edges=edges)
        print(f"lgn is already to go(dropout:{self.config['dropout']})")