【问题标题】:How does the LSTM know number of time steps and features in an Conv1D-LSTM network?LSTM 如何知道 Conv1D-LSTM 网络中的时间步数和特征?
【发布时间】:2019-09-23 20:16:52
【问题描述】:

我有一个时间序列信号(n 个样本,每个样本有 81 个时间步长和 3 个特征 = n x 81 x 3)。 我正在使用 conv1D-LSTM 网络。 n_timesteps = 81,n_features = 3。 普通 LSTM 指定了 n_timesteps 和 n_features,但是当与 conv1d 结合使用时,这些都没有指定。

  1. LSTM 如何知道它的输入中有多少时间步长和特征?

  2. LSTM 如何知道每个样本的序列结束?

  3. 是“存储”时间步并将它们输入 LSTM,还是一次处理一个时间步并一次输入 LSTM?

  4. 如果我包含“flatten”(如下),它会失败。为什么?

  5. conv1d 中的过滤器数量是否必须与 LSTM 中的过滤器数量相对应?

model = Sequential()

model.add(Conv1D(filters=32, kernel_size=3, activation='relu', input_shape=(n_timesteps,n_features)))
model.add(Conv1D(filters=32, kernel_size=3, activation='relu'))
model.add(Dropout(0.5))
model.add(MaxPooling1D(pool_size=2))
#model.add(Flatten())

#model.add(LSTM(units=128, input_shape=(n_timesteps, n_features), return_sequences=True))
model.add(LSTM(units=128, return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(units=64, dropout=0.5, recurrent_dropout=0.5, return_sequences=True))
model.add(LSTM(units=32, dropout=0.5, recurrent_dropout=0.5))
model.add(Dense(16, activation='relu'))
model.add(Dropout(0.3))
model.add(Dense(1, activation='sigmoid'))

【问题讨论】:

    标签: tensorflow keras conv-neural-network lstm


    【解决方案1】:

    1 和 2

    一切都基于张量(有点像矩阵,但具有任意数量的维度)。

    张量有形状,一切都基于形状。您的数据张量是三维的:(samples, time_steps, features)

    1D 卷积也使用相同的 3D 张量:(samples, length, channels)。所以:

    • 样本 = 示例 = 序列
    • time_steps = 长度
    • 功能 = 渠道

    没有秘密。数据是结构化的,层将使用这种结构。查看您的 model.summary() 并查看每个层输出的步骤数和功能。

    3

    层之间没有交错。

    • conv 层将处理其整个输入张量并生成一个输出张量。
    • 下一个卷积层将获取整个输出并产生另一个完整的输出
    • LSTM 层也会这样做,获取整个输入并输出整个张量。

    4

    如果您将数据展平,您的 3D 张量 (samples, steps, feats) 将变为 2D 张量 (samples, something)。没有更多的数据结构可以被层理解。

    5

    对于过滤器或单元的数量绝对没有要求。唯一的问题是模型的最终输出需要与y_train 数据具有相同的形状。

    这是我的模型摘要。特征的数量似乎从原来的 3(输入)变成了 32(conv1d)。 LSTM 现在将处理 conv1d 的 32 个特征而不是输入的 3 个特征的整个时间步长 (~81) 是否正确?

    摘要示例:

    第一个 LSTM 将采用(None, 38,32) 的输入形状。这意味着这个 LSTM 将处理:

    • 38 步
    • 32 个特点

    卷积丢弃边界步骤,最大池化步骤减半。

    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    conv1d (Conv1D)              (None, 79, 32)            320       
    _________________________________________________________________
    conv1d_1 (Conv1D)            (None, 77, 32)            3104      
    _________________________________________________________________
    dropout (Dropout)            (None, 77, 32)            0         
    _________________________________________________________________
    max_pooling1d (MaxPooling1D) (None, 38, 32)            0         
    _________________________________________________________________
    lstm (LSTM)                  (None, 38, 128)           82432     
    _________________________________________________________________
    dropout_1 (Dropout)          (None, 38, 128)           0         
    _________________________________________________________________
    lstm_1 (LSTM)                (None, 38, 64)            49408     
    _________________________________________________________________
    lstm_2 (LSTM)                (None, 32)                12416     
    _________________________________________________________________
    dense (Dense)                (None, 16)                528       
    _________________________________________________________________
    dropout_2 (Dropout)          (None, 16)                0         
    _________________________________________________________________
    dense_1 (Dense)              (None, 1)                 17        
    =================================================================
    Total params: 148,225
    Trainable params: 148,225
    Non-trainable params: 0
    _________________________________________________________________```
    
    
    

    【讨论】:

    • 感谢您的出色回答。这是我的模型摘要。好像说它把feature size从原来的3改成了32的conv1d feature map?我猜 LSTM 现在将处理原始 3 个特征的 32 个特征的时间步长。那是对的吗?谢谢,乔恩
    • 注意卷积如何减少步数。 LSTM 将处理一系列 38 个步骤。
    猜你喜欢
    • 2018-08-28
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    相关资源
    最近更新 更多