【NLP】文本分类TextRNN

一、理论

二、代码

TextRNN(tf2.0实现,主要使用其中的keras包)

run.py
model = MyModel(config)
model.build(input_shape=(None, sentence_len)) # 句子长度

代码中具体参数可参考:传送门

model.py
from tensorflow.keras.layers import Dense, Embedding, LSTM, Dropout, Flatten**

### model类
class MyModel(tf.keras.Model):
    def __init__(self, config):
        super(MyModel, self).__init__()
        self.config = config
        self.embedding = Embedding(self.vocab_size, self.embedding_dim, 
                         input_length=self.sentence_len, 
                         weights=[self.embedding_pretrained],trainable=False)
        
        ### LSTM层。
        # units:LSTM隐藏层
        # return_sequences:Ture返回全部step的hidden state值,False返回最后一个,
          !当True时增加Flatten层,False去掉Flatten层。!
        self.RNN = LSTM(units=self.hidden_size,return_sequences=True,activation='relu',)
        
        ### BiLSTM 双向LSTM层。
        #self.biRNN = Bidirectional(LSTM(units=self.hidden_size,return_sequences=True,
                             activation='relu',))
        ###
        
        ### 多层BiLSTM层
        #self.biRNN = Bidirectional(LSTM(units=self.hidden_size,return_sequences=True
                             activation='relu',))
        #self.dropout = Dropout(self.dropout)
        #self.biRNN2 = Bidirectional(LSTM(units=self.hidden_size,return_sequences=True
                             activation='relu',))
        #self.dropout = Dropout(self.dropout)
        ###
        
        self.dropout = Dropout(self.dropout)
        self.flatten = Flatten()
        self.out_put = Dense(units=self..num_classes, activation='softmax')

def build(self, input_shape):
  super(MyModel, self).build(input_shape)    

def call(self, x):
    x = self.embedding(x)
    x = self.RNN(x)
    x = self.dropout(x)
    x = self.flatten(x)
    x = self.out_put(x)
    return x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值