1. 程式人生 > >DL4J中文文件/模型/動物園用法

DL4J中文文件/模型/動物園用法

關於DL4J模型動物園

DL4J具有可直接從DL4J訪問和例項化的本地模型動物園。模型動物園還包括用於不同資料集的預訓練權重,這些資料集是自動下載的,並使用校驗總和機制檢查完整性。

如果你想使用新的模型動物園,你需要新增它作為依賴項。Maven POM將新增以下內容:

<dependency>
    <groupId>org.deeplearning4j</groupId>
    <artifactId>deeplearning4j-zoo</artifactId>
    <version>1.0.0-beta3</version>
</dependency>

入門

一旦你成功地將動物園依賴項新增到專案中,就可以開始匯入和使用模型。每一個模型擴充套件了ZooModel抽象類,並使用了InstantiableModel介面。這些類提供了幫助你初始化空的、新的網路或預先訓練的網路的方法。

初始化新配置

你可以使用.init()方法立即從動物園例項化一個模型。例如,如果要例項化一個新的未經訓練的AlexNet網路,可以使用以下程式碼:

import org.deeplearning4j.zoo.model.AlexNet
import org.deeplearning4j.zoo.*;

...

int numberOfClassesInYourData = 1000;
int randomSeed = 123;
int iterations = 1; // 這幾乎總是1。

ZooModel zooModel = new AlexNet(numberOfClassesInYourData, randomSeed, iterations);
Model net = zooModel.init();

如果希望調優引數或更改優化演算法,可以獲得對底層網路配置的引用:

ZooModel zooModel = new AlexNet(numberOfClassesInYourData, randomSeed, iterations);
MultiLayerConfiguration net = zooModel.conf();

初始化預先訓練的權值

一些模型具有可用的預訓練權重,並且少量模型跨不同的資料集進行預訓練。PretrainedType是概述不同權重型別的列舉器,包括IMAGENET、MNIST、CIFAR10和VGGFACE。

例如,你可以初始化VGG-16模型,使用ImageNet的權重,例如:

import org.deeplearning4j.zoo.model.VGG16;
import org.deeplearning4j.zoo.*;

...

ZooModel zooModel = new VGG16();
Model net = zooModel.initPretrained(PretrainedType.IMAGENET);

並用VGGFace訓練的權值初始化另一個VGG16模型:

ZooModel zooModel = new VGG16();
Model net = zooModel.initPretrained(PretrainedType.VGGFACE);

如果不確定模型是否包含預訓練權重,可以使用返回布林值的.pretrainedAvailable()方法。簡單地將一個PretrainedType列舉傳遞給這個方法,如果權重可用,它將返回true。

注意,對於卷積模型,輸入形狀資訊遵循NCHW約定。因此,如果模型的輸入形狀預設值是 new int[]{3, 224, 224},則意味著該模型具有3個通道和高度/寬度為224。

動物園裡有什麼?

模型動物園帶有在深入學習社群著名的影象識別配置。動物園還包括一個用於文字生成的LSTM,以及一個用於一般影象識別的簡單CNN。

你可以使用這個deeplearning4j-zoo找到一個完整的模型列表。

這包括ImageNet模型,如VGG-16, ResNet-50, AlexNet, Inception-ResNet-v1, LeNet等。

高階用法

如果你想在不同的用例中使用這些模型,動物園還有幾個附加的特徵。

改變輸入

除了將某些配置資訊傳遞給動物園模型的建構函式之外,還可以使用.setInputShape()更改其輸入形狀。注意:這隻適用於新的配置,並且不會影響預先訓練的模型:

ZooModel zooModel = new ResNet50(10, 123, 1);
zooModel.setInputShape(new int[]{3,28,28});

遷移學習

預先訓練的模型對於遷移學習來說是完美的!你可以在這裡閱讀更多關於遷移學習的內容。

工作間

初始化方法通常有一個名為“workspaceMode”的附加引數。對於大多數使用者來說,你不需要使用它;但是,如果你有一臺具有“健壯”規範的大型機器,則可以為具有數百萬引數的模型傳遞WorkspaceMode.SINGLE ,如VGG-19。要了解更多關於工作間的內容,請參閱本節