在Deeplearning4j中加载keras模型时出错-Java

Jeya Kumar |

我在python keras中训练了我的模型。我正在尝试将其加载到Java代码中,但出现以下错误如何解决此问题。

参考:

https://towardsdatascience.com/deploying-keras-deep-learning-models-with-java-62d80464f34a

https://deeplearning4j.konduit.ai/keras-import/overview

Exception in thread "main" org.deeplearning4j.nn.modelimport.keras.exceptions.InvalidKerasConfigurationException: Model class name must be Sequential (found Model). For more information, see http://deeplearning4j.org/docs/latest/keras-import-overview
    at org.deeplearning4j.nn.modelimport.keras.KerasSequentialModel.<init>(KerasSequentialModel.java:90)
    at org.deeplearning4j.nn.modelimport.keras.KerasSequentialModel.<init>(KerasSequentialModel.java:57)
    at org.deeplearning4j.nn.modelimport.keras.utils.KerasModelBuilder.buildSequential(KerasModelBuilder.java:322)
    at org.deeplearning4j.nn.modelimport.keras.KerasModelImport.importKerasSequentialModelAndWeights(KerasModelImport.java:223)
    at Jktes.jk(Jktes.java:24)
    at Jktes.main(Jktes.java:13)

码:

public static void jk()
    throws IOException, InvalidKerasConfigurationException, UnsupportedKerasConfigurationException {

    String simpleMlp = new ClassPathResource(
        "randomjk.h5").getFile().getPath();
    MultiLayerNetwork model = KerasModelImport.
        importKerasSequentialModelAndWeights(simpleMlp);

}

依赖关系:

<dependency>
    <groupId>org.nd4j</groupId>
    <artifactId>nd4j-native-platform</artifactId>
    <version>1.0.0-beta6</version>
</dependency>
<dependency>
    <groupId>org.deeplearning4j</groupId>
    <artifactId>deeplearning4j-modelimport</artifactId>
    <version>1.0.0-beta6</version>
</dependency>
<dependency>
    <groupId>org.deeplearning4j</groupId>
    <artifactId>deeplearning4j-core</artifactId>
    <version>0.9.1</version>
</dependency>

我的python-3.6导入:

import datetime
import keras.backend as K
import matplotlib.pyplot as plt
import numpy as np
import os
import pandas as pd
import statistics
import sys
import tensorflow as tf
import uuid

from IPython.display import display, FileLink

from keras.layers import Activation, BatchNormalization, Conv2D, Dense, Dropout, Flatten, Input, Lambda, MaxPooling2D
from keras.models import Model, Sequential, load_model
from keras.optimizers import Adam, SGD

我如何在python中保存:

model_name_jk = "model_name_jk"
hyper['uuid'] = model_name_jk
stamp('%.1f%% (%.1f%% training) %s' % (test_accuracy, train_accuracy, hyper))
model.save('saved_models/%s.h5' % hyper['uuid'])

我如何在python中创建模型:

hyper['dropout'] = 0.5
model_size = 'L'
if model_size == 'S':
    hyper['conv_filters'] = [32, 64]
    hyper['pool_size'] = (8, 8)
elif model_size == 'M':
    hyper['conv_filters'] = [32, 64, 128]
    hyper['pool_size'] = (4, 4)
else:
    hyper['conv_filters'] = [32, 64, 128, 256, 512]
    hyper['pool_size'] = (2, 2)
hyper['batch_normalization'] = True
hyper['dense_units'] = [6144]
hyper['share_per_character_weights'] = False
hyper['post_shared_dense'] = False
hyper['batch_normalization'] = True

def create_per_character_model(activation):
    inputs = Input(shape=(hyper['charset_len'],))
    x = Dense(hyper['charset_len'], activation='softmax')(inputs)
    return Model(inputs, x, name='char_model')

def create_model():
    x = Input(shape=(hyper['image_height'], hyper['image_width'], 1), name='input')
    image_input = x

    # Shared convolutional layers
    for layer, filters in enumerate(hyper['conv_filters']):
        if hyper['batch_normalization']:
            x = BatchNormalization()(x)
        x = Conv2D(filters, (3, 3), strides=(1, 1), padding='same', name=f'conv_{layer}', activation='relu')(x)
        x = MaxPooling2D(pool_size=hyper['pool_size'], padding='same', name=f'maxpool_{layer}')(x)
        x = Dropout(hyper['dropout'], name=f'conv_dropout_{layer}')(x)

    # Shared dense layers
    x = Flatten()(x)
    for layer, units in enumerate(hyper['dense_units']):
        x = Dense(units, activation='relu', name=f'dense_{layer}')(x)
        x = Dropout(hyper['dropout'], name=f'dense_dropout_{layer}')(x)

    x = Dense(hyper['max_len'] * hyper['charset_len'], name='wide_output', activation='linear')(x)

    # Per-character output layers
    split = Lambda(lambda whole: tf.split(whole, num_or_size_splits=hyper['max_len'], axis=1))(x)
    if hyper['share_per_character_weights']:
        per_character_model = create_per_character_model(activation='relu' if hyper['post_shared_dense'] else 'softmax')
        if hyper['post_shared_dense']:
            outputs = [Dense(hyper['charset_len'], name='output_char_%d' % ii, activation='softmax')(per_character_model(split[ii])) for ii in range(hyper['max_len'])]
        else:
            outputs = [per_character_model(split[ii]) for ii in range(hyper['max_len'])]
    else:
        outputs = [Dense(hyper['charset_len'], name='output_char_%d' % ii, activation='softmax')(split[ii]) for ii in range(hyper['max_len'])]

    model = Model(inputs=[image_input], outputs=outputs)
    model.summary()

    return model
model = create_model()
保罗·杜布斯

您正在使用该功能进行顺序模型导入,但是正在使用功能性API创建模型

要导入使用功能性API创建的模型,您需要使用其他导入器。https://deeplearning4j.konduit.ai/keras-import/model-functional显示了如何执行此操作。

它的TL; DR是您必须使用
KerasModelImport.importKerasModelAndWeights(simpleMlp);而不是KerasModelImport.importKerasSequentialModelAndWeights(simpleMlp);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

serialVersionUID更改后如何在Java中加载libsvm模型

来自分类Dev

在Java中加载类时真正发生了什么?

来自分类Dev

在Java中加载StanfordOpenNLP模型会产生巨大的开销吗?

来自分类Dev

在Java中加载窗口(jframe)时如何运行某些代码?

来自分类Dev

在Codeigniter hmvc中加载模型时出错

来自分类Dev

Intellij无法处理DeepLearning4j示例Maven项目

来自分类Dev

在Java中加载精灵图像

来自分类Dev

运行DeepLearning4J MNIST示例时出现java.lang.OutOfMemoryError

来自分类Dev

deeplearning4j:在线Word2Vec培训

来自分类Dev

Performance Encog与Deeplearning4J

来自分类Dev

尝试在Keras中加载顺序模型时出现“ KeyError:0”

来自分类Dev

在Keras中加载模型

来自分类Dev

线程“主”中的异常java.lang.NoClassDefFoundError:org / deeplearning4j / nn / conf / layers / Layer

来自分类Dev

deeplearning4j嵌入层权重更新

来自分类Dev

在Keras中从.hdf5加载模型权重时出错

来自分类Dev

启动服务器时可视化deeplearning4j中的培训进度会引发错误

来自分类Dev

Java:加载共享库时出错:libjli.so

来自分类Dev

我喜欢在独立的Java应用程序中加载我的EMFText模型

来自分类Dev

通过Java检索neo4j节点数据时出错

来自分类Dev

在Java中加载Spritesheet时,如何防止FPS下降?

来自分类Dev

java.lang.RuntimeException:启动org.neo4j.kernel.EmbeddedGraphDatabase时出错

来自分类Dev

在deeplearning4j中实现张量流功能

来自分类Dev

执行Neo4j Cypher Query(通过Java)嵌入式模式时出错

来自分类Dev

Java:在jscrollpanne中加载图像

来自分类Dev

使用 deeplearning4j 的 MNIST 示例代码错误

来自分类Dev

使用估计器在 Java 中加载/提供 tensorflow 模型时出现问题

来自分类Dev

在 keras 中加载模型

来自分类Dev

py4J 在多线程 java 上获取新的通信通道时出错

来自分类Dev

Deeplearning4j org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException

Related 相关文章

  1. 1

    serialVersionUID更改后如何在Java中加载libsvm模型

  2. 2

    在Java中加载类时真正发生了什么?

  3. 3

    在Java中加载StanfordOpenNLP模型会产生巨大的开销吗?

  4. 4

    在Java中加载窗口(jframe)时如何运行某些代码?

  5. 5

    在Codeigniter hmvc中加载模型时出错

  6. 6

    Intellij无法处理DeepLearning4j示例Maven项目

  7. 7

    在Java中加载精灵图像

  8. 8

    运行DeepLearning4J MNIST示例时出现java.lang.OutOfMemoryError

  9. 9

    deeplearning4j:在线Word2Vec培训

  10. 10

    Performance Encog与Deeplearning4J

  11. 11

    尝试在Keras中加载顺序模型时出现“ KeyError:0”

  12. 12

    在Keras中加载模型

  13. 13

    线程“主”中的异常java.lang.NoClassDefFoundError:org / deeplearning4j / nn / conf / layers / Layer

  14. 14

    deeplearning4j嵌入层权重更新

  15. 15

    在Keras中从.hdf5加载模型权重时出错

  16. 16

    启动服务器时可视化deeplearning4j中的培训进度会引发错误

  17. 17

    Java:加载共享库时出错:libjli.so

  18. 18

    我喜欢在独立的Java应用程序中加载我的EMFText模型

  19. 19

    通过Java检索neo4j节点数据时出错

  20. 20

    在Java中加载Spritesheet时,如何防止FPS下降?

  21. 21

    java.lang.RuntimeException:启动org.neo4j.kernel.EmbeddedGraphDatabase时出错

  22. 22

    在deeplearning4j中实现张量流功能

  23. 23

    执行Neo4j Cypher Query(通过Java)嵌入式模式时出错

  24. 24

    Java:在jscrollpanne中加载图像

  25. 25

    使用 deeplearning4j 的 MNIST 示例代码错误

  26. 26

    使用估计器在 Java 中加载/提供 tensorflow 模型时出现问题

  27. 27

    在 keras 中加载模型

  28. 28

    py4J 在多线程 java 上获取新的通信通道时出错

  29. 29

    Deeplearning4j org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException

热门标签

归档