dailenson / SDT

This repository is the official implementation of Disentangling Writer and Character Styles for Handwriting Generation (CVPR 2023)
MIT License
968 stars 82 forks source link

請問在訓練時,遇到了序列化的問題,出現了這樣的錯誤代碼 TypeError: cannot pickle 'Environment' object 請問有甚麼解決方式呢? #23

Open danny1120 opened 1 year ago

dailenson commented 1 year ago

你的环境里面安装了pickle包嘛?试试pip install pickle

danny1120 commented 1 year ago

感謝您的回答,在安裝pickle4後,出現了新的錯誤,但感覺起來之前的錯誤,貌似依然沒有被解決。 以下是出現的錯誤代碼: TypeError: cannot pickle 'Environment' object self = reduction.pickle.load(from_parent) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ EOFError: Ran out of input 不曉得您有沒有遇到這樣的問題呢?再次感謝您的回答

dailenson commented 1 year ago

你是否把我们的pickle文件正确下载了呀?然后检查下路径对不对?还有就是你的命名,self一般是关键字,不可以用这个命名的哦

danny1120 commented 1 year ago

你們有提供pickle文件嗎?由於在網路上搜尋目前似乎只有pickle4 & pickle 5不過本身的環境無法安裝5所以選擇安裝4,不知道是否可以提供你們使用的pickle,謝謝

dailenson commented 1 year ago

pickle库的版本应该不会影响太多。我的意思是,你是否加载了我们以pickle形式存储的数据集?

danny1120 commented 1 year ago

有的 放置在data的資料夾中

wymjeef commented 1 year ago

@dailenson 你好,我也有同样的问题,所以借楼请问一下: 网盘下载的数据文件,放置到源码目录的路径位置,也是根据网盘里的目录路径来存放吗?

Hanezzzz commented 10 months ago

windows系统的话,test.py代码里DataLoader的num_workers=0就行了

fu402138670 commented 9 months ago

windows系統的話,test.py 代碼裡DataLoader的num_workers=0就行了

謝謝你的分享! 我想在訓練中出現的話,應該是改train.py中的num_workers=0.

不過,num_workers=0的速度很慢,有辦法解決嗎?

yang1161519465 commented 8 months ago

windows系統的話,test.py 代碼裡DataLoader的num_workers=0就行了

謝謝你的分享! 我想在訓練中出現的話,應該是改train.py中的num_workers=0.

不過,num_workers=0的速度很慢,有辦法解決嗎?

我也遇到了相同的问题,请问一下您的运行速度解决了吗

fu402138670 commented 8 months ago

hi,要改multi threads重Œ‘class,架˜‹改„颖容^大,所以我放—‰了。也用4090‡^,一˜拥†–}。不知道用ubantu的版本是不是就能解›Q。

Regards CY +886983678014 From iOShttps://aka.ms/o0ukef


寄件者: yang1161519465 @.> 寄件日期: Monday, December 18, 2023 11:38:05 PM 收件者: dailenson/SDT @.> 副本: CY @.>; Comment @.> 主旨: Re: [dailenson/SDT] ˆ†–在–š•r,遇到了序列化的†–},出F了@˜拥腻e`代a TypeError: cannot pickle 'Environment' object ˆ†–有甚N解›Q方式呢? (Issue #23)

windows系y的’,test.py 代aeDataLoader的num_workers=0就行了

xx你的分享! 我想在–š中出F的’,‘“是改train.py中的num_workers=0.

不^,num_workers=0的速度很慢,有k法解›Q†幔

我也遇到了相同的问题,请问一下您的运行速度解决了吗

― Reply to this email directly, view it on GitHubhttps://github.com/dailenson/SDT/issues/23#issuecomment-1860838821, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AYXOFIPT7T2XGRYMX3SHJETYKBPN3AVCNFSM6AAAAAA4N2AVFOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNRQHAZTQOBSGE. You are receiving this because you commented.Message ID: @.***>

qiuzhiyuye commented 8 months ago

我也同样是TypeError: cannot pickle 'Environment' object报错 修改test.py中的num_workers=0可以运行,但显卡负载为0,貌似是CPU在运算,负载图型类型锯齿波 作者说的“加载以pickle形式存储的[数据集]”不知道是如何操作 我就是把网盘data文件放在源文件目录中,并把CASIA_CHINESE文件夹进行解压 最后设置了路径--pretrained_model D:/CVPR2023_SDT/SDT-master/data/CASIA_CHINESE/checkpoint-iter199999.pth 不知道操作是否正确

所以改成零之后你可以跑出结果了吗

pledge42 commented 8 months ago

已解决TypeError: cannot pickle 'Environment' object问题 因为windows操作系统的原因,在Windows中,多进程multiprocessing使用的是序列化pickle来在多进程之间转移数据,而socket对象是不能被序列化的,但是在linux操作系统上却没问题,因为在linux上多进程multiprocessing使用的是fork,所以在windows上可以改用多线程。(这是网上查的)

简单来说Linux就不需要任何改动代码,就可以运行 !!!注意!!!虚拟机Linux是不能安装显卡驱动并使用CUDA的!!!! b858a6a7df5f10604d8e398595d1af4 图中是用学校服务器里的A100显卡来运行的,至于怎么调用两块A100需要再研究一下

要在Windows上进行运行需要将test.py中的num_workers=0就行 但我的两台电脑打开资源管理器的时候都出现了只调用CPU而GPU不动的情况 image 可能是torch版本号和Windows系统的兼容问题 在cmd中输入nvidia-smi可以查看显卡运行情况(非实时刷新) image 参考3060laptop性能使用pretrained推演大概需要46分钟,实验室单张A100大概需要15分钟,性能大概相差3倍也能证明确实在用显卡运算