相关疑难解决方法(0)

Keras:我应该如何为RNN准备输入数据?

我在为Keras准备RNN的输入数据时遇到了麻烦.

目前,我的培训数据维度是: (6752, 600, 13)

  • 6752:训练数据的数量
  • 600:时间步数
  • 13:特征向量的大小(向量是浮点数)

X_train并且Y_train都在这个方面.

我想把这些数据准备好SimpleRNN用于Keras.假设我们正在经历时间步骤,从步骤#0到步骤#599.假设我想使用input_length = 5,这意味着我想使用最近的5个输入.(例如步骤#10,#11,#12,#13,#14 @步骤#14).

我应该如何重塑X_train

应该是(6752, 5, 600, 13)或应该是(6752, 600, 5, 13)吗?

什么形状应该Y_train在?

它应该是(6752, 600, 13)(6752, 1, 600, 13)(6752, 600, 1, 13)

deep-learning lstm keras recurrent-neural-network

15
推荐指数
2
解决办法
5986
查看次数

ValueError:lstm_1 层的输入 0 与该层不兼容:预期 ndim=3,发现 ndim=2。收到完整形状:(无,64)

我一直很难理解这个错误消息的含义。我看过很多帖子,比如

Keras LSTM 层的 4D 输入

ValueError: 层顺序的输入 0 与层不兼容: : 预期 min_ndim=4, 发现 ndim=3

ValueError:输入 0 与层 lstm_13 不兼容:预期 ndim=3,发现 ndim=4

层顺序的输入0与期望ndim=3的层不兼容,发现ndim=2。收到完整形状:[无,1]

预期 ndim=3,发现 ndim=2

但他们似乎都没有解决我的问题。

我有

batch_train_dataset = tf.data.Dataset.from_tensor_slices((train_features, train_labels)).shuffle(512).batch(batch_size)

for i,x in enumerate(batch_train_dataset):
  print("x[0].ndim: ", x[0].ndim)
  print("x[0].shape: ", x[0].shape)
  print("x[1].shape: ", x[1].shape)
  if i==0:
    break
##########OUTPUT###########
x[0].ndim:  3
x[0].shape:  (64, 32, 1000)
x[1].shape:  (64,)
Run Code Online (Sandbox Code Playgroud)

我的个人数据具有一个形状,(64,32,1000)其中64是batch_size,32是时间步长,1000是许多特征。

这是我的模型。

num_classes = len(index_to_label)

lstm_model = tf.keras.Sequential([
    tf.keras.layers.Masking(mask_value=0.0), # DO NOT REMOVE THIS LAYER …
Run Code Online (Sandbox Code Playgroud)

python lstm keras tensorflow

1
推荐指数
1
解决办法
4394
查看次数