DeepLearning4J报错occurrences cannot be negative问题求助
问题根源与解决方案
你遇到的occurrences cannot be negative异常,核心原因是用错了评估类:
- 你的模型是回归任务(输出层
nOut=1、损失函数用MSE、激活函数为IDENTITY),但你用了Evaluation类——这个类是专门给分类任务设计的,用来计算准确率、混淆矩阵等分类指标。 Evaluation会尝试把模型输出和标签当作分类类别索引处理,而回归的连续输出值会被错误解析,导致内部计数逻辑出现负数,触发异常。
修复代码
把评估逻辑替换为回归任务专用的RegressionEvaluation类:
private RegressionEvaluation evaluate(MultiLayerNetwork model, DataSet testData) { INDArray output = model.output(testData.getFeatures()); System.out.println("Labels: " + testData.getLabels()); System.out.println("Output: " + output); RegressionEvaluation eval = new RegressionEvaluation(); eval.eval(testData.getLabels(), output); return eval; }
额外检查点
- 确认测试数据的标签
testData.getLabels()和模型输出output的形状一致,都应为[样本数, 1]的INDArray - 回归任务下,
RegressionEvaluation会输出MSE、MAE、RMSE等适合回归的指标,匹配你的模型目标
内容的提问来源于stack exchange,提问作者Rus Kuzmin
相关产品推荐
相关产品推荐

