【问题标题】:Input Format for Mulivariate Time Series Binary Classification多元时间序列二进制分类的输入格式
【发布时间】:2018-10-27 13:24:56
【问题描述】:

我正在尝试使用 LSTM 模型对多元时间序列数据进行二元分类。我在一天中收集了大约 100 天的 7 个属性(即 100 个大小为 [9000, 7] 的数组)。这些数组中的每一个都有一个分类状态,即 1 或 0。

鉴于我是 Keras 和机器学习的新手,我已经开始尝试构建尽可能简单的模型,但是当我尝试训练它们时,我不断收到有关输入形状的错误。例如,我的第一层:

model = Sequential()
model.add(Conv2D(32, (3,3), input_shape=(9000,7,1), activation='relu'))
...
model.fit(x=X_train, y=Y_train, epochs=100) 

使用 float64 类型的 X_train 和 (100L, 9000L, 7L) 的大小,我收到一条错误消息:

ValueError:检查输入时出错:预期 conv2d_11_input 有 4 个维度,但得到的数组形状为 (100L、9000L、7L)

我尝试更改批量大小和时期数但没有成功,那么有人可以解释如何正确地重塑我的输入吗?我错过了一些简单的东西吗?

【问题讨论】:

  • 尝试将输入形状更改为model.add(Conv2D(32, (3,3), input_shape=(None, 9000,7), activation='relu')),其中 None 是批量大小。

标签: python machine-learning keras time-series theano


【解决方案1】:

我怀疑你想使用Conv1D(3D 数据),不是吗?
您正在使用Conv2D(4D 数据 = 图像)。

对于Conv1D 和任何RNN 层,例如LSTM,您的输入是3D 数据,您的input_shape 应该是input_shape=(9000,7)


输入数据应该是一个形状为(100,9000,7)的数组,按照错误信息的内容已经可以了。


假设每一天都是一个单独的序列,并且您不想连接这些天。

【讨论】:

  • 感谢修复!作为快速跟进,我是否想要批量大小为 1 的 100 个 epoch,反之亦然?或者其他东西会更好吗?