zoukankan      html  css  js  c++  java
  • 【509】NLP实战系列(九)—— 结合 CNN 和 RNN 来处理长序列

      一维 CNN 分别处理每个输入序列段,所以它对时间步的顺序不敏感(这里所说的顺序的范围要大于局部尺度,即大于卷积窗口的大小),这一点与 RNN 不同。

      要想结合 CNN 的速度和轻量与 RNN 的顺序敏感性,一种方法是在 RNN 前面使用一维 CNN 作为预处理步骤。对于那些非常长,以至于 RNN 无法处理的序列(比如包含上千个时间步的序列),这种方法尤为有用。CNN 可以将长的输入序列转换为高级特征组成的更短序列(下采样)。然后,提取的特征组成的这些序列成为网络中的 RNN 的输入。

    举例

    from keras.models import Sequential
    from keras import layers
    from keras.optimizers import RMSprop
    
    model = Sequential()
    model.add(layers.Embedding(max_features, 128, input_length=max_len))
    model.add(layers.Conv1D(32, 7, activation='relu'))
    model.add(layers.MaxPooling1D(5))
    model.add(layers.Conv1D(32, 7, activation='relu'))
    model.add(layers.LSTM(32))
    model.add(layers.Dense(1))
    
    model.summary()
    
    model.compile(optimizer=RMSprop(lr=1e-4),
                  loss='binary_crossentropy',
                  metrics=['acc'])
    history = model.fit(x_train, y_train,
                        epochs=5,
                        batch_size=128,
                        validation_split=0.2)
    

      

  • 相关阅读:
    字符串:序列自动机
    图论学习——最大团与最大独立集
    点分治
    图论:Johnson全源最短路
    停止更新博客
    将Eclipse中现有的java类生成类图
    problem:SVN error: (501 Not Implemented)
    SVN 修改URL路径
    eclipse中,把java函数代码折叠/展开
    Build类
  • 原文地址:https://www.cnblogs.com/alex-bn-lee/p/14200838.html
Copyright © 2011-2022 走看看