Python tensorflow keras加載json模型時出錯:找不到類“Sequential”

我幾周前就建立并訓練了我的模型,并將其保存在model.json dan上model.h 5

今天,當我嘗試使用model_from_json加載它時,它給了我一個錯誤

TypeError: Could not locate class 'Sequential'. Make sure custom classes are decorated with `@keras.saving.register_keras_serializable()`. Full object config: {'class_name': 'Sequential', 'config': {'name': 'sequential_7', 'layers': [{'module': 'keras.layers', 'class_name': 'InputLayer', 'config': {'batch_input_shape': [None, 244, 244, 3], 'dtype': 'float32', 'sparse': False, 'ragged': False, 'name': 'conv2d_15_input'}, 'registered_name': None}, {'module': 'keras.layers', 'class_name': 'Conv2D', 'config': {'name': 'conv2d_15', 'trainable': True, 'dtype': 'float32', 'batch_input_shape': [None, 244, 244, 3], 'filters': 32, 'kernel_size': [3, 3], 'strides': [1, 1], 'padding': 'valid', 'data_format': 'channels_last', 'dilation_rate': [1, 1], 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'module': 'keras.initializers', 'class_name': 'GlorotUniform', 'config': {'seed': None}, 'registered_name': None}, 'bias_initializer': {'module': 'keras.initializers', 'class_name': 'Zeros', 'config': {}, 'registered_name': None}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}, 'registered_name': None, 'build_config': {'input_shape': [None, 244, 244, 3]}}, {'module': 'keras.layers', 'class_name': 'MaxPooling2D', 'config': {'name': 'max_pooling2d_14', 'trainable': True, 'dtype': 'float32', 'pool_size': [2, 2], 'padding': 'valid', 'strides': [2, 2], 'data_format': 'channels_last'}, 'registered_name': None, 'build_config': {'input_shape': [None, 242, 242, 32]}}, {'module': 'keras.layers', 'class_name': 'Conv2D', 'config': {'name': 'conv2d_16', 'trainable': True, 'dtype': 'float32', 'filters': 64, 'kernel_size': [3, 3], 'strides': [1, 1], 'padding': 'valid', 'data_format': 'channels_last', 'dilation_rate': [1, 1], 'groups': 1, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'module': 'keras.initializers', 'class_name': 'GlorotUniform', 'config': {'seed': None}, 'registered_name': None}, 'bias_initializer': {'module': 'keras.initializers', 'class_name': 'Zeros', 'config': {}, 'registered_name': None}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}, 'registered_name': None, 'build_config': {'input_shape': [None, 121, 121, 32]}}, {'module': 'keras.layers', 'class_name': 'MaxPooling2D', 'config': {'name': 'max_pooling2d_15', 'trainable': True, 'dtype': 'float32', 'pool_size': [2, 2], 'padding': 'valid', 'strides': [2, 2], 'data_format': 'channels_last'}, 'registered_name': None, 'build_config': {'input_shape': [None, 119, 119, 64]}}, {'module': 'keras.layers', 'class_name': 'Flatten', 'config': {'name': 'flatten_7', 'trainable': True, 'dtype': 'float32', 'data_format': 'channels_last'}, 'registered_name': None, 'build_config': {'input_shape': [None, 59, 59, 64]}}, {'module': 'keras.layers', 'class_name': 'Dense', 'config': {'name': 'dense_14', 'trainable': True, 'dtype': 'float32', 'units': 64, 'activation': 'relu', 'use_bias': True, 'kernel_initializer': {'module': 'keras.initializers', 'class_name': 'GlorotUniform', 'config': {'seed': None}, 'registered_name': None}, 'bias_initializer': {'module': 'keras.initializers', 'class_name': 'Zeros', 'config': {}, 'registered_name': None}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}, 'registered_name': None, 'build_config': {'input_shape': [None, 222784]}}, {'module': 'keras.layers', 'class_name': 'Dense', 'config': {'name': 'dense_15', 'trainable': True, 'dtype': 'float32', 'units': 2, 'activation': 'softmax', 'use_bias': True, 'kernel_initializer': {'module': 'keras.initializers', 'class_name': 'GlorotUniform', 'config': {'seed': None}, 'registered_name': None}, 'bias_initializer': {'module': 'keras.initializers', 'class_name': 'Zeros', 'config': {}, 'registered_name': None}, 'kernel_regularizer': None, 'bias_regularizer': None, 'activity_regularizer': None, 'kernel_constraint': None, 'bias_constraint': None}, 'registered_name': None, 'build_config': {'input_shape': [None, 64]}}]}, 'keras_version': '2.13.1', 'backend': 'tensorflow'}

我已導入所有要求:

import numpy as np
from keras.preprocessing import image
from keras.models import model_from_json

from tensorflow.keras import layers
from tensorflow.keras.preprocessing.image import ImageDataGenerator, load_img, img_to_array
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dense, GlobalAveragePooling2D, Dropout, Flatten
from tensorflow.keras.applications import VGG16

這是我用來加載saves-json模型的代碼:

json_file = open('./model/model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
loaded_model.load_weights("model.h5")

我是不是錯過了什么?

? 最佳回答:

由于@kartoos的評論,在檢查了版本之后。是的,我的kaggle的筆記本使用tensorflow版本2.13. 1與此同時,我正在嘗試將模型加載到2.16. 1 Tensorflow版本。

我嘗試安裝2.13. 1但我找不到方法,所以我使用構建和re-train我的模型2.16. 1版本tensorflow,并且它有效,不再有錯誤,并且當保存并再次加載時,模型可以正常工作。

將模型保存為keras而不是json

model.save('model.keras')

并再次加載模型

loaded_model = keras.models.load_model("./model/model.keras")

Thanks !

主站蜘蛛池模板: 国模无码视频一区| 日本一区二区三区高清| 久久99热狠狠色精品一区 | 福利一区二区三区视频在线观看| 99国产精品欧美一区二区三区| 国99精品无码一区二区三区| AV天堂午夜精品一区| 国产一区二区三区国产精品| 国精产品一区一区三区有限公司 | 国模吧无码一区二区三区| 天天爽夜夜爽人人爽一区二区| 免费无码一区二区三区蜜桃大| 日本一区二区三区爆乳| 精品国产乱子伦一区二区三区 | 少妇无码一区二区二三区| 亚洲欧洲∨国产一区二区三区| 丰满人妻一区二区三区视频53| 亚洲一区精品伊人久久伊人| 一区二区三区无码高清| 一区二区三区免费在线观看| 亚洲国产综合精品一区在线播放| 精品一区二区三区四区电影| 波多野结衣电影区一区二区三区 | 亚洲色欲一区二区三区在线观看| 国产av福利一区二区三巨| 红桃AV一区二区三区在线无码AV| 中文字幕一区精品| 亚洲天堂一区二区| 中字幕一区二区三区乱码| 亚洲Av永久无码精品一区二区| 无码一区二区三区AV免费| 国产主播福利精品一区二区| 麻豆一区二区三区蜜桃免费| 精品一区二区三区免费观看| 亚洲线精品一区二区三区影音先锋| 国产综合精品一区二区三区| 日韩精品无码一区二区中文字幕| 在线观看日本亚洲一区| 国产剧情一区二区| 国模吧无码一区二区三区| tom影院亚洲国产一区二区 |