为了账号安全,请及时绑定邮箱和手机立即绑定

Deeplearning4j (DL4J) 低精度、召回率和 F1

Deeplearning4j (DL4J) 低精度、召回率和 F1

HUH函数 2021-11-24 19:03:30
我将使用 DL4J 来针对条件矩阵找到一个好的模型。我已经准备好了类似 CSV 的数据集(示例如下),在对超参数进行微调并多次训练模型后,我仍然无法获得合理的 Precision、Recall 和 F1 结果。请问我执行的有没有错误?示例数据集:## 基本上每一列都定义了每个样本的条件是否存在 (1) 或不存在 (0)。第一列是标签类只有2个输出,即1/0[1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1][1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0][1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0][1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0]...........数据向量部分:int OUTPUT_NEURONS = 2;  // Only 2 classes for outputint CLASS_INDEX = 0;     // First column is the labelint FILE_SIZE = 0;       // FILE_SIZE will be calculated while preparing the datavecRecords belowList<List<Writable>> datavecRecords = new ArrayList<>();......Prepare the datavecRecords using above csv data ......CollectionRecordReader crr = new CollectionRecordReader(datavecRecords);RecordReaderDataSetIterator iter = new RecordReaderDataSetIterator(crr, FILE_SIZE, CLASS_INDEX, OUTPUT_NEURONS);allData = iter.next();SplitTestAndTrain testAndTrain = allData.splitTestAndTrain(0.6);DataSet trainingData = testAndTrain.getTrain();DataSet testData = testAndTrain.getTest();
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

您可以在此处的用户社区中找到您问题的答案:https : //gitter.im/deeplearning4j/deeplearning4j/tuninghelp


查看完整回答
反对 回复 2021-11-24
?
www说

TA贡献1775条经验 获得超8个赞

代码看起来不错。你在那里没有做错任何事。我认为只需要调整它。

您拥有的 60/40 测试/火车拆分高于我通常看到的 70/30 或 80/20。您有什么理由要保留更多数据进行测试?

当您说合理时,您的意思是与基线相比吗?如果不是,我将从本质上是逻辑回归的 OutputLayer 开始,您可以将其用作基线。

您是否尝试过添加更多图层?多一层 dropout 可能会有用。


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信