pytorch - 有什么方法可以用他们的类保存 pytorch 模型
问题描述
当我尝试加载我保存的模型时,我需要导入它的类。例如:
from module import Net
torch.load('saved_model.pth')
有什么办法可以避免这种导入?例如用类或其他东西保存模型?
解决方案
如果您想简单地将模型加载到已知的 nn.Module 对象中,例如net
可以使用torch.load_state_dict('saved_model.pth')
. 如果您想保存整个模型以便其他人可以使用它,您必须使用它来腌制:
import pickle
net = Net()
with open('saved_model.pth', 'w') as filehandler:
pickle.dump(net, filehandler)
装载:
with open('saved_model.pth', 'w') as filehandler:
net = pickle.load(filehandler)
但是,强烈建议不要使用 pickle,因为它可能会将自定义内容保存到您的机器/环境中,并导致它无法在其他人的机器上运行。如果你真的必须使用pickle,那么你是否可以将类与神经网络解耦,将类保存在pickle文件中并将参数保存在torch文件中,这可能值得一看。
希望这会有所帮助,而不仅仅是您知道的东西。
推荐阅读
- zeromq - 为什么 ZeroMQ 发布者绑定到两个端点?
- discord.js - 如何在 Discord.js 中为人员分配角色
- machine-learning - Lime Explainer:ValueError:训练数据没有以下字段
- node.js - 如何使用 Firebase 实现 Cloud Functions 为 google sigin 添加代码
- javascript - 使用jquery在一定量的滚动后向元素添加一个类
- sql - 使用 SQL 在一列中显示计算数据和非计算数据
- python - 为什么我的烧瓶路线不返回“成功!”?
- swift - 有没有办法指定运行循环和模式以从发布者接收元素
- ios - 堆栈视图未显示
- c# - 为什么 Auth0 登录屏幕不返回 UWP 应用