当前位置: 首页 > 知识库问答 >
问题:

带有keras和tensorflow_插件层的tensorflow模型未加载

厍书
2023-03-14

我用tensorflow_插件中的keras层和权重标准化层训练了一个模型。这是我以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中的KeyError回溯(最近一次调用最后一次)返回3----

/opt/conda/lib/python3。7/站点包/tensorflow/python/keras/saving/save。加载模型中的py(文件路径、自定义对象、编译、选项)185如果是instance(文件路径、六个字符串类型):186加载程序impl。解析保存的模型(文件路径)--

/opt/conda/lib/python3。7/站点包/tensorflow/python/keras/saving/saved_model/load。加载中的py(路径、编译、选项)119 120 model=tf_load。加载_内部(--

/opt/conda/lib/python3.7/site-packages/tensorflow/python/saved_model/load.pyload_internal(export_dir,标签,选项,loader_cls)631 try: 632 loader=loader_cls(object_graph_proto,saved_model_proto,export_dir,--

/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py在init(自我,*args,**kwargs)192自我。_models_to_reconstruct=[] 193-

/opt/conda/lib/python3。7/站点包/tensorflow/python/saved_model/load。初始化中的py(self、object\u graph\u proto、saved\u model\u proto、export\u dir、ckpt\u options)128 self_具体函数[名称]=\u包装函数(具体函数)129--

/opt/conda/lib/python3。7/站点包/tensorflow/python/keras/saving/saved_model/load。py in _load_all(self)216 217#加载所有其他节点和函数--

/opt/conda/lib/python3。7/站点包/tensorflow/python/saved_model/load。py in_load_all(self)139 def_load_all(self):140“”“从保存的模型及其边缘加载所有节点和函数。”"" --

/opt/conda/lib/python3。7/站点包/tensorflow/python/saved_model/load。py在_加载_节点(自)281#接口中。282继续--

/opt/conda/lib/python3。7/站点包/tensorflow/python/keras/saving/saved_model/load。py in_recreate(self,proto,node_id)237 obj_handle_name=proto。变量名称“:0”#pylint:disable=受保护的访问238其他:--

/opt/conda/lib/python3。7/站点包/tensorflow/python/saved_model/load。如果种类不在工厂中,则重新创建(自身、原型、节点id)391中的py:392生成值错误(“未知的保存对象类型:%r”%kind)--

/opt/conda/lib/python3。7/站点包/tensorflow/python/saved_model/load。py in()380 lambda:self_重新创建用户对象(proto.user对象,节点id)),381“资产”:lambda:self_重新创建_资产(原始资产)--

/opt/conda/lib/python3。7/站点包/tensorflow/python/saved_model/load。py in_recreate_function(self,proto)419 def_recreate_function(self,proto):420返回函数反序列化。重新创建函数(--

/opt/conda/lib/python3。7/站点包/tensorflow/python/saved_model/function_反序列化。py在recreate_函数中(保存的_函数,具体的_函数)259个具体的_函数对象=[]260用于保存的_函数中的具体的_函数名称。具体职能:--

KeyError:“\uuuuuu推理\uu密集层\u调用\ufn\u1126407”

你能帮我把模型正确地装上吗。。谢谢

共有1个答案

柳联
2023-03-14

我怀疑您分别安装了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),然后检查问题是否重现。

 类似资料:
  • 08-10 11:56:28.905 280 66-28066/android.example.com.TFLiteCamerademo E/MultiWindowProxy:getServiceInstance失败!08-10 11:56:35.675 280 66-28092/Android.example.com.TFLiteCamerademo E/AndroidRuntime:致命异常:

  • 我需要向现有模型添加层。然而,我需要在“主模型级别”添加层,也就是说,我不能使用经典的函数方法。例如,如果我使用以下内容: 我获得: 因此,我获得了一个带有嵌套子模型的模型。相反,我将嵌套子模型的层(移动网)“添加”到新的顶层(即在reshape_4之后)。我尝试使用: 它适用于简单的顺序模型(如vgg、mobilenet),但对于连接不严格顺序的更复杂模型(如inception、resnet),

  • 问题内容: 在Keras中创建顺序模型时,我知道您在第一层中提供了输入形状。然后,此输入形状会构成 隐式 输入层吗? 例如,下面的模型明确指定了2个密集层,但这实际上是一个3层模型,即由输入形状隐含的一个输入层,一个具有32个神经元的隐藏密集层,然后一个具有10个可能输出的输出层组成的模型吗? 问题答案: 好吧,实际上它实际上 是 一个隐式输入层,即您的模型是一个具有三层“输入,隐藏和输出”的“老

  • 在使用进行实验时,我在将转换为时遇到了一个问题。 这是我的设置: 如果有人能解释转换失败的原因,那就太好了。

  • 我想知道是否有可能在卷积神经网络的密集层中添加一个变量(以及之前卷积层的连接,是否有额外的特征集可用于区分目的)?如果可能的话,有人能给我举个例子/文档来解释如何做到这一点吗? 我希望使用Keras,但如果Keras限制太多,我很乐意使用TensorFlow。 编辑:在这种情况下,我认为这应该起作用的方式是我向神经网络提供一个包含图像和相关特征集的列表(以及在训练相关分类期间)。 EDIT2:我想

  • 我想使用两个包,一个用Keras1.2编写,另一个用TensorFlow编写。我想将构建在tensorflow中的体系结构的一部分用于Keras模型。 这里提出了一个部分的解决方案,但它是针对顺序模型的。关于功能模型的建议--将预处理包装在一个Lambda层中--没有奏效。