DL4J: Keras模型导入
Keras模型导入为导入最初用Keras配置和训练的神经网络模型提供了例程,Keras是一个流行的Python深度学习库。
一旦你的模型导入到DL4J,我们的整个生产栈是由你来处理的。我们支持导入所有的Keras模型类型、大多数层和几乎所有的实用功能。请在这里查看支持的Keras特性的完整列表。
入门:在60秒内导入一个Keras模型
要导入Keras模型,首先需要创建和序列化这样的模型。这里有一个你可以使用的简单例子。该模型是一个简单的MLP,它采用长度为100的小批量向量,具有两个密集层,并预测总共10个类别。在定义模型之后,我们将其序列化为HDF5格式。
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))
model.compile(loss='categorical_crossentropy',optimizer='sgd', metrics=['accuracy'])
model.save('simple_mlp.h5')
如果将这个模型文件(simple_mlp.h5
)放到项目的资源文件夹的根目录中,则可以将Keras模型加载为DL4J 的 MultiLayerNetwork,如下所示
String simpleMlp = new ClassPathResource("simple_mlp.h5").getFile().getPath();
MultiLayerNetwork model = KerasModelImport.importKerasSequentialModelAndWeights(simpleMlp);
就是这样!KerasModelImport是模型导入的主要入口点,类负责在内部将Keras映射到DL4J概念。作为用户,你只需要提供你的模型文件,请参阅我们的入门指南,以了解将Keras模型加载到DL4J中的更多细节和选项。
现在可以使用导入的模型进行推断(这里使用简单的数据来简化)
INDArray input = Nd4j.create(256, 100);
INDArray output = model.output(input);
以下是你如何在DL4J中为你导入的模型做训练:
model.fit(input, output);
在我们的DL4J示例中可以找到刚才所示的完整示例。
项目设置
要在现有项目中使用Keras模型导入,只需要将下列依赖项添加到pom.xml中。
<dependency>
<groupId>org.deeplearning4j</groupId>
<artifactId>deeplearning4j-modelimport</artifactId>
<version>1.0.0-beta</version> // 此版本应与其他DL4J项目依赖项匹配。
</dependency>
如果首先需要开始一个项目,请考虑克隆DL4J示例,并按照仓库中的说明来构建项目。
流行的模型与应用
We support import for a growing number of applications, check here for a full list of currently covered models. These applications include
我们支持为越来越多的应用程序导入,在这里查看当前所覆盖的模型的完整列表。这些应用包括
- Deep convolutional and Wasserstein GANs
- UNET
- ResNet50
- SqueezeNet
- MobileNet
- Inception
- Xception
故障排除与支持
IncompatibleKerasConfigurationException
信息说明你正在尝试导入一个当前不被DL4J支持的Keras模型(要么因为模型导入不覆盖它,要么DL4J不实现该层或特征)。
一旦导入了模型,我们就推荐我们自己的“ModelSerializer
”类来进一步保存和重新加载模型。
你可以通过访问DL4J gitter频道进一步咨询。你可能会考虑通过Github来提交一个特性请求,这样这个缺失的功能可以放在DL4J开发路线图上,或者甚至向我们发送一个带有必要更改的pull请求!
为什么需要Keras模型导入?
Keras是用Python编写的一个流行的、用户友好的深度学习库。Keras的直观API使得Python轻松地定义和运行你的深度学习模型。Keras允许你选择它在哪个底层库上运行,但是为每个这样的后端提供了统一的API。目前,Keras支持Tensorflow、CNTK和Theano后端,但是Skymind也在为Keras开发ND4J后端。
一个公司的生产系统和它的数据科学家的实验设置之间经常有差距。Keras模型导入允许数据科学家用Python编写他们的模型,但是仍然与生产栈无缝集成。
Keras模型导入主要针对在Python中熟悉用Keras编写模型的用户。通过模型导入,你可以通过允许用户将模型导入DL4J生态圈以进行进一步的训练或评估,从而将Python模型带到生产中。
当项目的试验阶段完成并且需要将模型交付生产时,你应该使用这个模块。Skymind商业支持Keras在企业中的实现。