コード例 #1
0
ファイル: lstm.py プロジェクト: wbj0110/models
 def predict(self, left, right):
     """
     Forward network
     """
     # embedding layer
     emb_layer = layers.EmbeddingLayer(self.dict_size, self.emb_dim, "emb")
     left_emb = emb_layer.ops(left)
     right_emb = emb_layer.ops(right)
     # Presentation context
     lstm_layer = layers.DynamicLSTMLayer(self.lstm_dim, "lstm")
     left_lstm = lstm_layer.ops(left_emb)
     right_lstm = lstm_layer.ops(right_emb)
     last_layer = layers.SequenceLastStepLayer()
     left_last = last_layer.ops(left_lstm)
     right_last = last_layer.ops(right_lstm)
     # matching layer
     if self.task_mode == "pairwise":
         fc_layer = layers.FCLayer(self.hidden_dim, None, "fc")
         left_fc = fc_layer.ops(left_last)
         right_fc = fc_layer.ops(right_last)
         cos_sim_layer = layers.CosSimLayer()
         pred = cos_sim_layer.ops(left_fc, right_fc)
         return left_fc, pred
     else:
         concat_layer = layers.ConcatLayer(1)
         concat = concat_layer.ops([left_last, right_last])
         fc_layer = layers.FCLayer(self.hidden_dim, None, "fc")
         concat_fc = fc_layer.ops(concat)
         softmax_layer = layers.FCLayer(2, "softmax", "cos_sim")
         pred = softmax_layer.ops(concat_fc)
         return left_last, pred
コード例 #2
0
ファイル: bow.py プロジェクト: zhousanfu/paddle-demo
    def forward(self, left, right):
        """
        Forward network
        """

        # embedding layer
        left_emb = self.emb_layer(left)
        right_emb = self.emb_layer(right)
        left_emb = fluid.layers.reshape(left_emb,
                                        shape=[-1, self.seq_len, self.bow_dim])
        right_emb = fluid.layers.reshape(
            right_emb, shape=[-1, self.seq_len, self.bow_dim])

        bow_left = fluid.layers.reduce_sum(left_emb, dim=1)
        bow_right = fluid.layers.reduce_sum(right_emb, dim=1)
        softsign_layer = layers.SoftsignLayer()
        left_soft = softsign_layer.ops(bow_left)
        right_soft = softsign_layer.ops(bow_right)

        # matching layer
        if self.task_mode == "pairwise":
            left_bow = self.bow_layer(left_soft)
            right_bow = self.bow_layer(right_soft)
            cos_sim_layer = layers.CosSimLayer()
            pred = cos_sim_layer.ops(left_bow, right_bow)
            return left_bow, pred
        else:
            concat_layer = layers.ConcatLayer(1)
            concat = concat_layer.ops([left_soft, right_soft])
            concat_fc = self.bow_layer_po(concat)
            pred = self.softmax_layer(concat_fc)
            return left_soft, pred
コード例 #3
0
 def predict(self, left, right):
     """
     Forward network
     """
     # embedding layer
     emb_layer = layers.EmbeddingLayer(self.dict_size, self.emb_dim, "emb")
     left_emb = emb_layer.ops(left)
     right_emb = emb_layer.ops(right)
     # Presentation context
     cnn_layer = layers.SequenceConvPoolLayer(self.filter_size,
                                              self.num_filters, "conv")
     left_cnn = cnn_layer.ops(left_emb)
     right_cnn = cnn_layer.ops(right_emb)
     # matching layer
     if self.task_mode == "pairwise":
         relu_layer = layers.FCLayer(self.hidden_dim, "relu", "relu")
         left_relu = relu_layer.ops(left_cnn)
         right_relu = relu_layer.ops(right_cnn)
         cos_sim_layer = layers.CosSimLayer()
         pred = cos_sim_layer.ops(left_relu, right_relu)
         return left_relu, pred
     else:
         concat_layer = layers.ConcatLayer(1)
         concat = concat_layer.ops([left_cnn, right_cnn])
         relu_layer = layers.FCLayer(self.hidden_dim, "relu", "relu")
         concat_fc = relu_layer.ops(concat)
         softmax_layer = layers.FCLayer(2, "softmax", "cos_sim")
         pred = softmax_layer.ops(concat_fc)
         return left_cnn, pred
コード例 #4
0
ファイル: gru.py プロジェクト: sunqiang25/models-develop
 def predict(self, left, right):
     """
     Forward network
     """
     # embedding layer
     emb_layer = layers.EmbeddingLayer(self.dict_size, self.emb_dim, "emb")
     left_emb = emb_layer.ops(left)
     right_emb = emb_layer.ops(right)
     # Presentation context
     gru_layer = layers.DynamicGRULayer(self.gru_dim, "gru")
     left_gru = gru_layer.ops(left_emb)
     right_gru = gru_layer.ops(right_emb)
     last_layer = layers.SequenceLastStepLayer()
     left_last = last_layer.ops(left_gru)
     right_last = last_layer.ops(right_gru)
     # matching layer
     if self.task_mode == "pairwise":
         relu_layer = layers.FCLayer(self.hidden_dim, "relu", "relu")
         left_relu = relu_layer.ops(left_last)
         right_relu = relu_layer.ops(right_last)
         cos_sim_layer = layers.CosSimLayer()
         pred = cos_sim_layer.ops(left_relu, right_relu)
         return left_relu, pred
     else:
         concat_layer = layers.ConcatLayer(1)
         concat = concat_layer.ops([left_last, right_last])
         relu_layer = layers.FCLayer(self.hidden_dim, "relu", "relu")
         concat_fc = relu_layer.ops(concat)
         softmax_layer = layers.FCLayer(2, "softmax", "cos_sim")
         pred = softmax_layer.ops(concat_fc)
         return left_last, pred
コード例 #5
0
 def predict(self, left, right):
     """
     Forward network
     """
     # embedding layer
     emb_layer = layers.EmbeddingLayer(self.dict_size, self.emb_dim, "emb")
     left_emb = emb_layer.ops(left)
     right_emb = emb_layer.ops(right)
     # Presentation context
     pool_layer = layers.SequencePoolLayer("sum")
     left_pool = pool_layer.ops(left_emb)
     right_pool = pool_layer.ops(right_emb)
     softsign_layer = layers.SoftsignLayer()
     left_soft = softsign_layer.ops(left_pool)
     right_soft = softsign_layer.ops(right_pool)
     # matching layer
     if self.task_mode == "pairwise":
         bow_layer = layers.FCLayer(self.bow_dim, "relu", "fc")
         print(left.shape)
         left_bow = bow_layer.ops(left_soft)
         print(left_bow.shape)
         right_bow = bow_layer.ops(right_soft)
         cos_sim_layer = layers.CosSimLayer()
         pred = cos_sim_layer.ops(left_bow, right_bow)
         return left_bow, pred
     else:
         concat_layer = layers.ConcatLayer(1)
         concat = concat_layer.ops([left_soft, right_soft])
         bow_layer = layers.FCLayer(self.bow_dim, "relu", "fc")
         concat_fc = bow_layer.ops(concat)
         softmax_layer = layers.FCLayer(2, "softmax", "cos_sim")
         pred = softmax_layer.ops(concat_fc)
         return left_soft, pred
コード例 #6
0
    def forward(self, left, right):
        """
        Forward network
        """
        # embedding layer 
       
        left_emb = self.emb_layer(left)
        right_emb = self.emb_layer(right)
        # Presentation context

        left_emb = fluid.layers.reshape(
            left_emb, shape=[-1, self.channels, self.seq_len, self.hidden_dim])
        right_emb = fluid.layers.reshape(
            right_emb, shape=[-1, self.channels, self.seq_len, self.hidden_dim])
    
        left_cnn = self.cnn_layer(left_emb)
        right_cnn = self.cnn_layer(right_emb)
        # matching layer
        if self.task_mode == "pairwise":
            left_fc = self.fc_layer(left_cnn)
            right_fc = self.fc_layer(right_cnn)
            cos_sim_layer = layers.CosSimLayer()
            pred = cos_sim_layer.ops(left_fc, right_fc)
            return left_fc, pred
        else:
            concat_layer = layers.ConcatLayer(1)
            concat = concat_layer.ops([left_cnn, right_cnn])
            concat_fc = self.fc_layer(concat)
            pred = self.softmax_layer(concat_fc)
            return left_cnn, pred
コード例 #7
0
ファイル: lstm.py プロジェクト: zhong110020/models
    def forward(self, left, right):
        """
        Forward network
        """
        # embedding layer
        left_emb = self.emb_layer(left)
        right_emb = self.emb_layer(right)
        # Presentation context
        left_proj = self.proj_layer(left_emb)
        right_proj = self.proj_layer(right_emb)
        left_lstm, _ = self.lstm_layer(left_proj)
        right_lstm, _ = self.lstm_layer(right_proj)
      
        left_emb = fluid.layers.reduce_max(left_lstm, dim=1)
        right_emb = fluid.layers.reduce_max(right_lstm, dim=1)
        left_emb = fluid.layers.reshape(
            left_emb, shape=[-1, self.seq_len, self.hidden_dim])
        right_emb = fluid.layers.reshape(
            right_emb, shape=[-1, self.seq_len, self.hidden_dim])
        left_emb = fluid.layers.reduce_sum(left_emb, dim=1)
        right_emb = fluid.layers.reduce_sum(right_emb, dim=1)

        left_last = fluid.layers.tanh(left_emb)
        right_last = fluid.layers.tanh(right_emb)

    
        # matching layer
        if self.task_mode == "pairwise":
            left_fc = self.fc_layer(left_last)
            right_fc = self.fc_layer(right_last)
            cos_sim_layer = layers.CosSimLayer()
            pred = cos_sim_layer.ops(left_fc, right_fc)
            return left_fc, pred
        else:
            concat_layer = layers.ConcatLayer(1)
            concat = concat_layer.ops([left_last, right_last])
            concat_fc = self.fc_layer(concat)
            pred = self.softmax_layer(concat_fc)
            return left_last, pred
コード例 #8
0
ファイル: gru.py プロジェクト: zhong110020/models
    def forward(self, left, right):
        """
        Forward network
        """
        # embedding layer
        left_emb = self.emb_layer(left)
        right_emb = self.emb_layer(right)
        # Presentation context
        left_emb = self.proj_layer(left_emb)
        right_emb = self.proj_layer(right_emb)

        h_0 = np.zeros((left_emb.shape[0], self.hidden_dim), dtype="float32")
        h_0 = to_variable(h_0)
        left_gru = self.gru_layer(left_emb, h_0=h_0)
        right_gru = self.gru_layer(right_emb, h_0=h_0)
        left_emb = fluid.layers.reduce_max(left_gru, dim=1)
        right_emb = fluid.layers.reduce_max(right_gru, dim=1)
        left_emb = fluid.layers.reshape(
            left_emb, shape=[-1, self.seq_len, self.hidden_dim])
        right_emb = fluid.layers.reshape(
            right_emb, shape=[-1, self.seq_len, self.hidden_dim])
        left_emb = fluid.layers.reduce_sum(left_emb, dim=1)
        right_emb = fluid.layers.reduce_sum(right_emb, dim=1)

        left_last = fluid.layers.tanh(left_emb)
        right_last = fluid.layers.tanh(right_emb)

        if self.task_mode == "pairwise":
            left_fc = self.fc_layer(left_last)
            right_fc = self.fc_layer(right_last)
            cos_sim_layer = layers.CosSimLayer()
            pred = cos_sim_layer.ops(left_fc, right_fc)
            return left_fc, pred
        else:
            concat_layer = layers.ConcatLayer(1)
            concat = concat_layer.ops([left_last, right_last])
            concat_fc = self.fc_layer(concat)
            pred = self.softmax_layer(concat_fc)
            return left_last, pred