LSTM模型评估报continuous-multioutput is not supported错误
问题根因
- 任务与评估指标不匹配:你搭建的是多输出回归类LSTM模型,目标是预测5维归一化后的连续特征值,编译时使用的MSE均方误差也是回归任务损失函数。而
accuracy_score、precision、recall均为分类任务专属指标,仅支持离散标签输入,无法处理连续值输出,这也是报错continuous-multioutput is not supported的核心原因,即分类指标不支持多维度连续值格式的输入。 - 代码存在索引错误:你设置LSTM层
return_sequences=False时,模型预测输出的形状为(测试样本数, n_features),不存在第二维长度为1的维度,代码里写的LSTM_model.predict(xtest)[:,0,:]属于多余切片,会额外引发维度不匹配问题。
修复方案
根据你的实际任务场景二选一即可:
场景1:做时序生成/连续值预测任务(和“基于自有数据集生成新数据”需求一致)
直接替换为回归任务适用的评估指标即可,修正后的评估代码如下:
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score import numpy as np # 去掉错误的[:,0,:]切片,直接获取预测结果 y_pred = LSTM_model.predict(xtest, verbose=0) # 计算回归指标 mae = mean_absolute_error(ytest, y_pred) mse = mean_squared_error(ytest, y_pred) rmse = np.sqrt(mse) r2 = r2_score(ytest, y_pred) print(f"平均绝对误差MAE: {mae:.4f}") print(f"均方误差MSE: {mse:.4f}") print(f"均方根误差RMSE: {rmse:.4f}") print(f"决定系数R²: {r2:.4f}")
场景2:实际要做分类任务,只是模型结构写错了
需要按分类任务要求修改模型结构:
- 输出层维度改为对应分类的类别数,二分类加
sigmoid激活函数,多分类加softmax激活函数 - 编译时将损失函数替换为对应分类损失:二分类用
binary_crossentropy,多分类根据标签格式选择categorical_crossentropy或sparse_categorical_crossentropy - 模型预测后,将输出的概率值转换为离散类别标签(多分类取概率最大的类别索引,二分类按0.5阈值判断0/1),再调用
accuracy_score等分类指标计算即可。
内容的提问来源于stack exchange,提问作者P P
相关产品推荐
相关产品推荐

