如何设定一个N层BiLSTM的Layer,LSTM初始化

前言

目前人工智能已经融入到我们的生活,大数据模型也是层出不穷。那我们就学习一些简单的模型设置。

干货

代码

# This is the original BiLSTM layer setup,
def build_bilstm(input_layer,last_sequences = False):

    lstm = Bidirectional(LSTM(18,return_sequences = True,dropout=0.1))(input_layer)
    lstm = LayerNormalization()(lstm)

    lstm = Bidirectional(LSTM(36,return_sequences = True,dropout=0.1))(lstm)
    lstm = LayerNormalization()(lstm)

    lstm = Bidirectional(LSTM(144,return_sequences = last_sequences,dropout=0.1))(lstm)
    lstm = LayerNormalization()(lstm)
    
    return lstm
    

解释

  1. 这里面input_layer需要自己去设计,如何切数据请根据自己的情况来设置;
    • 你也可以参考我上一个CNN帖子,把它俩串起来;
  2. Bidirectional()是双向函数,BiLSTM的Bi,举例:Bicycle就是自行车两轮;
    • 里面再套个LSTM()就是BiLSTM了,似乎不太难理解哈;
    • 如果你不想双相,就把Bidirectional()函数去掉,改为单向传统LSTM;
  3. 参数return_sequences =,中间层的请设置为True,最后一层是False,表示收尾;
  4. 由于我们创建了这么多layer数据,建议随机剔除一些来避免过拟合:
    • LSTM(x)参数越来越大,建议参数dropout = 【rate】 逐渐调大,或者像我一样,10%损失,根据自己的模型来调整,个人不建议调太大;
    • 建议LSTM(x)参数以倍数形式增长,和CNN帖子相似;
  5. 建议把每层的数据进行标准化LayerNormalization()
  6. 还想加啥函数请自行调整,DL这玩意儿每个人有每个人的理解和需求;
  7. 需要导入什么库请自己搜吧,我也懒得列出来了。XD

结语

希望大家有所收获,有不明白的欢迎大家留言。

12-13 08:15