3

我喜欢使用 dill.dump_session 来保存我的笔记本状态。但是,我经常加载不可提取的对象(dask-clusters、keras 模型)。有什么方法可以将它们从我的环境中删除,然后使用 dump_session()?

我试图用 dill.detect.errors 找到有问题的对象:

(使用 globals() 和 locals() )

problemDict={}
exceptions=["Out","get_ipython","exit","quit"]

for name, obj in globals().items():
    if name in exceptions or name[0]=="_"::
        continue
    if dill.detect.errors(obj) is not None:
        print(name)
        problemDict[name]=obj

我删除了两个有问题的对象(以及之后的摘要字典)

for name, obj in problemDict.items():
    print(name)
    del(globals()[name])

他们从我的命名空间中消失了,但我仍然得到同样的错误:

TypeError:无法腌制“tensorflow.python._tf_stack.StackSummary”对象

keras 模型还能“隐藏”在某个地方吗?导入是否已经使会话变得不可拾取?不幸的是, dill.dump_session 源代码并没有真正帮助我。(https://github.com/uqfoundation/dill/blob/master/dill/_dill.py#L343

编辑:“dill.detect.trace(False)”-输出也没有帮助。不知道该怎么办:

...
# T4
2021-04-14 14:12:34,726 # T4
# D2
2021-04-14 14:12:34,727 # D2
# D2
2021-04-14 14:12:34,728 # D2
D2: <dict object at 0x7ffa9030a6c0>
2021-04-14 14:12:34,728 D2: <dict object at 0x7ffa9030a6c0>
D2: <dict object at 0x7ffa90305b80>
2021-04-14 14:12:34,736 D2: <dict object at 0x7ffa90305b80>
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
...

任何帮助表示赞赏!

4

1 回答 1

1

虽然原来的笔记本早就关闭了(无法解决),但我遇到了类似的问题。同样,一些变量是不可选择的,并且似乎驻留在一些 ipython 变量之后del。手动删除“Out”/“_oh”-keys/items 没有帮助,但是

%reset out

使会话终于可以再次挑选了!

上帝,我真的希望这是根本问题...

于 2021-10-26T18:14:42.220 回答