我有一个这种形状的序列输入: (6000, 64, 100, 50)
6000
只是样本序列的数量 . 每个序列的长度为 64
.
我计划使用Keras将此输入拟合到LSTM中 .
我这样设置我的输入:
input = Input(shape=(64, 100, 50))
这给了我一个 (?, 64, 100, 50)
的输入形状
但是,当我将 input
放入我的LSTM中时:
x = LSTM(256, return_sequences=True)(input)
我收到此错误:
输入0与层lstm_37不兼容:预期ndim = 3,发现ndim = 4
如果我的输入形状类似于 (?, 64, 100)
,那么这将起作用,但是当我有第四维度时,这不会有效 .
这是否意味着LSTM只能输入3维?如何使用Keras将4或甚至更高维度的输入馈入LSTM?
1 回答
答案是你不能 .
Keras文档为Recurrent Layer提供以下信息:
Input shape
3D张量与形状
(batch_size, timesteps, input_dim)
.在你的情况下,你有64个时间步长,每个步骤的形状(100,50) . 让模型工作的最简单方法是将数据重塑为(100 * 50) .
Numpy提供了一个简单的功能:
这是合理的还是不高度取决于您的数据 .