예제 #1
0
 def ops(self):
     """
     operation
     """
     gru = DynamicGRU(size=self.gru_dim,
                      param_attr=attr.ParamAttr(name="%s.w" % self.name),
                      bias_attr=attr.ParamAttr(name="%s.b" % self.name))
     return gru
예제 #2
0
 def ops(self):
     """
     operation
     """
     fc = FC(size=self.fc_dim,
             param_attr=attr.ParamAttr(name="%s.w" % self.name),
             bias_attr=attr.ParamAttr(name="%s.b" % self.name),
             act=self.act)
     return fc
예제 #3
0
 def ops(self, input):
     """
     operation
     """
     proj = fluid.layers.fc(input=input, size=self.gru_dim * 3)
     gru = fluid.layers.dynamic_gru(
         input=proj,
         size=self.gru_dim,
         param_attr=attr.ParamAttr(name="%s.w" % self.name),
         bias_attr=attr.ParamAttr(name="%s.b" % self.name))
     return gru
예제 #4
0
 def ops(self, input):
     """
     operation
     """
     proj = fluid.layers.fc(input=input, size=self.lstm_dim * 4)
     lstm, _ = fluid.layers.dynamic_lstm(
         input=proj,
         size=self.lstm_dim * 4,
         param_attr=attr.ParamAttr(name="%s.w" % self.name),
         bias_attr=attr.ParamAttr(name="%s.b" % self.name))
     return lstm
예제 #5
0
 def ops(self, input):
     """
     operation
     """
     fc = fluid.layers.fc(input=input,
                          size=self.fc_dim,
                          param_attr=attr.ParamAttr(name="%s.w" %
                                                    self.name),
                          bias_attr=attr.ParamAttr(name="%s.b" % self.name),
                          act=self.act,
                          name=self.name)
     return fc
예제 #6
0
파일: matching.py 프로젝트: wuhuaha/beike
def lstm(left_emb, right_emb, hid_dim=128):
    """
    LSTM network.
    """
    left_proj = fluid.layers.fc(
        input=left_emb,
        size=hid_dim * 4,
        param_attr=attr.ParamAttr(name="matching_lstm_fc.w"),
        bias_attr=attr.ParamAttr(name="matching_lstm_fc.b"))
    right_proj = fluid.layers.fc(
        input=right_emb,
        size=hid_dim * 4,
        param_attr=attr.ParamAttr(name="matching_lstm_fc.w"),
        bias_attr=attr.ParamAttr(name="matching_lstm_fc.b"))
    left_lstm, cell = fluid.layers.dynamic_lstm(
        input=left_proj,
        size=hid_dim * 4,
        param_attr=attr.ParamAttr(name="matching_lstm.w"),
        bias_attr=attr.ParamAttr(name="matching_lstm.b"),
        is_reverse=False)
    right_lstm, _ = fluid.layers.dynamic_lstm(
        input=right_proj,
        size=hid_dim * 4,
        param_attr=attr.ParamAttr(name="matching_lstm.w"),
        bias_attr=attr.ParamAttr(name="matching_lstm.b"),
        is_reverse=False)
    left_last = fluid.layers.sequence_last_step(left_lstm)
    right_last = fluid.layers.sequence_last_step(right_lstm)
    return left_last, right_last
예제 #7
0
파일: matching.py 프로젝트: wuhuaha/beike
def gru(left_emb, right_emb, hid_dim=128):
    """
    GRU network.
    """
    left_proj = fluid.layers.fc(
        input=left_emb,
        size=hid_dim * 3,
        param_attr=attr.ParamAttr(name="matching_gru_fc.w"),
        bias_attr=attr.ParamAttr(name="matching_gru_fc.b"))
    right_proj = fluid.layers.fc(
        input=right_emb,
        size=hid_dim * 3,
        param_attr=attr.ParamAttr(name="matching_gru_fc.w"),
        bias_attr=attr.ParamAttr(name="matching_gru_fc.b"))
    left_gru = fluid.layers.dynamic_gru(
        input=left_proj,
        size=hid_dim,
        param_attr=attr.ParamAttr(name="matching_gru.w"),
        bias_attr=attr.ParamAttr(name="matching_gru.b"))
    right_gru = fluid.layers.dynamic_gru(
        input=right_proj,
        size=hid_dim,
        param_attr=attr.ParamAttr(name="matching_gru.w"),
        bias_attr=attr.ParamAttr(name="matching_gru.b"))
    left_last = fluid.layers.sequence_last_step(left_gru)
    right_last = fluid.layers.sequence_last_step(right_gru)
    return left_last, right_last
예제 #8
0
    def ops(self, input):
        """
        :param input:
        """
        if self.init_w2v:
            #weight_data = EmbeddingLayer.v2np(self)
            w_param_attrs = fluid.ParamAttr(
                name=self.name,
                learning_rate=1,
                initializer=fluid.initializer.NumpyArrayInitializer(
                    self.weight_data),
                trainable=True)
            emb = fluid.layers.embedding(input=input,
                                         size=[self.dict_dim, self.emb_dim],
                                         is_sparse=False,
                                         param_attr=w_param_attrs,
                                         dtype='float32')
        else:
            emb = fluid.layers.embedding(
                input=input,
                size=[self.dict_dim, self.emb_dim],
                is_sparse=False,
                param_attr=attr.ParamAttr(name=self.name),
                dtype='float32')

        return emb
예제 #9
0
 def ops(self, input):
     """
     operation
     """
     emb = fluid.layers.embedding(input=input,
                                  size=[self.dict_size, self.emb_dim],
                                  is_sparse=True,
                                  param_attr=attr.ParamAttr(name=self.name))
     return emb
예제 #10
0
파일: matching.py 프로젝트: wuhuaha/beike
def cnn(left_emb, right_emb, hid_dim=128, filter_size=3, num_filters=256):
    """
    CNN network.
    """
    # cnn layer
    left_cnn = fluid.nets.sequence_conv_pool(
        input=left_emb,
        num_filters=num_filters,
        filter_size=filter_size,
        param_attr=attr.ParamAttr(name="matching_cnn"),
        act="relu",
        pool_type="max")
    right_cnn = fluid.nets.sequence_conv_pool(
        input=right_emb,
        num_filters=num_filters,
        filter_size=filter_size,
        param_attr=attr.ParamAttr(name="matching_cnn"),
        act="relu",
        pool_type="max")
    return left_cnn, right_cnn
예제 #11
0
 def ops(self, input):
     """
     operation
     """
     conv = fluid.nets.sequence_conv_pool(
         input=input,
         filter_size=self.filter_size,
         num_filters=self.num_filters,
         param_attr=attr.ParamAttr(name=self.name),
         act="relu")
     return conv
예제 #12
0
    def ops(self):
        """
        operation
        """
        emb = Embedding(size=[self.dict_size, self.emb_dim],
                        is_sparse=True,
                        padding_idx=self.padding_idx,
                        param_attr=attr.ParamAttr(
                            name=self.name,
                            initializer=fluid.initializer.Xavier()))

        return emb
예제 #13
0
    def ops(self):
        """
        operation
        """
        # TODO(huihuangzheng): The original code set the is_sparse=True, but it
        # causes crush in dy2stat. Set it to True after fixing it.
        emb = Embedding(size=[self.dict_size, self.emb_dim],
                        is_sparse=True,
                        padding_idx=self.padding_idx,
                        param_attr=attr.ParamAttr(
                            name=self.name,
                            initializer=fluid.initializer.Xavier()))

        return emb