torch_graph = torch.onnx._optimize_trace(trace, torch.onnx.OperatorExportTypes.ONNX) AttributeError: module 'torch.onnx' has no attribute '_optimize_trace'
时间: 2023-10-16 17:57:39 浏览: 523
这个错误通常是因为你使用的 torch 版本过低。在旧版本的 torch 中,确实没有 _optimize_trace
这个属性。你可以尝试升级 torch 到最新版本来解决这个问题。你可以使用下面的命令来升级 torch:
pip install --upgrade torch
如果你已经安装了最新版本的 torch,但仍然遇到这个错误,请确保你的代码没有其他问题,并且按照正确的方式导入和使用 torch.onnx
中的函数。
相关问题
def export_onnx(model, img, file, opset, simplify, verbose): # ONNX model export prefix = colorstr('ONNX:') try: # check_requirements(('onnx', 'onnx-simplifier')) import onnx print(f'\n{prefix} starting export with onnx {onnx.__version__}...') f = file.with_suffix('.onnx') torch.onnx.export(model, img, f, verbose=verbose, opset_version=opset, training=torch.onnx.TrainingMode.EVAL, do_constant_folding=True, input_names=['image'], output_names=['output'])
我看到你在导出 ONNX 模型的代码。这段代码使用了 PyTorch 的 torch.onnx.export()
方法将模型导出为 ONNX 格式。导出过程中,你可以指定模型的输入图像、输出文件、ONNX 版本、是否进行简化等参数。
在这段代码中,模型会以评估模式进行导出,并启用常量折叠。此外,你还可以通过 input_names
和 output_names
参数指定输入和输出的名称。
如果你有任何关于导出 ONNX 模型的问题,请继续提问。
actor: torch.nn.Module, t_obs = torch.FloatTensor((train_collector.data.obs)[0]).unsqueeze(0).to(args.device) t_act = torch.FloatTensor((train_collector.data.act)[0]).unsqueeze(0).to(args.device) print(t_obs) print(t_act) writer.add_graph(policy.actor, t_obs)出现RuntimeError: Only tensors, lists, tuples of tensors, or dictionary of tensors can be output from traced functions错误,怎么改正代码
这个错误通常是由于add_graph
方法不能接受torch.nn.Module
类型的参数,而应该是一个计算图(torch.onnx.export
)或一组张量。要修复这个错误,可以使用torch.jit.trace
函数来创建一个跟踪模块,然后将跟踪模块的输入张量作为参数传递给add_graph
方法。
以下是可能的解决方案,可以将其添加到代码中尝试:
# 使用torch.jit.trace创建跟踪模块
traced_actor = torch.jit.trace(policy.actor, (t_obs,))
# 将输入张量传递给add_graph方法
writer.add_graph(traced_actor, (t_obs,))
这应该可以解决该错误,允许您将模型添加到TensorBoard中。
相关推荐
















