未加载包含Keras和TensorFlow_addons层的TensorFlow模型 [英] tensorflow model with keras and tensorflow_addons layer is not getting loaded

查看:19
本文介绍了未加载包含Keras和TensorFlow_addons层的TensorFlow模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经从TensorFlow_addons训练了一个带有Keras层和Weight_Normalization层的模型。这是我训练并保存为TensorFlow文件格式的模型:

import tensorflow as tf
import tensorflow.keras as tk
import tensorflow_addons as tfa

model = tf.keras.Sequential([
    tf.keras.layers.Input((X_train.shape[1]-1,)),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.2),
    tfa.layers.WeightNormalization(tf.keras.layers.Dense(2048, activation="relu")),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.5),
    tfa.layers.WeightNormalization(tf.keras.layers.Dense(1048, activation="relu")),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Dropout(0.5),
    tfa.layers.WeightNormalization(tf.keras.layers.Dense(206, activation="sigmoid")),
    ])

(并且它没有自定义指标)

from keras.callbacks import ModelCheckpoint, EarlyStopping

# autosave best Model
best_model = ModelCheckpoint("model", monitor='val_accuracy', mode='max',verbose=0, save_best_only=True)

earlystop = EarlyStopping(monitor = 'val_accuracy',
                          patience = 15,
                          mode = 'max',
                          verbose = 1,
                          restore_best_weights = True)

callbacks = [best_model, earlystop]

model.compile(loss= 'binary_crossentropy',optimizer= 'Adam',metrics= ['accuracy'])
history = model.fit(X_res, y_res, epochs=100, verbose= 2, validation_data=(X_val[X_val.columns[1:]],y_val[y_val.columns[1:]]), callbacks=callbacks)

但当我加载模型时,它返回错误:

model = tk.models.load_model("../input/model")

---------------------------------------------------------------------------密钥错误回溯(最近调用 最后)在 2个回程 3. ->;4型号=tk.models.load_model(";../input/model-custom";,custom_objects={‘__inference_dense_layer_call_fn_1126407’:f1})

/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/saving/save.py 在LOAD_MODEL中(文件路径、定制对象、编译、选项) 185如果是实例(文件路径,六个.string_type): 186 LOADER_impl.parse_saveed_model(文件路径) -->;187返回SAVED_MODEL_LOAD.LOAD(文件路径、编译、选项) 188 189提高IOError(

/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py 在加载中(路径、编译、选项) 119 120型号=tf_load.Load_Internal( -->;121路径,选项=选项,加载器_CLS=KerasObjectLoader) 一百二十二 123#PYLINT:DISABLE=保护访问

/opt/conda/lib/python3.7/site-packages/tensorflow/python/saved_model/load.py In LOAD_INTERNAL(EXPORT_DIR,TAG,OPTIONS,LOADER_CLS) 631尝试: 632 LOADER=LOADER_CLS(对象_图形_协议,保存的模型_协议,导出目录, -->;633检查点_选项) 634错误除外。NotFoundError as Err: 635引发FileNotFoundError(

/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py 在init(self,*args,**kwargs)中 192自._模型_到_重建=[] 一百九十三 -->;194 Super(KerasObjectLoader,self).init(*args,**kwargs) 195 196#现在节点对象已完全加载,并且检查点已

/opt/conda/lib/python3.7/site-packages/tensorflow/python/saved_model/load.py 在init(self,Object_graph_proto,Saved_Model_Proto,export_dir, 检查点_选项) 128自._具体函数[名称]=_WrapperFunction(具体函数) 129 -->;130自身_加载_全部() 131 sel._Restore_Checkpoint() 132

/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py In_Load_All(自身) 216 217#加载所有其他节点和函数。 -->;218 Super(KerasObjectLoader,self)._Load_all() 219 220#完成层和模型的设置。有关详细信息,请参阅函数文档字符串。

/opt/conda/lib/python3.7/site-packages/tensorflow/python/saved_model/load.py In_Load_All(自身) 139 def_Load_All(自身): 从SavedModel及其边加载所有节点和函数。 -->;141自身加载节点() 142自身._加载_边() 143#TODO(b/124045874):捕获的函数有限制

/opt/conda/lib/python3.7/site-packages/tensorflow/python/saved_model/load.py 输入_加载_节点(自身) 281#接口。 282继续 -->;283节点,setter=sel._recreate(proto,node_id) 284个节点[node_id]=节点 285 node_setters[node_id]=setter

/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py 在重新创建(self,proto,node_id)中(_R) 237 obj._Handle_name=Proto.ariable.name+‘:0’#pylint:Disable=受保护的访问 其他238项: -->;239obj,setter=Super(KerasObtLoader,self)._recreate(proto,node_id) 240返回Obj,setter 241

/opt/conda/lib/python3.7/site-packages/tensorflow/python/saved_model/load.py 在重新创建(self,proto,node_id)中(_R) 391如果种类不是出厂的: 392引发ValueError(&Q;未知保存对象类型:%r&Q;%KIND) -->;393退货工厂种类 三九四 395定义重新创建用户对象(self,proto,node_id):

/opt/conda/lib/python3.7/site-packages/tensorflow/python/saved_model/load.py 在()中 380 lambda:sel._recreate_user_object(协议用户对象,node_id)), 381&Q;ASSET&Q;:lambda:sel._recreate_Asset(Proto.Asset), -->;382";Function&Quot;:lambda:sel._recreate_Function(Proto.Function), 383";BAR_CONTRATE_Function";:函数工具.部分( 384自._重新创建_裸露_混凝土_函数,

/opt/conda/lib/python3.7/site-packages/tensorflow/python/saved_model/load.py In_recreate_Function(self,proto) 419 def_recreate_Function(自身,原型): 420返回函数_desialization.recreate_函数( -->;421协议,自身_具体_函数),设置 四百二十二 423定义重新创建裸露混凝土函数(自身,原型):

/opt/conda/lib/python3.7/site-packages/tensorflow/python/saved_model/function_deserialization.py 在RECREATE_Function(Saved_Function,具体函数)中 259 CONSTRUCT_Function_OBJECTS=[] 260对于已保存的函数中的具体函数名称。具体函数: -->;261 concrete_function_objects.append(concrete_functions[concrete_function_name]) 二百六十二 263对于具体函数对象中的cf:

关键错误:‘__Inference_Dense_Layer_Call_FN_1126407’

您能帮我正确加载模型吗?谢谢

推荐答案

我怀疑您的kerastensorflow都是分开安装的;我使用过tfa,从来没有遇到过这样的加载问题;

实际上,您可以通过tensorflow导入所有内容:

import tensorflow as tf
import tensorflow.keras as tk
import tensorflow_addons as tfa

但在这里您通过普通keras

加载回调
from keras.callbacks import ModelCheckpoint, EarlyStopping

为了首先确保您确实存在加载模型问题,请确保每个导入都是通过tensorflow.keras完成的(我希望在执行此操作后问题会完全消失)。

替换

from keras.callbacks import ModelCheckpoint, EarlyStopping

使用:

from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping

总而言之,使用新导入(全部来自tensorflow.keras)从头开始培训,然后检查问题是否重现。

这篇关于未加载包含Keras和TensorFlow_addons层的TensorFlow模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆