TextRCNN-文本分類系列(三)

什麼是TextRCNN

如下圖所示,就是TEXTRCNN的架構。
簡而言之就是在詞嵌入的基礎上加上了上下文環境作爲新的詞嵌入表示。
而左側和右側的context是通過前向和後向兩層RNN的中間層輸出得到的。
這些中間層的輸出和原始的詞嵌入拼接形成新的詞嵌入y。然後送入池化層。

給人一種詞嵌入的感覺,結合上下文的詞嵌入的感覺。

本意是通過RNN取代TextCNN的特徵提取,因爲卷積的作用是提取特徵,這裏用RNN的中間層輸出來表示所謂的特徵,所以叫做RCNN。
看下錶中題目叫做Recurrent =>(convolutional)
在這裏插入圖片描述

tf 實現

    def design_model(self,hiden_size=32,with_fc=False):
        input_layer=L.Input(shape=(None,),name='feature_input')
        w=L.Embedding(input_dim=self.emb.wordCount,output_dim=self.emb.wordDim,input_length=self.emb.sequenceLength)(input_layer)
        x=w
        lx,rx=L.Bidirectional(L.LSTM(hiden_size,dropout=0.4,return_sequences=True),merge_mode=None)(x)
        x=L.concatenate([lx,w,rx])
        x=L.Dense(x.shape[-1],activation="tanh")(x)
        #x=L.Conv1D(filters=1,kernel_size=3,activation="relu")(x)
        x=L.GlobalMaxPool1D()(x)
        
        
        if with_fc:
            x=L.Dense(hiden_size,activation='relu')(x)
        
        output_layer=L.Dense(2,activation='softmax')(x)
        model=K.models.Model(inputs=[input_layer],outputs=[output_layer],name=self.name)
        self.model=model
        model.summary()
        return model
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章