首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在将.pb模型转换为tf.keras时无法加载tf.keras

在将.pb模型转换为tf.keras时无法加载tf.keras
EN

Stack Overflow用户
提问于 2022-02-13 15:13:22
回答 1查看 531关注 0票数 2

上下文

我在一个个人项目中使用tf.keras,我需要检索一个预先训练过的Alexnet模型。不幸的是,该模型不能仅使用tf.keras直接访问,因此我使用PyTorch下载了经过预先训练的模型,将其转换为onnx文件,然后用以下代码将其导出为.pb文件:

代码语言:javascript
复制
torch_pretrained = torchvision.models.alexnet()
torch_pretrained.load_state_dict(torch.load("alexnet.pth"))

dummy_input = Variable(torch.randn(1, 3, 224, 224))
torch.onnx.export(torch_pretrained, dummy_input, "alexnet_pretrained.onnx")

onnx_pretrained = onnx.load("alexnet_pretrained.onnx")
onnx_pretrained = prepare(onnx_pretrained)
onnx_pretrained.export_graph('alexnet')

问题

现在,我正尝试使用keras检索.pb文件,并使用以下代码解释这里

代码语言:javascript
复制
model = tf.keras.models.load_model("alexnet")
model.summary()

我得到了一个错误:

AttributeError:'_UserObject‘对象没有属性’汇总‘

我在加载模型时也会收到警告,但我认为这与此无关:

警告:tensorflow:在加载Keras模型时检测到TF 2.5之前保存了保存模型。请确保使用model.save()或tf.keras.models.save_model()保存模型,而不是使用tf.saved_model.save()。要确认,在keras_metadata.pb目录中应该有一个名为“SavedModel”的文件。

如您所见,加载的模型有一个非常模糊的类型:

在我做研究的时候,我发现了,这意味着我不是唯一一个面临这个问题的人。

问题

最简单的方法是解决这个特定的问题,但是如果有人知道另一种方法将预训练的Alexnet模型加载到tf.keras,这也将解决我的实际问题。

规格

代码语言:javascript
复制
Windows 10
python 3.9.7
tensorflow 2.6.0
torch 1.10.2
torchvision 0.11.3
onnx 1.10.2
onnx-tf 1.9.0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-13 17:01:44

解决方案

我遵循了Jakub的建议:我安装了"pytorch2keras“(参见)。我只是运行了一个函数,直接将py手电模型转换成一个keras模型,它实际上起作用了。

我只需要修改模块的代码,因为出现了一些依赖项问题(它们使用的是onnx.optimizer,现在称为onnxoptimizer),所以我只在以下几个方面更改了导入行:

从…

代码语言:javascript
复制
from onnx import optimizer

代码语言:javascript
复制
import onnxoptimizer as optimizer
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71101993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档