1. 程式人生 > >DL4J中文文件/模型/監聽器

DL4J中文文件/模型/監聽器

什麼是監聽器?

監聽器允許使用者在Eclipse DL4J中“掛鉤”到某些事件中。這允許你收集或列印對訓練等任務有用的資訊。例如,一個ScoreIterationListener允許你從神經網路的輸出層列印訓練分數。

用法

要將一個或多個監聽器新增到一個多層網路或計算圖中,請使用addListener方法:

MultiLayerNetwork model = new MultiLayerNetwork(conf);
model.init();
//列印每次迭代的分數
model.setListeners(new ScoreIterationListener(1));

可用的監聽器


EvaluativeListener (評估監聽器)

[原始碼]

該訓練監聽器的實現為訓練過程中的模型評估提供了簡單的方法。它可以按每個第X次迭代被啟動,這取決於頻率和呼叫型別建構函式引數。

EvaluativeListener

public EvaluativeListener(@NonNull DataSetIterator iterator, int frequency) 

此回撥將在完成評估後呼叫。

iterationDone

public void iterationDone(Model model, int iteration, int epoch) 
  • 引數 iterator 為評估提供資料的迭代器
  • 引數 frequency 頻率(根據呼叫型別的迭代次數)執行評估
  • 引數 type “頻率”的值型別-迭代結束等

TimeIterationListener (時間迭代監聽器)

[原始碼]

時間迭代監聽器。這個監聽器顯示資訊按分鐘記錄剩餘的時間和程序結束的日期。剩餘時間由訓練的時間量和使用者指定的迭代次數來估計。

TimeIterationListener

public TimeIterationListener(int iterationCount) 

構造器

  • 引數 iterationCount 訓練的迭代次數

CheckpointListener(檢查點監聽器)

[原始碼]

CheckpointListener: 這個監聽器的目標是週期性地在訓練期間儲存模型的副本。
模型可以按如下方式被儲存:

  1. 每 N 次epoch
  2. 每 N 次迭代
  3. 每個T時間單位(例如每15分鐘)或者3者的某種結合。


    例 1: 每隔2個epoch儲存一個檢查點,儲存所有模型檔案
.keepAll() //不要刪除任何模型
.saveEveryNEpochs(2)
.build()
}


例 2: 每1000次迭代儲存一個檢查點,但是隻保留最後3個模型(所有舊模型檔案都將自動刪除)

.keepLast(3)
.saveEveryNIterations(1000)
.build();
}


例 3: 每隔15分鐘儲存一個檢查點,儲存最新的3個,不然儲存每第四個檢查點檔案:

.keepLastAndEvery(3, 4)
.saveEvery(15, TimeUnit.MINUTES)
.build();
}

 

注意,你可以混合這些:例如,每一個epoch和每15分鐘進行儲存(獨立於最後的儲存時間):

每一個epoch進行儲存,每15分鐘,從最後一個模型儲存使用:

注意,這是最後一個例子,sinceLast引數是true。這意味著在儲存模型時,15分鐘計數器將在任何時間被重置。

CheckpointListener

public CheckpointListener build()

列出所有可用的檢查點。如果檔案可以載入,則檢查點為“可用”。任何已被自動刪除的檢查點檔案(給定配置)將不在這裡返回。

  • 返回可被載入的檢查點檔案列表

ScoreIterationListener (分數迭代監聽器)

[原始碼]

分數迭代監聽器。在每N次迭代訓練時報告網路的得分(損失函式的值)

ScoreIterationListener

public ScoreIterationListener(int printIterations) 
  • 引數 printIterations 列印分數的頻率 (即 每個 printIterations 引數更新)

ParamAndGradientIterationListener (對數與梯度迭代監聽器)

[原始碼]

在每次迭代期間提供關於引數和梯度的細節的迭代監聽器。嘗試提供與UI直方圖迭代監聽器大致相同的資訊,但採用基於文字的格式(例如,當學習通過SSH訪問的系統時,等等)。即,旨在幫助網路調整和除錯。

該迭代監聽器被設定為計算網路中每種型別的引數和梯度在每次迭代時的平均值、最小值、最大值和平均絕對值。


SleepyTrainingListener(休睡訓練監聽器)

[原始碼]

這種訓練監聽器的實現提供了一種在特定神經網路訓練階段中“睡眠”的方法。

適合除錯或測試的目的。

請注意:所有計時器都將時間值視為毫秒。請注意:不要在生產環境中使用。

onEpochStart

public void onEpochStart(Model model) 

在這種模式下,將使用parkNanos()呼叫,使程序真正空閒。


ComposableIterationListener (組合迭代監聽器)

[原始碼]

一組監聽器


SharedGradient (共享梯度)

[原始碼]


CollectScoresIterationListener (分數收集迭代監聽器)

[原始碼]

CollectScoresIterationListener只是每1或N次迭代在內部(連同迭代)儲存模型分數(這是可配置的)。然後可以獲得或匯出這些分數。

CollectScoresIterationListener

public CollectScoresIterationListener() 

以預設儲存頻率為1收集分數的建構函式

iterationDone

public void iterationDone(Model model, int iteration, int epoch) 

以指定頻率收集分數的建構函式

  • 引數 frequency 用以收集/儲存分數的頻率

exportScores

public void exportScores(OutputStream outputStream) throws IOException 

以製表符分割(每行一個)的 UTF-8格式匯出分數。

exportScores

public void exportScores(OutputStream outputStream, String delimiter) throws IOException 

以自定義分割符(每行一個)的 UTF-8格式匯出分數。

  • 引數 outputStream 用於寫入的流
  • 引數 delimiter 使用的分割符

exportScores

public void exportScores(File file) throws IOException 

以製表符分割(每行一個)的 UTF-8格式匯出分數。

  • 引數  file 用於寫入的檔案 

exportScores

public void exportScores(File file, String delimiter) throws IOException 

使用指定的分割符將分值匯出到檔案中,按分割的(每行一行)UTF-8格式。

  • 引數 file 用於寫入的檔案
  • 引數 delimiter 用於寫分數的分割符

CollectScoresListener (分數收集監聽器)

[原始碼]

一個簡單的監聽器,每N次迭代將分數收集到一個列表中。也可以選擇記錄分數。


Checkpoint (檢查點)

[原始碼]


PerformanceListener (效能監聽器)

[原始碼]

的迭代監聽器,它跟蹤每次迭代的訓練花費時間。

PerformanceListener

public PerformanceListener build() 

此方法定義,迭代數應是否與其他資料一起報告。

  • 引數 reportIteration
  • return