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

Keras LSTM输入尺寸设置

翟学文
2023-03-14
问题内容

我试图使用keras训练LSTM模型,但我认为这里出了点问题。

我有一个错误

ValueError:检查输入时出错:预期lstm_17_input具有3个维,但数组的形状为(10000,0,20)

虽然我的代码看起来像

model = Sequential()
model.add(LSTM(256, activation="relu", dropout=0.25, recurrent_dropout=0.25, input_shape=(None, 20, 64)))
model.add(Dense(1, activation="sigmoid"))
model.compile(loss='binary_crossentropy',
          optimizer='adam',
          metrics=['accuracy'])
model.fit(X_train, y_train,
      batch_size=batch_size,
      epochs=10)

其中X_train已的形状(10000, 20)和前几个数据点像

array([[ 0,  0,  0, ..., 40, 40,  9],
   [ 0,  0,  0, ..., 33, 20, 51],
   [ 0,  0,  0, ..., 54, 54, 50],
...

并且y_train具有这样的形状的(10000, ),它是二进制(0/1)标签阵列。

有人可以指出我在哪里错了吗?


问题答案:

为了完整起见,这是发生了什么。

首先LSTM,像Keras中的所有图层一样,接受两个参数:input_shapebatch_input_shape。所不同的是惯例,input_shape
不包含批量大小 ,同时batch_input_shape全情投入的形状,包括批量大小

因此,规范input_shape=(None, 20, 64)告诉keras期望4维输入,这不是您想要的。正确的本来是正义的(20,)

但这还不是全部。LSTM层是循环层,因此需要3维输入(batch_size, timesteps, input_dim)。这就是为什么正确的规范是input_shape=(20, 1)或的原因batch_input_shape=(10000, 20, 1)。另外,您的训练数组也应重新设计以表示它具有20时间步长和1每个步长的输入特征。

因此,解决方案

X_train = np.expand_dims(X_train, 2)  # makes it (10000,20,1)
...
model = Sequential()
model.add(LSTM(..., input_shape=(20, 1)))


 类似资料:
  • 我试图用PyTorch LSTM训练一个简单的2层神经网络,但我很难解释PyTorch留档。具体来说,我不太确定如何处理我的训练数据。 我想做的是通过小批次在一个非常大的数据集上训练我的网络,每个批次有100个元素长。每个数据元素将具有5个特征。留档声明层的输入应该是形状(seq_len,batch_size,input_size)。我应该如何调整输入? 我一直在关注这篇文章:https://di

  • 使用网格的列来设置输入框的大小,如 .large-6, .medium-6, 等。 更多网格系统知识,可以点击 相等大小列 以下演示了相等大小列的实例: 实例<form>   <div>     <div>       <label>medium-4 (100% on small, stacked)         <input type="text" placeholder="Name">   

  • 我对TensorFlow和LSTM架构相当陌生。我在计算数据集的输入和输出(x_train、x_test、y_trainy_test)时遇到了问题。 我最初输入的形状: X_列车:(366,4) Ytrain和Ytest是一系列股票价格。Xtrain和Xtest是我想学习的四个预测股价的功能。 这是产生的错误: -------------------------------------------

  • 主要内容:jQuery 尺寸方法,jQuery 尺寸,jQuery width() 和 height() 方法,实例,jQuery innerWidth() 和 innerHeight() 方法,实例,jQuery outerWidth() 和 outerHeight() 方法,实例通过 jQuery,很容易处理元素和浏览器窗口的尺寸。 jQuery 尺寸方法 jQuery 提供多个处理尺寸的重要方法: width() height() innerWidth() innerHeight() ou

  • 我写了这段代码。我的输入形状是(100 x100 X3)。我是深度学习的新手。我花了这么多时间在这个问题上,但无法解决这个问题。任何帮助都非常感谢。 错误:在[15]:运行文件('/user/Project/SM/src/ann\u algo\u keras.py',wdir='/user/Project/SM/src')中随机启动突触权重:模型:“sequential\u 3” conv2d_1

  • 在CSS中,通过 width 和 height 属性来定义一个盒子的宽度和高度,可以用长度值或百分比来设置,不允许负值。使用百分比时,根据父元素的宽度进行计算盒子的宽度,根据父元素的高度进行计算盒子的高度。 如果一个盒子没有显式定义 width 属性,则宽度的计算结果跟定位类型相关:静态定位或相对定位的盒子,其宽度为父元素宽度的100%;绝对定位和浮动的盒子,其宽度根据所包含内容自动扩展,最大宽度