猿问

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

我将使用 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 output

int CLASS_INDEX = 0;     // First column is the label

int FILE_SIZE = 0;       // FILE_SIZE will be calculated while preparing the datavecRecords below


List<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();

HUH函数
浏览 138回答 2
2回答

芜湖不芜

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

www说

代码看起来不错。你在那里没有做错任何事。我认为只需要调整它。您拥有的 60/40 测试/火车拆分高于我通常看到的 70/30 或 80/20。您有什么理由要保留更多数据进行测试?当您说合理时,您的意思是与基线相比吗?如果不是,我将从本质上是逻辑回归的 OutputLayer 开始,您可以将其用作基线。您是否尝试过添加更多图层?多一层 dropout 可能会有用。
随时随地看视频慕课网APP

相关分类

Java
我要回答