当前位置: 首页 > 面试题库 >

Keras LSTM第二层(但不是第一层)中的输入形状误差

姚高爽
2023-03-14
问题内容

我正在尝试构建LSTM模型,以解决https://keras.io/layers/recurrent/中的文档示例

from keras.models import Sequential
from keras.layers import LSTM

以下三行代码(加上注释)直接来自上面的文档链接:

model = Sequential()
model.add(LSTM(32, input_dim=64, input_length=10))

# for subsequent layers, not need to specify the input size:
model.add(LSTM(16))

ValueError:输入0与层lstm_2不兼容:预期ndim = 3,找到的ndim = 2

在执行第二个model.add()语句之后,但在将模型暴露给我的数据甚至编译它之前,我在上面得到了该错误。

我在这里做错了什么?我正在使用Keras 1.2.1。

编辑

刚刚升级到当前的1.2.2,仍然存在相同的问题。


问题答案:

感谢patyork在Github上回答了这个问题:

第二个LSTM层未获得预期的3D输入(形状为(batch_size,时间步长,特征)。这是因为第一个LSTM层具有(按默认值计算)return_sequences
= False,这意味着它仅输出在时间t-1处设置的最后一个要素,其形状为(batch_size,32)或2个不包含时间的尺寸。

因此,要提供一个代码示例,说明如何使用堆叠式LSTM实现多对一(return_sequences =
False)序列分类,只需确保在中间层使用return_sequences = True就是这样:

model = Sequential()
model.add(LSTM(32, input_dim=64, input_length=10, return_sequences=True))
model.add(LSTM(24, return_sequences=True))
model.add(LSTM(16, return_sequences=True))
model.add(LSTM(1,  return_sequences=False))

model.compile(optimizer = 'RMSprop', loss = 'categorical_crossentropy')

(没有错误)



 类似资料:
  • 我在Openshift上有一个应用程序,几个月来一直运行良好,突然变得503。Haproxy状态表示第7层错误状态内部服务器错误 我已经检查了日志,没有提到任何特别的东西。我已经检查了使用限额,它远远低于1024m的限制。我已经多次重启该应用程序,但没有成功。我已经检查了haproxy.cfg,根齿轮地址是正确的。 怎么会这样呢?似乎一切都失去了,因为没有关于它的文件。

  • 我在Keras建立了一个卷积神经网络。 根据CS231讲座,卷积操作为每个过滤器创建一个特征映射(即激活映射),然后将其堆叠在一起。在我的例子中,卷积层有一个300维的输入。因此,我预计会进行以下计算: 每个过滤器的窗口大小为5。因此,每个滤波器产生300-5 1=296个卷积 但是,实际输出形状看起来不同: 偏移值的形状很有意义,因为每个过滤器都有一个偏移值。然而,我不了解重量的形状。显然,第一

  • 4.3.2 第二层设计 接下来需要对第二层上的每个模块进行精化。 首先看 getYear 函数。这个函数的功能只是输入年份数据,可以直接用 Python 的基本 语句实现,无需分解为新的功能模块。具体代码如下: def getYear(): print "This program prints the calendar of a given year." year = input

  • 我正在开发一个程序,该程序用一个无方向的Conv2D层(跨距=1)替换跨距的Conv2D层(跨距=2),然后在激活层之后添加一个AveragePooling2D层(跨距=2)。换句话说,AveragePooling2D层将减少输出维度,而不是让Conv2D层减少输出维度。 我使用本文中描述的方法将Conv2D层替换为非结构化版本,并在激活后插入averagepoolig2d层。替换Conv2D层效

  • 我有一个在MNIST上训练过的模型,但当我放入一个手工制作的图像样本时,它会引发值错误:层序列的输入0与层不兼容:输入形状的轴-1预期值为784,但收到了形状的输入(无,1) 我已经检查了模型的输入,它与MNIST的形状相同。x\U列车【0】。形状(784,)和我的图像arr.shape(784,)请帮助! 。。。 ValueError:layer sequential的输入0与层不兼容:输入形状

  • 我不明白为什么通道维度不包含在Keras中con2D层的输出维度中。 我有以下型号 我的问题末尾给出了模型摘要。输入层获取宽度为128、高度为128的RGB图像。第一个conv2D层告诉我输出维度是(None、61、61、24)。我使用的内核大小是(8,8),跨步是(2,2),没有填充。值61=下限((128-8 2 x 0)/2 1)和24(内核/过滤器的数量)是有意义的。但为什么维度中不包括不