首页 文章

如何用4维输入输入LSTM?

提问于
浏览
4

我有一个这种形状的序列输入: (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 回答

  • 3

    答案是你不能 .

    Keras文档为Recurrent Layer提供以下信息:

    Input shape

    3D张量与形状 (batch_size, timesteps, input_dim) .

    在你的情况下,你有64个时间步长,每个步骤的形状(100,50) . 让模型工作的最简单方法是将数据重塑为(100 * 50) .

    Numpy提供了一个简单的功能:

    X = numpy.zeros((6000, 64, 100, 50), dtype=numpy.uint8)
    X = numpy.reshape(X, (6000, 64, 100*50))
    

    这是合理的还是不高度取决于您的数据 .

相关问题