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

Urj*_*war 13 python lstm keras recurrent-neural-network

我正在尝试进行多级分类,这里是我的训练输入和输出的详细信息:

train_input.shape =(1,95000,360)(95000长度输入数组,每个元素是360长度的数组)

train_output.shape =(1,95000,22)(22门课程)

model = Sequential()

model.add(LSTM(22, input_shape=(1, 95000,360)))
model.add(Dense(22, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(train_input, train_output, epochs=2, batch_size=500)
Run Code Online (Sandbox Code Playgroud)

错误是:

ValueError:输入0与层lstm_13不兼容:期望ndim = 3,在行中找到ndim = 4:model.add(LSTM(22,input_shape =(1,95000,360)))

请帮帮我,我无法通过其他答案解决.

Urj*_*war 11

我通过制作解决了这个问题

输入大小:(95000,360,1)和输出大小:(95000,22)

并在定义模型的代码中将输入形状更改为(360,1):

model = Sequential()
model.add(LSTM(22, input_shape=(360,1)))
model.add(Dense(22, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(ml2_train_input, ml2_train_output_enc, epochs=2, batch_size=500)
Run Code Online (Sandbox Code Playgroud)


小智 8

在人工神经网络 (ANN) 中,输入的形状为 (N,D),其中 N 是样本数量,D 是特征数量。

在 RNN、GRU 和 LSTM 中,输入的形状为 (N,T,D),其中 N 是样本数量,T 是时间序列长度,D 是特征数量。

所以,在添加层的同时

ANN 的输入(shape = (D,)) 以及 RNN、GRU 和 LSTM 的输入(shape = (T,D))


Mic*_*tti 7

input_shape应该是(时间步长,n_features)。删除第一个尺寸。

input_shape = (95000,360)
Run Code Online (Sandbox Code Playgroud)

输出相同。

  • 我需要知道您的输入是什么。是时间序列吗?您观察多少个不同的变量?我举一个例子:如果我观察24小时每小时的降雨和气温以预测天气(1 =好,0 =坏),而我会持续365天,有365个样本,每个样本都有24个时间步长和2个变量(一个用于降雨,一个用于温度),所以我的输入将具有形状(365,24,2),并且input_shape =(24,2) 。 (2认同)

小智 7

嗯,我认为主要的问题是return_sequences网络中的参数。这个超参数应该设置False最后一层true其他前面的层