zoukankan      html  css  js  c++  java
  • pytorch 文本情感分类和命名实体识别NER中LSTM输出的区别

    文本情感分类:

    文本情感分类采用LSTM的最后一层输出

    比如双层的LSTM,使用正向的最后一层和反向的最后一层进行拼接

        def forward(self,input):
            '''
            :param input: 
            :return: 
            '''
            input_embeded = self.embedding(input)    #[batch_size,seq_len,200]
    
            output,(h_n,c_n) = self.lstm(input_embeded)
            out = torch.cat(h_n[-1,:,:],h_n[-2,:,:],dim=-1) #拼接正向最后一个输出和反向最后一个输出
    
            #进行全连接
            out_fc1 = self.fc1(out)
            #进行relu
            out_fc1_relu = F.relu(out_fc1)
            #全连接
            out = self.fc2(out_fc1_relu)
            return  F.log_softmax(out,dim=-1)
    

      命名实体识别NER:

    实体识别需要LSTM的output的全部输出。

    如果有CRF层,则将输出全部给CRF层。

        def forward(self, words,emdlabel,speechtag, labels, seq_lengths):
    
            output, _ = self.bilstm(words,emdlabel,speechtag, seq_lengths)
            output = self.logistic(output)
            pre_score = self.crf(output)
            label_score = self.crf._score_sentence(output, labels)
            return (pre_score - label_score).mean(), None
    
        def predict(self, word, emdlabel,speechtag,seq_lengths):
            lstm_out, _ = self.bilstm(word, emdlabel,speechtag, seq_lengths)
            out = self.logistic(lstm_out)
            return self.crf.viterbi_decode(out)
    

      

    多思考也是一种努力,做出正确的分析和选择,因为我们的时间和精力都有限,所以把时间花在更有价值的地方。
  • 相关阅读:
    第一次结对编程作业
    第一次个人编程作业
    获取file中字段,写入到TXT文件中
    通过file中的字段查询MySQL内容
    MySQL常用语句
    MySQL乱码问题
    脚本数据编码格式转换
    mysql 常用命令操作
    thinkphp项目 Class 'finfo' not found
    POJ3255--次短路
  • 原文地址:https://www.cnblogs.com/LiuXinyu12378/p/12324984.html
Copyright © 2011-2022 走看看