1. 程式人生 > >DL4J中文文件/模型/迭代器

DL4J中文文件/模型/迭代器

什麼是迭代器?

資料集迭代器允許將資料輕鬆載入到神經網路中,並幫助組織批處理、轉換和掩碼。包含在Eclipse DL4J中的迭代器有助於使用者提供的資料,或者自動載入公共的基準資料集如MNIST和IRIS。

用法

對於大多數用例,初始化迭代器和傳遞一個引用到MultiLayerNetworkComputationGraph 的fit()方法是開始訓練任務所需的全部內容:

MultiLayerNetwork model = new MultiLayerNetwork(conf);
model.init();

// 傳入一個 MNIST 資料集迭代器,自動獲取資料 
DataSetIterator mnistTrain = new MnistDataSetIterator(batchSize, true, rngSeed);
net.fit(mnistTrain);

許多其他方法也接受迭代器來完成任務,例如評估:

// 直接傳遞給神經網路
DataSetIterator mnistTest = new MnistDataSetIterator(batchSize, false, rngSeed);
net.eval(mnistTest);

//使用一個評估類
Evaluation eval = new Evaluation(10); //建立一個帶有10個可能分類的評估物件
while(mnistTest.hasNext()){
    DataSet next = mnistTest.next();
    INDArray output = model.output(next.getFeatureMatrix()); //得到網路預測
    eval.eval(next.getLabels(), output); //檢查對真實分類的預測
}

可用的迭代器


CifarDataSetIterator (CIFAR10資料集迭代器)

[原始碼]

CifarDataSetIterator是CIFAR10資料集的迭代器,10個分類,32x32影象   3通道(RGB)還支援用於基於Sergey Zagoruyko示例https://github.com/szagoruyko/cifar.torch 對資料集進行歸一化的特殊前處理器。

CifarDataSetIterator

public CifarDataSetIterator(int batchSize, int numExamples) 

用建立器返回的batchSize與numExamples載入圖片。

next

public DataSet next(int batchSize) 

用建立器返回的batchSize、numExamples與version載入圖片。


EmnistDataSetIterator (EMNIST 資料集迭代器)

[原始碼]

EMNIST 資料集迭代器

  • COMPLETE: 也稱為 “ByClass” 分割。 共計814,255 個示例(訓練 + 測試), 62 個分類
  • MERGE:   也稱為“ByMerge”分割。共計814255個示例。47個不平衡分類。對於字母C、I、J、K、L、M、O、P、S、U、V、W、X、Y和Z,為每個字母(而不是2個)將小寫字母和大寫字母(難以區分)組合為一個類
  • BALANCED: 總計 131,600 示例。 47 個分類 (每個分類都有相同數量的例子)
  • LETTERS: 總計145,600 示例。 26 個平衡分類。
  • DIGITS: 總計 280,000 示例。 10 個平衡分類。


檢視: https://www.nist.gov/itl/iad/image-group/emnist-dataset 和  https://arxiv.org/abs/1702.05373

EmnistDataSetIterator

public EmnistDataSetIterator(Set dataSet, int batch, boolean train) throws IOException 

EMNIST 資料集有多個不同的子集。 詳見 {- link EmnistDataSetIterator}。

numExamplesTrain

public static int numExamplesTrain(Set dataSet) 

基於指定的RNG種子建立具有隨機混洗資料的EMNIST迭代器

  • 引數 dataSet 用於返回的資料集
  • 引數 batchSize批量大小
  • 引數 train 如果為 true: 使用訓練集。 如果 false: 使用測試集
  • 引數 seed Random number generator seed

numExamplesTest

public static int numExamplesTest(Set dataSet) 

獲取指定子集的測試示例數。

  • 引數 dataSet 獲取的子集
  • 返回指定子集的示例數

numLabels

public static int numLabels(Set dataSet) 

獲取指定子集的標籤數量

  • 引數 dataSet 要獲取的子集
  • 返回指定子集的標籤數

isBalanced

public static boolean isBalanced(Set dataSet) 

在訓練集中標籤是否平衡(即:每個標籤的例項數是否相等)?

  • 返回true或false

UciSequenceDataSetIterator (UCI資料庫是加州大學歐文分校(University of CaliforniaIrvine)提出的用於機器學習的資料庫,這個資料庫目前共有335個數據集,其數目還在不斷增加,UCI資料集是一個常用的標準測試資料集。)

[原始碼]

 

UCI合成控制圖時間序列資料集。該資料集可用於六類單變數時間序列的分類:正常,週期性,遞增趨勢,遞減趨勢,向上移位,向下移位

詳情: https://archive.ics.uci.edu/ml/datasets/Synthetic+Control+Chart+Time+Series
資料: https://archive.ics.uci.edu/ml/machine-learning-databases/synthetic_control-mld/synthetic_control.data
圖片: https://archive.ics.uci.edu/ml/machine-learning-databases/synthetic_control-mld/data.jpeg

UciSequenceDataSetIterator

public UciSequenceDataSetIterator(int batchSize) 

用指定的小批量建立訓練集的迭代器。RNG種子123隨機化

  • 引數  batchSize 小批量大小

LFWDataSetIterator (LFW資料集是為了研究 非限制環境下的人臉識別問題而建立。這個集合包含超過13,000張人臉影象(全部來自於internet,而不是實驗室環境))

[原始碼]

LFW 迭代器 - 來自非限制環境中的標註人臉
檢視 http://vis-www.cs.umass.edu/lfw/
總計13233圖片,5749 個分類。

LFWDataSetIterator 

public LFWDataSetIterator(int batchSize, int numExamples, int[] imgDim, int numLabels, boolean useSubset,
                    PathLabelGenerator labelGenerator, boolean train, double splitTrainTest,
                    ImageTransform imageTransform, Random rng) 

建立 LFW 資料特有迭代器

  • 引數 batchSize 示例的批量大小
  • 引數 numExamples 示例總數
  • 引數 imgDim 高度、寬度和通道的陣列
  • 引數 numLabels 示例總數
  • 引數 useSubset 使用LFW資料集的一個子集
  • 引數 labelGenerator 路徑標註生成器使用
  • 引數 train 如果使用訓練值則為true
  • 引數 splitTrainTest 為將要測試的訓練和保留分割資料的百分比
  • 引數 imageTransform 如何轉換圖片

  • 引數 rng 批量洗牌中的要鎖定的隨機數

MnistDataSetIterator (手寫數字資料集迭代器)

[原始碼]

MNIST 資料集迭代器 - 60000 個訓練樣本,10000個測試樣本, 10 個分類。數字有 28x28 畫素與一個通道 (灰度)。
更多詳情檢視 http://yann.lecun.com/exdb/mnist/


IrisDataSetIterator (鳶尾花卉資料集迭代器)

[原始碼]

IrisDataSetIterator: 一個眾所周知的Iris資料集的迭代器。4個特徵,3個標籤類
https://archive.ics.uci.edu/ml/datasets/Iris

IrisDataSetIterator

public IrisDataSetIterator()

next

public DataSet next() 

IrisDataSetIterator 處理遍歷Iris資料集。


TinyImageNetDataSetIterator

[原始碼]

Tiny ImageNet是ImageNet資料庫的子集。TinyImageNet是斯坦福大學CS321N的預設課程挑戰。

Tiny ImageNet有200個分類,每個分類由500個訓練影象組成。

影象是64×64畫素,RGB。

檢視: http://cs231n.stanford.edu/ 和 https://tiny-imagenet.herokuapp.com/

TinyImageNetDataSetIterator

public TinyImageNetDataSetIterator(int batchSize) 

用隨機迭代順序(RNG種子固定到123)建立訓練集的迭代器

  • 引數 batchSize 迭代器小批次大小

SequenceRecordReaderDataSetIterator

[原始碼]

序列記錄讀取器資料集迭代器。

給定一個記錄讀取器(和可選的另一個用於標籤的記錄讀取器)生成時間序列(序列)資料集。

支援一對多和多對一型別資料載入的填充(即,具有不同數量的輸入vs)。

SequenceRecordReaderDataSetIterator

public SequenceRecordReaderDataSetIterator(SequenceRecordReader featuresReader, SequenceRecordReader labels,
                    int miniBatchSize, int numPossibleLabels) 

建構函式,其中特徵和標籤來自不同的RecordReader(例如,不同的檔案),標籤用於分類。

  • 引數 featuresReader 特徵SequenceRecordReader
  • 引數 labels 標籤: 假設每個時間步的單個值,其中值是0到NoMaulabeleBels-1範圍內的整數。
  • 引數 miniBatchSize 每次呼叫next()的小批次大小
  • 引數 numPossibleLabels  標籤的分類數

hasNext

public boolean hasNext() 

 是否有下一條資料。

loadFromMetaData

public DataSet loadFromMetaData(RecordMetaData recordMetaData) throws IOException 

使用所提供的RecordMetaData將單個序列示例載入到資料集。請注意,一次載入多個例項更為有效率。使用 {- link #loadFromMetaData(List)}

  • 引數 recordMetaData 從中載入的記錄元資料。應該由給定的記錄讀取器產生。
  • 使用指定的示例返回DataSet
  • 載入資料時如果發生錯誤則丟擲IOException

loadFromMetaData

public DataSet loadFromMetaData(List<RecordMetaData> list) throws IOException 

使用所提供的RecordMetaData例項載入多個序列示例到資料集。

  • 引數 list從中載入的RecordMetaData例項列表。應該是由提供給SequenceRecordReaderDataSetIterator 構造器的記錄讀取器產生。
  • 用指定的示例返回DataSet
  • 載入資料時如果發生錯誤則丟擲IOException

RecordReaderMultiDataSetIterator (記錄讀取器多資料集迭代器)

[原始碼]

思想:從一個或多個序列/記錄讀取器產生多個輸入和多個輸出。輸入和輸出可以從RecordReader和SequenceRecordReaders列的子集獲得(例如,一些輸入和輸出作為相同記錄/序列中的不同列);還可以混合不同型別的資料(例如,在同一個RecordReaderMultiDataSetIterator使用RecordReader和SequenceRecordReaders)。

輸入和子集。

 

RecordReaderMultiDataSetIterator

public RecordReaderMultiDataSetIterator build() 

當處理不同長度的時間序列資料時,我們應該如何對齊輸入/標籤時間序列?對於等長度:使用EQUAL_LENGTH進行序列分類:使用ALIGN_END

loadFromMetaData

public MultiDataSet loadFromMetaData(RecordMetaData recordMetaData) throws IOException 

使用所提供的RecordMetaData將單個序列示例載入到資料集。請注意,一次載入多個例項更為有效率。使用 {- link #loadFromMetaData(List)}

  • 引數 recordMetaData 從中載入的記錄元資料。應該由給定的記錄讀取器產生。
  • 使用指定的示例返回DataSet
  • 載入資料時如果發生錯誤則丟擲IOException

loadFromMetaData

public MultiDataSet loadFromMetaData(List<RecordMetaData> list) throws IOException 

使用所提供的RecordMetaData例項載入多個序列示例到資料集。

  • 引數 list從中載入的RecordMetaData例項列表。應該是由提供給SequenceRecordReaderDataSetIterator 構造器的記錄讀取器產生。
  • 用指定的示例返回DataSet
  • 載入資料時如果發生錯誤則丟擲IOException

RecordReaderDataSetIterator

[原始碼]

DataSet物件以及從各個記錄生成小批量。


示例 1: 影象分類, 批量大小32, 10 個分類

rr.initialize(new FileSplit(new File("/path/to/directory")));

DataSetIterator iter = new RecordReaderDataSetIterator.Builder(rr, 32)
//Label index (first arg): Always value 1 when using ImageRecordReader. For CSV etc: use index of the column
//  that contains the label (should contain an integer value, 0 to nClasses-1 inclusive). Column indexes start
// at 0. Number of classes (second arg): 標籤分類的數量(即10 個用於 MNIST - 10 個用於數字)
.classification(1, nClasses)
.preProcessor(new ImagePreProcessingScaler()) //用於把圖片值從0-255歸一化到0-1
.build()
}



示例 2: 來自CSV的多輸出迴歸, 批量大小 128

rr.initialize(new FileSplit(new File("/path/to/myCsv.txt")));

DataSetIterator iter = new RecordReaderDataSetIterator.Builder(rr, 128)

//指定迴歸 標籤/目標出現的列。注意所有其它列都被當作特徵。列索引從0開始。
.regression(labelColFrom, labelColTo)
.build()
}

RecordReaderDataSetIterator

public RecordReaderDataSetIterator(RecordReader recordReader, int batchSize) 

分類構造器:
(a) 標籤索引被假定為最後一個可寫/列,並且
(b) 從 RecordReader.getLabels()中推斷類的數目
注意,如果RecordReader.getLabels()返回NULL,則不會產生輸出標籤。

  • 引數 recordReader 作為資料來源的記錄讀取器
  • 引數 batchSize用於每次 .next() 呼叫的小批次大小

setCollectMetaData

public RecordReaderDataSetIterator(RecordReader recordReader, int batchSize, int labelIndex,int numPossibleLabels)

 

分類的主要構造器。這將將輸入類索引(在位置labelIndex中,整數值0到numPossibleLabels-1包含)轉換為適當的one-hot輸出/標籤表示。

  • 引數 recordReader 記錄讀取器: 提供資料來源
  • 引數 batchSize 批量大小 (示例數量) 用於輸出資料集物件
  • 引數 labelIndex 標籤 Writable (通常是一個 IntWritable)的索引, 由recordReader.next()獲得
  • 引數 numPossibleLabels 分類的數量(可能的標籤)

loadFromMetaData

public DataSet loadFromMetaData(RecordMetaData recordMetaData) throws IOException 

使用提供的RealDataMeta將單個示例載入到DataSet。請注意,同時載入多個例項更為有效。使用 {- link #loadFromMetaData(List)}

  • 引數 recordMetaData 用於載入的 RecordMetaData。應該由給定的記錄讀取器產生
  • 返回指定示例的 DataSet 
  • 如果載入資料期間發生錯誤則丟擲 IOException

loadFromMetaData

public DataSet loadFromMetaData(List<RecordMetaData> list) throws IOException 

使用提供的RealDataMeta例項將多個示例載入到資料集。

  • 引數 list 是用於載入的RecordMetaData 例項列表。應該是由提供給ReadReadReadDeader的建構函式的記錄讀取器生成的
  • 返回指定示例的 DataSet 
  • 如果載入資料期間發生錯誤則丟擲 IOException

writableConverter

public Builder writableConverter(WritableConverter converter)

RecordReaderDataSetIterator 的構建類

maxNumBatches

public Builder maxNumBatches(int maxNumBatches)

可選引數,通常不使用。如果設定,則可以用來限制將返回的小批量的最大值(在重置之間)。如果沒有設定,將總是返回儘可能多的小批量,因為有可用的資料。

  • 引數 maxNumBatches 每個epoch / 重置的小批量的最大數值

regression

public Builder regression(int labelIndex)

將其用於單輸出迴歸(即,1輸出/迴歸目標)

  • 引數 labelIndex 包含迴歸目標的列索引(索引從0開始)

regression

public Builder regression(int labelIndexFrom, int labelIndexTo)

將其用於多個輸出迴歸(1個或更多的輸出/迴歸目標)。請注意,所有迴歸目標必須是連續的(即,位置x到y,沒有間隙)。

  • 引數 labelIndexFrom 第一個迴歸目標的列索引(索引開始於0)
  • 引數 labelIndexTo 最後一個迴歸目標的列索引(包括)

classification

public Builder classification(int labelIndex, int numClasses)

 這個用於分類

  • 引數 labelIndex 標籤索引。列(從0開始索引)是一個整數的值,而且包括0 到 numClasses-1 的值
  • 引數 numClasses 標籤類別數量 (即資料集中的類別/類數)

preProcessor

public Builder preProcessor(DataSetPreProcessor preProcessor)

可選的引數。允許設定前處理器

  • 引數 preProcessor 是要使用的前處理器

collectMetaData

public Builder collectMetaData(boolean collectMetaData)

當設定為true時:當前示例的元資料將出現在返回的資料集中。預設情況下禁用。

  • 引數 collectMetaData 是否應該收集元資料

WorkspacesShieldDataSetIterator

[原始碼]

這個迭代器分離/遷移來自支援DataSetIterator的資料集,從而提供“安全”資料集。

這通常用於除錯和測試目的,一般不應該由使用者使用。

WorkspacesShieldDataSetIterator

public WorkspacesShieldDataSetIterator(@NonNull DataSetIterator iterator) 
  • 引數 iterator 用於分離值的底層迭代器

ExistingDataSetIterator

[原始碼]

ExistingDataSetIterator

public ExistingDataSetIterator(@NonNull Iterator<DataSet> iterator) 

注意,在使用此建構函式時,不支援重置。

  • 引數 iterator 用於包裝的迭代器

next

public DataSet next(int num) 

注意,在使用此建構函式時,不支援重置。

  • 引數 iterator 用於包裝的迭代器
  • 引數 labels 字串標籤。可能為空。

CombinedMultiDataSetPreProcessor

[原始碼]

組合構建器中按指定的順序應用的各種多資料集前處理器。

CombinedMultiDataSetPreProcessor

public Builder addPreProcessor(@NonNull MultiDataSetPreProcessor preProcessor)
  • 引數 preProcessor 要新增到要應用的前處理器列表中的前處理器

DataSetFetcher

[原始碼]

用於將資料集載入到記憶體中的低階介面。

這是由DataSetIterator程式用來處理記憶體中載入資料的細節。


AsyncDataSetIterator

[原始碼]

用於DataSetIterator實現的非同步預獲取迭代器包裝器。這將非同步地從基礎迭代器中預獲取指定數量的小批量。

還可以選擇(預設情況下對大多數建構函式啟用)使用迴圈工作間,以避免建立具有堆外記憶體的INDArrays,這些記憶體需要由JVM垃圾收集器清理。

注意,適當的DL4J fit方法會自動使用這個迭代器,因此使用者在擬合網路時不需要手動包裝迭代器。

AsyncDataSetIterator

public AsyncDataSetIterator(DataSetIterator baseIterator) 

建立一個預設佇列大小為8的非同步迭代器

  • 引數 baseIterator 底層迭代器用於非同步方式包裝和獲取

next

public DataSet next(int num) 

建立一個預設佇列大小為8的非同步迭代器

  • 引數 baseIterator 底層迭代器用於非同步方式包裝和獲取
  • 引數 queue 佇列大小

inputColumns

public int inputColumns() 

資料集的輸入列

  • return

totalOutcomes

public int totalOutcomes() 

資料集的標籤數量

  • return

resetSupported

public boolean resetSupported() 

這個DataSetIterator支援重置嗎?許多DataSetIterator支援重置,但有些不支援。

  • 如果支援重置方法,返回true;否則為false

asyncSupported

public boolean asyncSupported() 

這個DataSetIterator是否支援非同步預取多個DataSet物件?大多數DataSetIterator都可以,但是在某些情況下,將此迭代器包裝到執行非同步預取的迭代器中可能沒有意義。例如,對於以下型別的迭代器使用非同步預取是沒有意義的:(a)已經將它們的全部內容儲存在記憶體中的迭代器(b)重複使用特性/標籤陣列的迭代器(因為將來的next()呼叫將覆蓋過去的內容)(c)已經實現某種級別的非同步預取的迭代器(d)返回不同的資料的迭代器,取決於何時呼叫next()方法。

  • 如果來自此迭代器的非同步預取是可用的則返回true;如果非同步預取不應用於此迭代器,則返回false

reset

public void reset() 

將迭代器重置為開始。

shutdown

public void shutdown() 

我們希望確保,後臺執行緒將具有相同的執行緒->裝置類似,作為主執行緒。

batch

public int batch() 

批量大小

  • return

setPreProcessor

public void setPreProcessor(DataSetPreProcessor preProcessor) 

設定前處理器

  • 引數  preProcessor 要設定的前處理器

getPreProcessor

public DataSetPreProcessor getPreProcessor() 

返回前處理器,如果定義

  • return

hasNext

public boolean hasNext() 

如果迭代器具有更多元素,則返回true。(換句話說,如果下一個元素返回元素而不是丟擲異常,則返回true)。

  • 如果迭代器具有更多元素,則返回true

next

public DataSet next() 

返回迭代中的下一個元素。

  • 返回迭代中的下一個元素

remove

public void remove() 

從基礎集合中移除由迭代器返回的最後一個元素(可選操作)。在每次呼叫next後,這個方法只能被呼叫一次。在除了此方法之外的任何方法迭代過程中,如果底層集合被修改,則迭代器的行為將不被指定。

  • 丟擲  UnsupportedOperationException 如果remove操作不被這個迭代器支援
  • 丟擲 IllegalStateException 如果next方法如果沒有被呼叫,或remove在最後一次呼叫next方法之後已經被呼叫。
  • implSpec 預設的實現丟擲一個UnsupportedOperationException例項然後不執行任何操作。

FileSplitDataSetIterator

[原始碼]

與檔案列表一起工作的簡單的迭代器。檔案到DataSet轉換將通過提供的FileCallback實現來處理。

FileSplitDataSetIterator

public FileSplitDataSetIterator(@NonNull List<File> files, @NonNull FileCallback callback) 
  • 引數 files 用於迭代的檔案列表
  • 引數 callback 載入檔案的回撥

AsyncShieldMultiDataSetIterator

[原始碼]

此包裝器使用現有的MultiDataSetIterator實現,並防止非同步預取。

next

public MultiDataSet next(int num) 

獲取下“Num”個示例。類似於next方法,但返回指定數量的示例。

  • 引數 num 獲取示例數量

setPreProcessor

public void setPreProcessor(MultiDataSetPreProcessor preProcessor) 

在每個MultiDataSet返回之前,將前處理器設定到每個MultiDataSet。

  • 引數 preProcessor MultiDataSet的前處理器,可以為空。

resetSupported

public boolean resetSupported() 

這個DataSetIterator支援重置嗎?許多DataSetIterator支援重置,但有些不支援。

  • 如果支援重置方法,返回true;否則為false

asyncSupported

public boolean asyncSupported() 

這個DataSetIterator是否支援非同步預取多個DataSet物件?

請注意:這個迭代器總是返回false

  • 如果來自此迭代器的非同步預取是支援的返回true;如果非同步預取不應用於此迭代器,則返回false

reset

public void reset() 

將迭代器重置為開始狀態。

hasNext

public boolean hasNext() 

如果迭代器具有更多元素,則返回true。(換句話說,如果下一個元素返回元素而不是丟擲異常,則返回true)。

  • 如果迭代器具有更多元素,則返回true

next

public MultiDataSet next() 

在迭代中返回下一個元素

  • 在迭代中返回下一個元素

remove

public void remove() 

從基礎集合中移除由迭代器返回的最後一個元素(可選操作)。在每次呼叫next後,這個方法只能被呼叫一次。在除了此方法之外的任何方法迭代過程中,如果底層集合被修改,則迭代器的行為將不被指定。

  • 丟擲  UnsupportedOperationException 如果remove操作不被這個迭代器支援
  • 丟擲 IllegalStateException 如果next方法如果沒有被呼叫,或remove在最後一次呼叫next方法之後已經被呼叫。
  • implSpec 預設的實現丟擲一個UnsupportedOperationException例項然後不執行任何操作。

DataSetIteratorSplitter

[原始碼]

這個迭代器實際上將給定的MultiDataSetIterator分割成訓練和測試部分。也就是說,你有100000個例子。你的批量大小是32。這意味著你有3125個總批次。分割比例為0.7,這將給你2187個訓練批次,和938個測試批次。

請注意:你不能一行中使用測試迭代器兩次。訓練迭代器應該在測試迭代器使用之前被使用。

請注意:如果底層迭代器使用epoch間的隨機化/洗牌,則不能使用此迭代器。

DataSetIteratorSplitter

public DataSetIteratorSplitter(@NonNull DataSetIterator baseIterator, long totalBatches, double ratio) 

惟一的構造器

  • 引數 baseIterator - 要被包裝和分割的迭代器
  • 引數 totalBatches - 基礎迭代器中的總批次
  • 引數 ratio -訓練/測試 分割比例

getTrainIterator

public DataSetIterator getTrainIterator() 

此方法返回訓練迭代器例項。

  • return

next

public DataSet next(int i) 

此方法返回測試迭代器例項。

  • return

IteratorMultiDataSetIterator

[原始碼]

按要求獲取指定批次大小。

通常用於Spark訓練,但可用於其他地方。注意:這裡不支援重置方法。


EarlyTerminationMultiDataSetIterator

[原始碼]

建立一個迭代器,一旦小批量.next()返回的數量等於指定的數目這個迭代器即會終止。

注意,對.next(num)的呼叫被計數為返回小批量的呼叫,而不管num的值如何。這實際上將資料限制為這個小批量的指定數量。

EarlyTerminationMultiDataSetIterator

public EarlyTerminationMultiDataSetIterator(MultiDataSetIterator underlyingIterator, int terminationPoint) 

建構函式採用迭代器進行包裝,然後對hasNext()呼叫後返回false時的小批量。

  • 引數 underlyingIterator, 進行包裝的迭代器
  • 引數 terminationPoint,  在hasNext()被呼叫後會返回false時的小批量

DoublesDataSetIterator

[原始碼]

對的第一個值是特徵向量,對的第二個值是標籤。支援僅生成2D特徵/標籤

DoublesDataSetIterator

public DoublesDataSetIterator(@NonNull Iterable<Pair<double[], double[]>> iterable, int batchSize) 
  • 引數 iterable 來自源資料的迭代
  • 引數 batchSize 生成資料集物件的批處理大小

MultipleEpochsIterator

[原始碼]

用於在資料集上進行多次傳遞的資料集迭代器

使用 MultiLayerNetwork/ComputationGraph.fit(DataSetIterator, int numEpochs) 代替

next

public DataSet next(int num) 

類似於標準的next方法,但允許返回一個可定製數量的示例。

  • 引數 num 示例數量
  • 返回下一條資料

inputColumns

public int inputColumns() 

資料集的輸入列

  • return

totalOutcomes

public int totalOutcomes() 

資料集的標籤數量

  • return

reset

public void reset() 

將迭代器重置為開始。

batch

public int batch() 

批量大小

  • return

hasNext

public boolean hasNext() 

如果迭代器具有更多元素,則返回true。(換句話說,如果下一個元素返回元素而不是丟擲異常,則返回true)。

  • 如果迭代器具有更多元素,則返回true

remove

public void remove() 

從基礎集合中移除由迭代器返回的最後一個元素(可選操作)。在每次呼叫next後,這個方法只能被呼叫一次。在除了此方法之外的任何方法迭代過程中,如果底層集合被修改,則迭代器的行為將不被指定。

  • 丟擲  UnsupportedOperationException 如果remove操作不被這個迭代器支援
  • 丟擲 IllegalStateException 如果next方法如果沒有被呼叫,或remove在最後一次呼叫next方法之後已被呼叫。

INDArrayDataSetIterator

[source]

對的第一個值是特徵向量,對的第二個值是標籤。

INDArrayDataSetIterator

public INDArrayDataSetIterator(@NonNull Iterable<Pair<INDArray, INDArray>> iterable, int batchSize) 
  • 引數 iterable 來自源資料的迭代
  • 引數 batchSize 生成資料集物件的批處理大小

EarlyTerminationDataSetIterator

[原始碼]

建立一個迭代器,一旦小批量.next()返回的數量等於指定的數目這個迭代器即會終止。

注意,對.next(num)的呼叫被計數為返回小批量的呼叫,而不管num的值如何。這實際上將資料限制為這個小批量的指定數量。

EarlyTerminationDataSetIterator

public EarlyTerminationDataSetIterator(DataSetIterator underlyingIterator, int terminationPoint) 

建構函式採用迭代器進行包裝,然後對hasNext()呼叫後返回false時的小批量。

  • 引數 underlyingIterator, 進行包裝的迭代器
  • 引數 terminationPoint,  在hasNext()被呼叫後會返回false時的小批量

ReconstructionDataSetIterator

[原始碼]

包裝資料集迭代器,設定第一個(特徵矩陣)為標籤。

next

public DataSet next(int num) 

類似於標準的next方法,但允許返回一個可定製數量的示例。

  • 引數 num 示例數量
  • 返回下一條資料

inputColumns

public int inputColumns() 

資料集的輸入列

  • return

totalOutcomes

public int totalOutcomes() 

資料集的標籤數量

  • return

reset

public void reset() 

 重置迭代器到開始狀態

batch

public int batch() 

批量大小

  • return

hasNext

public boolean hasNext() 

如果迭代器具有更多元素,則返回true。(換句話說,如果下一個元素返回元素而不是丟擲異常,則返回true)。

  • 如果迭代器具有更多元素,則返回true

next

public DataSet next() 

 返回迭代中的下一個元素

  • 返回迭代中的下一個元素

remove

public void remove() 

從基礎集合中移除由迭代器返回的最後一個元素(可選操作)。在每次呼叫next後,這個方法只能被呼叫一次。在除了此方法之外的任何方法迭代過程中,如果底層集合被修改,則迭代器的行為將不被指定。

  • 丟擲  UnsupportedOperationException 如果remove操作不被這個迭代器支援
  • 丟擲 IllegalStateException 如果next方法如果沒有被呼叫,或remove在最後一次呼叫next方法之後已被呼叫。

JointMultiDataSetIterator

[原始碼]

這個資料集迭代器將多個DataSetIterators組合為1個MultiDataSetIterator。來自每個迭代器的值以每個示例為基礎進行連線——即,來自每個資料集的值被組合為用於多輸入神經網路的不同特徵陣列。標籤只能來自底層DataSetIteartor之一(如果outcome是>=0)或來自所有迭代器(如果outcome是<0)

JointMultiDataSetIterator

public JointMultiDataSetIterator(DataSetIterator... iterators) 
  • 引數 iterators 包裝過的基礎迭代器

next

public MultiDataSet next(int num) 

類似於標準的next方法,但允許返回一個可定製數量的示例。

  • 引數 num 示例數量
  • 返回下一條資料

setPreProcessor

public void setPreProcessor(MultiDataSetPreProcessor preProcessor) 

在每個MultiDataSet返回之前,將前處理器設定到每個MultiDataSet。

  • 引數 preProcessor MultiDataSet的前處理器,可以為空。

getPreProcessor

public MultiDataSetPreProcessor getPreProcessor() 

如果先前設定了MultiDataSetPreProcessor,則獲取MultiDataSetPreProcessor。如果未設定前處理器,則返回NULL

  • 返回 Preprocessor

resetSupported

public boolean resetSupported() 

這個DataSetIterator支援重置嗎?許多DataSetIterator支援重置,但有些不支援。

  • 如果支援重置方法,返回true;否則為false 

asyncSupported

public boolean asyncSupported() 

這個MultiDataSetIterator是否支援非同步預取多個MultiDataSet物件?大多數MultiDataSetIterators都可以,但是在某些情況下,將此迭代器包裝到執行非同步預取的迭代器中可能沒有意義。例如,對於以下型別的迭代器使用非同步預取是沒有意義的:(a)已經將它們的全部內容儲存在記憶體中的迭代器(b)重複使用特性/標籤陣列的迭代器(因為將來的next()呼叫將覆蓋過去的內容)(c)已經實現某種級別的非同步預取的迭代器(d)返回不同的資料的迭代器,取決於何時呼叫next()方法。

  • 如果來自此迭代器的非同步預取是可用的則返回true;如果非同步預取不應用於此迭代器,則返回false

reset

public void reset() 

將迭代器重置為開始。

hasNext

public boolean hasNext() 

如果迭代器具有更多元素,則返回true。(換句話說,如果下一個元素返回元素而不是丟擲異常,則返回true)。

  • 如果迭代器具有更多元素,則返回true

next

public MultiDataSet next() 

 返回迭代中的下一個元素

  • 返回迭代中的下一個元素

remove

public void remove() 

請注意:此方法未實現。

  • 丟擲  UnsupportedOperationException 如果remove操作不被這個迭代器支援
  • 丟擲 IllegalStateException 如果next方法如果沒有被呼叫,或remove在最後一次呼叫next方法之後已經被呼叫。
  • implSpec 預設的實現丟擲一個UnsupportedOperationException例項然後不執行任何操作。

SamplingDataSetIterator (取樣資料集迭代器)

[原始碼]

用於從DataSet中取樣的包裝器。這將從給定的資料集隨機取樣。

SamplingDataSetIterator

public SamplingDataSetIterator(DataSet sampleFrom, int batchSize, int totalNumberSamples) 

RandomMultiDataSetIterator

[原始碼]

RandomMultiDataSetIterator:根據某些分佈生成隨機值(或零值、整數、整數等)。

注意:這通常用於測試、除錯和基準測試的目的。

RandomMultiDataSetIterator

public RandomMultiDataSetIterator(int numMiniBatches, @NonNull List<Triple<long[], Character, Values>> features, @NonNull List<Triple<long[], Character, Values>> labels)
  • 引數 numMiniBatches 每一個epoch小批量的數量
  • 引數 features 列表中的每一個三元組指定特徵陣列的形狀、陣列順序和值型別。
  • 引數 labels 列表中的每一個三元組指定標籤陣列的形狀、陣列順序和值型別。

addFeatures

public Builder addFeatures(long[] shape, Values values) 
  • 引數 numMiniBatches 每一個epoch小批量的數量

addFeatures

public Builder addFeatures(long[] shape, char order, Values values)

新增一個新的特徵陣列到迭代器

  • 引數 shape特徵形狀
  • 引數 order 陣列的順序(c或f)
  • 引數 values 填充陣列的值

addLabels

public Builder addLabels(long[] shape, Values values) 

新增一個新的標籤陣列到迭代器

  • 引數 shape標籤形狀
  • 引數 values 填充陣列的值

addLabels

public Builder addLabels(long[] shape, char order, Values values)

新增一個新的標籤陣列到迭代器

  • 引數 shape標籤形狀
  • 引數 order 陣列的順序(c或f)
  • 引數 values 填充陣列的值

generate

public static INDArray generate(long[] shape, Values values) 

生成具有指定形狀的隨機陣列

  • 引數 shape陣列形狀
  • 引數 values 填充陣列的值
  • 返回指定形狀+內容的隨機陣列

generate

public static INDArray generate(long[] shape, char order, Values values)

生成具有指定形狀和順序的隨機陣列

  • 引數 shape陣列形狀
  • 引數 order 陣列的順序(c或f)
  • 引數 values 填充陣列的值
  • 返回指定形狀+內容的隨機陣列

MultiDataSetWrapperIterator

[原始碼]

這個類是簡單的包裝器,它採用單輸入MultiDataSet並將它們轉換為DataSet。

請注意:只有當特徵/標籤/掩碼數量為1時才有效。

MultiDataSetWrapperIterator

public MultiDataSetWrapperIterator(MultiDataSetIterator iterator) 
  • 引數 iterator 進行包裝的迭代器

AsyncShieldDataSetIterator

[原始碼]

此包裝器使用你現有的DataSetIterator實現並防止非同步預取。這主要用於除錯目的;通常情況下迭代器對非同步預取是不安全的。

AsyncShieldDataSetIterator

public AsyncShieldDataSetIterator(@NonNull DataSetIterator iterator) 
  • 引數 iterator進行包裝的迭代器,禁用非同步預取

next

public DataSet next(int num) 

類似於標準的next方法,但允許返回一個可定製數量的示例。

  • 引數 num 示例數量
  • 返回下一條資料

inputColumns

public int inputColumns() 

資料集的輸入列

  • return

totalOutcomes

public int totalOutcomes() 

資料集的標籤數量

  • return

resetSupported

public boolean resetSupported() 

這個DataSetIterator支援重置嗎?許多DataSetIterator支援重置,但有些不支援。

  • 如果支援重置方法,返回true;否則為false

asyncSupported

public boolean asyncSupported() 

這個DataSetIterator是否支援非同步預取多個DataSet物件?

請注意:這個迭代器總是返回false

  • 如果來自此迭代器的非同步預取是支援的返回true;如果非同步預取不應用於此迭代器,則返回false

reset

public void reset() 

將迭代器重置為開始狀態。

batch

public int batch() 

批量大小

  • return

setPreProcessor

public void setPreProcessor(DataSetPreProcessor preProcessor) 

設定一個前處理器

  • 引數 preProcessor 一個用於設定的前處理器

getPreProcessor

public DataSetPreProcessor getPreProcessor() 

如果已定義,返回一個前處理器。

  • return

hasNext

public boolean hasNext() 

獲取資料集迭代記錄讀取器標籤

next

public DataSet next() 

返回迭代中下一個元素

  • 返回迭代中下一個元素

remove

public void remove() 

從基礎集合中移除由迭代器返回的最後一個元素(可選操作)。在每次呼叫next後,這個方法只能被呼叫一次。在除了此方法之外的任何方法迭代過程中,如果底層集合被修改,則迭代器的行為將不被指定。

  • 丟擲  UnsupportedOperationException 如果remove操作不被這個迭代器支援
  • 丟擲 IllegalStateException 如果next方法如果沒有被呼叫,或remove在最後一次呼叫next方法之後已經被呼叫。
  • implSpec 預設的實現丟擲一個UnsupportedOperationException例項然後不執行任何操作。

IteratorDataSetIterator

[原始碼]

要求獲取指定批次大小。

通常用於Spark訓練,但可用於其他地方。

注意:這裡不支援重置方法。


FloatsDataSetIterator

[原始碼]

對的第一個值是特徵向量,對的第二個值是標籤。僅支援生成2D特徵/標籤

FloatsDataSetIterator

public FloatsDataSetIterator(@NonNull Iterable<Pair<float[], float[]>> iterable, int batchSize) 
  • 引數 iterable 來自源資料的迭代
  • 引數 batchSize 生成資料集物件的批處理大小

CombinedPreProcessor

[原始碼]

這是一個特殊的前處理器,它允許組合多個前處理器,並按它們順序應用到資料中。

CombinedPreProcessor

public CombinedPreProcessor build() 

按順序預處理資料集

  • 引數 toPreProcess 預處理的資料集

RandomDataSetIterator

[原始碼]

RandomDataSetIterator:根據某些分佈生成隨機值(或零值、整數、整數等)。

注意:這通常用於測試、除錯和基準測試的目的。

RandomDataSetIterator

public RandomDataSetIterator(int numMiniBatches, long[] featuresShape, long[] labelsShape, Values featureValues, Values labelValues)
  • 引數 numMiniBatches 每個epoch的小批量大小
  • 引數 featuresShape  特徵形狀
  • 引數 labelsShape 標籤形狀
  • 引數 featureValues 特徵值型別
  • 引數 labelValues 檢籤值型別

BaseDatasetIterator

[原始碼]

基線實現,包括對資料獲取器和元資料的一些基本getters的控制。


DummyPreProcessor

[原始碼]

這是一個特殊的虛擬前處理器,它什麼也不做。

preProcess

public void preProcess(DataSet toPreProcess) 

預處理資料集

  • 引數 toPreProcess 用於預處理的資料集

MultiDataSetIteratorSplitter

[原始碼]

這個迭代器實際上將給定的多資料報器分割成訓練和測試部分。也就是說,你有100000個例子。你的批量是32。這意味著你有3125個總批次。分割比例0.7,這將給你2187個訓練批次,和938個測試批次。

請注意:你不能在一行中使用測試迭代器兩次。在測試迭代器使用之前使用訓練迭代器。

請注意:如果底層迭代器在epoch之間使用隨機化/洗牌,則不能使用此迭代器。

MultiDataSetIteratorSplitter

public MultiDataSetIteratorSplitter(@NonNull MultiDataSetIterator baseIterator, long totalBatches, double ratio) 
  • 引數 baseIterator - 要被包裝和分割的迭代器
  • 引數 totalBatches - 基礎迭代器中的批次總數。此值將用於確定測試/訓練批次的數量。
  • 引數 ratio -此值將用作分割器。應介於0>x<1之間。也就是說,如果提供值0.7,那麼總示例的70%將用於訓練,總示例的30%將用於測試

getTrainIterator

public MultiDataSetIterator getTrainIterator() 

此方法返回訓練迭代器例項。

  • return

next

public MultiDataSet next(int num) 

類似於標準的next方法,但允許返回一個可定製數量的示例。

  • 引數 num 示例數量
  • 返回下一條資料

AsyncMultiDataSetIterator

[原始碼]

用於MultiDataSetIterator實現的非同步預獲取迭代器包裝器。這將非同步地從基礎迭代器中預獲取指定數量的小批量。

還可以選擇(預設情況下對大多數建構函式啟用)使用迴圈工作間,以避免建立具有堆外記憶體的INDArrays,這些記憶體需要由JVM垃圾收集器清理。

注意,適當的DL4J fit方法會自動使用這個迭代器,因此使用者在擬合網路時不需要手動包裝迭代器。

next

public MultiDataSet next(int num) 

類似於標準的next方法,但允許返回一個可定製數量的示例。

  • 引數 num 示例數量
  • 返回下一條資料

setPreProcessor

public void setPreProcessor(MultiDataSetPreProcessor preProcessor) 

在每個MultiDataSet返回之前,將前處理器設定到每個MultiDataSet。

  • 引數 preProcessor MultiDataSet的前處理器,可以為空。

resetSupported

public boolean resetSupported() 

這個DataSetIterator支援重置嗎?許多DataSetIterator支援重置,但有些不支援。

  • 如果支援重置方法,返回true;否則為false 

asyncSupported

public boolean asyncSupported() 

這個DataSetIterator是否支援非同步預取多個DataSet物件?大多數DataSetIterator都可以,但是在某些情況下,將此迭代器包裝到執行非同步預取的迭代器中可能沒有意義。例如,對於以下型別的迭代器使用非同步預取是沒有意義的:(a)已經將它們的全部內容儲存在記憶體中的迭代器(b)重複使用特性/標籤陣列的迭代器(因為將來的next()呼叫將覆蓋過去的內容)(c)已經實現某種級別的非同步預取的迭代器(d)返回不同的資料的迭代器,取決於何時呼叫next()方法。

  • 如果來自此迭代器的非同步預取是可用的則返回true;如果非同步預取不應用於此迭代器,則返回false

reset

public void reset() 

將迭代器重置為開始。

shutdown

public void shutdown() 

我們希望確保,後臺執行緒將具有相同的執行緒->裝置類似,作為主執行緒。

hasNext

public boolean hasNex