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))
input_shape应该是(时间步长,n_features)。删除第一个尺寸。
input_shape = (95000,360)
Run Code Online (Sandbox Code Playgroud)
输出相同。