0

我正在运行一些 Optuna 研究,当我尝试使用 保存它时joblib.dump,我得到以下信息:

TypeError:无法腌制“_io.TextIOWrapper”对象

我也尝试过pickle.dump(study, open('name.pkl', 'wb')),但在这两种情况下我都得到了相同的结果编辑:现在我明白这与我在回调中这样做的事实有关,否则它可以工作我正在训练自定义 PyTorch 模型,其他一切似乎在研究本身方面起作用..但是当我尝试保存它时,我得到了上述错误。我对如何调试它一无所知。

环境:

  • 带有 debian 10 虚拟机的 QubeOS
  • 蟒蛇 3.8
  • PyTorch 1.5
  • Optuna 2.0 编辑:这是堆栈跟踪:
File "<ipython-input-3-f2187f915338>", line 1, in <module>
    joblib.dump(study, f'{filepath}.pkl')
  File "/opt/conda/envs/torch_38/lib/python3.8/site-packages/joblib/numpy_pickle.py", line 480, in dump
    NumpyPickler(f, protocol=protocol).dump(value)
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 485, in dump
    self.save(obj)
  File "/opt/conda/envs/torch_38/lib/python3.8/site-packages/joblib/numpy_pickle.py", line 282, in save
    return Pickler.save(self, obj)
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 601, in save
    self.save_reduce(obj=obj, *rv)
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 715, in save_reduce
    save(state)
  File "/opt/conda/envs/torch_38/lib/python3.8/site-packages/joblib/numpy_pickle.py", line 282, in save
    return Pickler.save(self, obj)
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 558, in save
    f(self, obj)  # Call unbound method with explicit self
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 969, in save_dict
    self._batch_setitems(obj.items())
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 995, in _batch_setitems
    save(v)
  File "/opt/conda/envs/torch_38/lib/python3.8/site-packages/joblib/numpy_pickle.py", line 282, in save
    return Pickler.save(self, obj)
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 601, in save
    self.save_reduce(obj=obj, *rv)
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 715, in save_reduce
    save(state)
  File "/opt/conda/envs/torch_38/lib/python3.8/site-packages/joblib/numpy_pickle.py", line 282, in save
    return Pickler.save(self, obj)
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 558, in save
    f(self, obj)  # Call unbound method with explicit self
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 969, in save_dict
    self._batch_setitems(obj.items())
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 995, in _batch_setitems
    save(v)
  File "/opt/conda/envs/torch_38/lib/python3.8/site-packages/joblib/numpy_pickle.py", line 282, in save
    return Pickler.save(self, obj)
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 601, in save
    self.save_reduce(obj=obj, *rv)
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 715, in save_reduce
    save(state)
  File "/opt/conda/envs/torch_38/lib/python3.8/site-packages/joblib/numpy_pickle.py", line 282, in save
    return Pickler.save(self, obj)
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 558, in save
    f(self, obj)  # Call unbound method with explicit self
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 969, in save_dict
    self._batch_setitems(obj.items())
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 995, in _batch_setitems
    save(v)
  File "/opt/conda/envs/torch_38/lib/python3.8/site-packages/joblib/numpy_pickle.py", line 282, in save
    return Pickler.save(self, obj)
  File "/opt/conda/envs/torch_38/lib/python3.8/pickle.py", line 576, in save
    rv = reduce(self.proto)
TypeError: cannot pickle '_io.TextIOWrapper' object

4

0 回答 0