簡體   English   中英

DL4J 將數組加載為數據集

[英]DL4J Load Array of Arrays as DataSet

如果我想從帶有 DL4j 的文本文件中的雙精度數組(例如{1, 2, 3, 4}加載數據集,我使用以下代碼:

int numLinesToSkip = 0;
                char delimiter = ',';
                String filePath = "data.txt";
                File file = new File(filePath);
                Path path = file.toPath();
                RecordReader recordReader = new CSVRecordReader(numLinesToSkip, delimiter);
            
                recordReader.initialize(new FileSplit(file));
                int variables = 2;
                int labelIndex = 50;
                int numClasses = variables;
                int batchSize = (int) lineCount;

                DataSetIterator iterator = new RecordReaderDataSetIterator(recordReader, batchSize, labelIndex, numClasses);
                
                DataSet allData = iterator.next();
                allData.shuffle();
//DataSet is now created

我想做同樣的事情,但使用 3D 數組數組,例如: {{1, 1, 1,}{2, 2, 2}{3,4,5}{6, 6, 6}}等.

我可以隨意格式化文件。 我只是希望能夠為每個項目加載一個數組而不是單個雙精度數 - 換句話說,是一個數組數組,而不是一個雙精度數組。

也可以使用 2 個 INDArrays 創建數據集。 如果您只想跳過使用 CSV 並只使用您自己的數組,您可以執行以下操作:

INDArray yourInput = Nd4j.create(double[][]);
INDArray yourLabels = Nd4j.create(double[][]);
DataSet d = new DataSet(yourInput,yourLabels);

通常,您使用的抽象假設每個都是一行。 如果您要嘗試進行 2d,那么唯一的用例通常是時間序列。 否則我們強制執行 1 行,因為在訓練/推理時設置批量大小是慣例。 為了處理該批大小,我們實際上不能允許超過 1 行。 必須在某處進行標准化,以便我們能夠為您執行某些任務,例如批處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM