【发布时间】:2020-11-02 14:27:55
【问题描述】:
我创建了一个 CNN-LSTM 用于网络会话的生存预测,我的训练数据如下所示:
print(x_train.shape)
(288, 3, 393)
带有(样本、时间步长、特征)和我的模型:
model = Sequential()
model.add(TimeDistributed(Conv1D(128, 5, activation='relu'),
input_shape=(x_train.shape[1], x_train.shape[2])))
model.add(TimeDistributed(MaxPooling1D()))
model.add(TimeDistributed(Flatten()))
model.add(LSTM(64, stateful=True, return_sequences=True))
model.add(LSTM(16, stateful=True))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer=Adam(lr=0.001), loss='binary_crossentropy', metrics=['accuracy'])
但是,TimeDistributed 层至少需要 3 个维度,我应该如何转换数据才能使其工作?
非常感谢!
【问题讨论】:
-
你的代码(经过一些修正)在没有 TimeDistributed 层的情况下也可以工作......你为什么需要它?
-
嗨,Marco,你会如何改变它?提前致谢!
-
我在下面添加了一个示例,不要忘记投票并接受它作为答案;-)
-
非常感谢!我做到了:)
标签: python machine-learning keras lstm conv-neural-network