load_model错误:ValueError:tensorflow.keras

时间:2019-05-30 12:28:59

标签: tensorflow keras inference

我可以在colab中使用load_model(“ model.h5”)加载模型,并执行一个有效的model.predict。但是,当我下载h5文件并在本地运行load_model时,load_model调用将收到错误“ ValueError:格式化格式不正确的模型配置。”

这是模型:

base_model=MobileNet(weights='imagenet',include_top=False) #imports the mobilenet model and discards the last 1000 neuron layer.

x=base_model.output
x=GlobalAveragePooling2D()(x)
x=Dense(1024,activation='relu')(x) #we add dense layers so that the model can learn more complex functions and classify for better results.
x=Dense(1024,activation='relu')(x) #dense layer 2
x=Dense(512,activation='relu')(x) #dense layer 3
preds=Dense(2,activation='softmax')(x) #final layer with softmax activation

使用转移学习

model=Model(inputs=base_model.input,outputs=preds)

for layer in model.layers[:20]:
    layer.trainable=False
for layer in model.layers[20:]:
    layer.trainable=True

然后接受培训


train_generator=train_datagen.flow_from_directory('/content/chest_xray/train/',
                                                  target_size=(224,224),
                                                  color_mode='rgb',
                                                  batch_size=32,
                                                  class_mode='categorical', shuffle=True)


model.compile(optimizer='Adam',loss='categorical_crossentropy',metrics=['accuracy'])
# Adam optimizer
# loss function will be categorical cross entropy
# evaluation metric will be accuracy

step_size_train=train_generator.n//train_generator.batch_size
model.fit_generator(generator=train_generator,
                   steps_per_epoch=step_size_train,
                   epochs=5)

模型已保存

model.save('chest-xray-pneumonia.h5') 

预测有效

ill_path = "/content/chest_xray/train/PNEUMONIA/" 
good_path = "/content/chest_xray/train/NORMAL/" 

ill_pic = ill_path + os.listdir(ill_path)[1]
good_pic = good_path + os.listdir(good_path)[1]

print(get_rez(ill_pic))
print(get_rez(good_pic))

但是在Flask应用python脚本main.py中本地运行,却没有

from flask import render_template, jsonify, Flask, redirect, url_for, request
from app import app
import random
import os
from tensorflow.keras.applications.resnet50 import ResNet50
from tensorflow.keras.models import load_model
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.mobilenet import preprocess_input, decode_predictions
import numpy as np
import ipdb

weightsPath = app.config['UPLOAD_FOLDER']

在下一行获取错误:ValueError:格式不正确的模型配置。

 new_model = load_model(os.path.join(app.config['UPLOAD_FOLDER'],"chest-xray-pneumonia.h5"))

def upload_file():
   if request.method == 'POST':
      f = request.files['file']
      path = os.path.join(app.config['UPLOAD_FOLDER'], f.filename)
      #f.save(os.path.join(app.config['UPLOAD_FOLDER'], f.filename))
      ill_pic = os.path.join(app.config['UPLOAD_FOLDER'], 
      f.filename)

print(get_rez(ill_pic))

0 个答案:

没有答案
相关问题