1 回答
TA贡献1816条经验 获得超4个赞
看起来这都是由于尝试冻结 TensorFlow 2.3 模型而引起的。显然,Tensorflow 2.0+ 已弃用“冻结”概念,转而采用“保存模型”概念。一旦发现这一点,我就能够立即将 h5/json 保存到已保存的模型 pb 中。
我仍然不确定这种格式是否针对推理进行了优化,所以我将对此进行一些跟进,但由于我的问题是关于我看到的错误,我想我会发布导致问题的原因。
作为参考,这是我的 python 脚本,用于将 keras h5/json 文件转换为 Tensorflow 保存的模型格式。
import os
from keras.models import model_from_json
import tensorflow as tf
import genericpath
from genericpath import *
def splitext(p):
p = os.fspath(p)
if isinstance(p, bytes):
sep = b'/'
extsep = b'.'
else:
sep = '/'
extsep = '.'
return genericpath._splitext(p, sep, None, extsep)
def load_model(path,custom_objects={},verbose=0):
from keras.models import model_from_json
path = splitext(path)[0]
with open('%s.json' % path,'r') as json_file:
model_json = json_file.read()
model = model_from_json(model_json, custom_objects=custom_objects)
model.load_weights('%s.h5' % path)
# if verbose: print 'Loaded from %s' % path
return model
json_file = "model.json" # the h5 file should be "model.h5"
model = load_model(json_file) # load the json/h5 pair
model.save('my_saved_model') # this is a directory name to store the saved model
添加回答
举报