Deeplearning4j
Community ForumND4J JavadocDL4J Javadoc
ZH 1.0.0-beta6
ZH 1.0.0-beta6
  • 核心概念
  • 开始
    • 快速入门
    • 速查表
    • 示例教程
    • 初学者
    • Eclipse贡献者
    • 从源码构建
    • 贡献
    • 基准测试准则
    • 关于
    • 发行说明
  • 配置
    • GPU/CPU设置
    • CPU 与 AVX
    • 内存管理
    • Maven
    • SBT/Gradle和其它构建工具
    • cuDNN
    • 快照
    • 内存工作间
  • ND4J
    • 快速入门
    • 概述
  • SAMEDIFF
    • 变量
    • 操作
    • 添加操作
  • 调优与训练
    • 故障排查
    • 可视化
    • 评估
    • 迁移学习
    • 早停
    • T-SNE数据可视化
  • 分布式深度学习
    • 介绍与入门
    • 在Spark上使用DL4J:操作指南
    • 技术说明
    • Spark数据管道指南
    • API参考
    • 参数服务器
  • Keras导入
    • 概述
    • 入门
    • 支持功能
      • 正则化器
      • 损失
      • 初始化器
      • 约束
      • 激活
      • 优化器
    • Functional模型
    • Sequential模型
  • ARBITER
    • 概述
    • 层空间
    • 参数空间
  • DATAVEC
    • 概述
    • 记录
    • 概要
    • 序列化
    • 转换
    • 分析
    • 读取器
    • 执行器
    • 过滤器
    • 运算
  • 语言处理
    • 概述
    • Word2Vec
    • Doc2Vec
    • SentenceIterator
    • Tokenization
    • Vocabulary Cache
  • 模型
    • 计算图
    • 多层网络
    • 循环神经网络
    • 层
    • 顶点
    • 迭代器
    • 监听器
    • 自定义层
    • 模型持久化
    • 动物园用法
    • 激活
    • 更新器
  • 移动端
    • Android概述
    • Android先决条件
    • Android分类器
    • Android图片分类器
  • FAQ
  • 新闻
  • 支持
  • 为什么要深度学习?
Powered by GitBook
On this page
  • 关于DL4J模型动物园
  • 入门
  • 初始化新配置
  • 初始化预先训练的权值
  • 动物园里有什么?
  • 高级用法
  • 改变输入
  • 迁移学习
  • 工作间

Was this helpful?

Edit on Git
Export as PDF
  1. 模型

动物园用法

为开箱即用应用程序预先构建的模型架构和权重。

关于DL4J模型动物园

DL4J具有可直接从DL4J访问和实例化的本地模型动物园。模型动物园还包括用于不同数据集的预训练权重,这些数据集是自动下载的,并使用校验总和机制检查完整性。

如果你想使用新的模型动物园,你需要添加它作为依赖项。Maven POM将添加以下内容:

<dependency>
    <groupId>org.deeplearning4j</groupId>
    <artifactId>deeplearning4j-zoo</artifactId>
    <version>1.0.0-beta6</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。

这包括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});

迁移学习

工作间

Previous模型持久化Next激活

Last updated 5 years ago

Was this helpful?

你可以使用这个找到一个完整的模型列表。

预先训练的模型对于迁移学习来说是完美的!你可以在阅读更多关于迁移学习的内容。

初始化方法通常有一个名为“workspaceMode”的附加参数。对于大多数用户来说,你不需要使用它;但是,如果你有一台具有“健壮”规范的大型机器,则可以为具有数百万参数的模型传递WorkspaceMode.SINGLE ,如VGG-19。要了解更多关于工作间的内容,请参阅。

deeplearning4j-zoo
AlexNet
Darknet19
FaceNetNN4Small2
InceptionResNetV1
LeNet
ResNet50
SimpleCNN
TextGenerationLSTM
TinyYOLO
VGG16
VGG19
这里
本节