Serialization 如何调试保存模型类型错误:can';t pickle SwigPyObject对象?

Serialization 如何调试保存模型类型错误:can';t pickle SwigPyObject对象?,serialization,pytorch,pickle,Serialization,Pytorch,Pickle,我试图保存一个模型,它是从nn.Module继承的类的对象。它训练得很好,没有问题,但当我尝试运行代码时: torch.save( obj=model, f=os.path.join(tensorboard_writer.get_logdir(), 'model.ckpt')) 我收到错误:TypeError:无法pickle SwigPyObject对象 我不知道什么是SwigPyObject对象。如何调试此错误以保存模型 完全回溯: Tracebac

我试图保存一个模型,它是从
nn.Module
继承的类的对象。它训练得很好,没有问题,但当我尝试运行代码时:

    torch.save(
        obj=model,
        f=os.path.join(tensorboard_writer.get_logdir(), 'model.ckpt'))
我收到错误:
TypeError:无法pickle SwigPyObject对象

我不知道什么是
SwigPyObject
对象。如何调试此错误以保存模型

完全回溯:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/torch/serialization.py", line 149, in _with_file_like
    return body(f)
  File "/usr/local/lib/python3.6/dist-packages/torch/serialization.py", line 224, in <lambda>
    return _with_file_like(f, "wb", lambda f: _save(obj, f, pickle_module, pickle_protocol))
  File "/usr/local/lib/python3.6/dist-packages/torch/serialization.py", line 296, in _save
    pickler.dump(obj)
TypeError: can't pickle SwigPyObject objects
然后,我构建并保存模型:

    tensorboard_writer = SummaryWriter()

    model = RecurrentModel(
        core_str='rnn',
        core_kwargs={},
        tensorboard_writer=tensorboard_writer)

    torch.save(
        obj=model,
        f=os.path.join(tensorboard_writer.get_logdir(), 'model.ckpt')
    )


PyTorch论坛上有人澄清了这一点。SummaryWriter有一个文件句柄,通常无法序列化。问题在于:

self.tensorboard\u writer=tensorboard\u writer

    tensorboard_writer = SummaryWriter()

    model = RecurrentModel(
        core_str='rnn',
        core_kwargs={},
        tensorboard_writer=tensorboard_writer)

    torch.save(
        obj=model,
        f=os.path.join(tensorboard_writer.get_logdir(), 'model.ckpt')
    )