【发布时间】: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 结合使用时,这些都没有指定。
LSTM 如何知道它的输入中有多少时间步长和特征?
LSTM 如何知道每个样本的序列结束?
是“存储”时间步并将它们输入 LSTM,还是一次处理一个时间步并一次输入 LSTM?
如果我包含“flatten”(如下),它会失败。为什么?
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