1. 程式人生 > >DL4J中文文件/模型/自定義層

DL4J中文文件/模型/自定義層

編寫自定義層

有兩個元件可新增自定義層:

  1. 新增層配置類: 擴充套件 org.deeplearning4j.nn.conf.layers.Layer
  2. 新增層實現類: 實現 org.deeplearning4j.nn.api.Layer

配置層(以上(1))類處理設定。這是你在構建多層網路或計算圖時所使用的方法。你可以在這裡新增自定義設定,並在你的圖層中使用這些設定。

實現層(以上(2))類具有引數,並處理網路前向傳播、反向傳播等。它是從org.deeplearning4j.nn.conf.layers.Layer.instantiate(…)方法建立的。換句話說:instanceiate方法是我們從配置到實現的方式;MultiLayerNetwork或ComputationGraph在初始化的時候呼叫。

其中的一個例子是CustomLayer(配置類)和CustomLayerImpl(實現類)。這兩類都對它們的方法有廣泛的註釋。

你將注意到,在DL4J中有兩個DenseLayer 類 、兩個GravesLSTM類等:原因在於一個用於配置,一個用於實現。我們沒有遵循這個“同名”模式,希望避免混淆。

測試自定義層

一旦添加了自定義層,就需要執行一些測試來確保它是正確的。

這些測試至少應包括以下內容:

  1. 測試以確保JSON配置(到/從JSON)正常工作,這對於你的自定義層與模型序列化(儲存)和Spark訓練都起作用的網路來說是必要的。
  2. 梯度檢查,以確保執行是正確的。

示例

我們提供了一個完整的自定義層示例。在我們的 示例倉庫  中。