StackGAN-v2源码复现实录(报错记录,不再更新)

1.datasets.py中的 line 190中的filenames 应该是所有caption的名字:打印出来一大串;但是filename.pickle中有,后来发现是captions.pickle未导入。

2.AttributeError: module 'torch._C' has no attribute '_cuda_setDevice'
我猜测是没有安装cuda的缘故,也没有GPU
没有GPU 就令gpu设置为 -1 : --gpu_id -1
没有cuda就安装了(转战服务器)。
3.

layers = [ ]
layers = blablablabla
nn.Sequential(*layers)

列表前面加星号作用是将列表解开成多个独立的参数,传入函数。
字典前面加两个星号,是将字典解开成独立的元素作为形参。

4.在vscode调试python的模式中,运行模型传递参数:
通过设置debug的launch.json 中的arg参数,注意空格不可以写入,要分开写成一个个的字符串。(第一次发现launch.json的作用★,°:.☆( ̄▽ ̄)/$:.°★ 。)

5.vscode中的路径问题:
在launch.json设置cwd 即可变成常规的相对路径模式,vscode中的 ./ 指的相对工作路径,也就是**.vscode** 所在的文件夹,而getcwd会输出我们目前cd到的路径。fileDirname指的是: the current opened file’s dir name;而不设置的时候默认应该是当前的工作路径(.vscode所在路径)吧我猜的。

6.THCudaCheck FAIL file=..\torch\csrc\cuda\Module.cpp line=33 error=10 : invalid device ordinal
报这样的错误应该是 GPU_id 设置为1的问题,因为本 本本只有一块GPU,所以我先给它改成0。然而改成0后总是报out of memory的问题:尝试改小batchSize的大小:100改成1。(总之显存不够的问题,买显卡吧🤭)

7.open('文件名')as f
f.read() 读出的是str类型噢,所以str.decode(‘utf-8’)会报错,得改成成str.encode(‘utf-8’).decode(‘utf-8’);后面在测试作者的预训练模型的时候又出现了类似的问题,什么UnicodeDecodeError: 'ascii' codec can't decode byte 0xbe in position 3: ordinal not in range(128),那就在在open的时候加一下编码:

with open(cap_path, "r", encoding='utf8') as f:

8.Pillow 的 imageFont.turetype报错 OS cannont open resource
应该就是指定的字体它指定的文件夹里没有,并且win系统自带的字体里也没有,所以报错。

9.在使用到np.bincount()等需要传入整型并且一维的数组时,必须要把参数从float64(如果它是)转换成int64类型,如果是list,就:list.astype(int)

10.Error(s) in loading state_dict for Inception3:missing key(s) in state_dict:“balabla”
解决:将net.load_state_dict(checkpoint['net'])
这句改为net.load_state_dict(checkpoint['net'], False)
也就是把load_state_dict方法中传入的strict=True改为False

11.list index out of range
我遇到的是yml的配置文件和config.py文件之间的优先级的问题,事实证明,config.py的优先级不够yml大。

12.本地电脑连接到linux服务器的pycharm相关,路径映射问题俺可以写一大盆(这里先写一点点):
本地与服务器路径映射时:interpreter的映射要将本地将要映射的项目文件夹所在的文件夹(即父文件夹)映射到服务器上自己创建的任意文件夹中的相应的父文件夹(也就是映射后的文件夹将成为保存任何映射过来的文件的存储地)
而在deployment->configuration中也是相同,并且记住rootpath与mapping。

13.requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8097): Max retries exceeded with url: /update (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f7eae206828>: Failed to establish a new connection: [Errno 111] Connection refused',))
解决:看那个端口号,俺一看到想到了visdom(因为visdom是8097),所以就通过anaconda运行visdom后即解决(就是visdom没开导致的,所以跑实验前先看visdom开了没有(如果用了visdom的话)。

14.对于tensor多取其data,取item会报错bulltin function balabala
errG_total 俺设置为err_uncond + kl_loss,真是魔改啊!(叹气
tensor取**.data之后的结果:tensor(1.3790, device=‘cuda:0’)
tensor取
.item()之后即为其对应的值**了。
但是在visdom中Y=tensor.data好像也不会报错
item是取值,data得到的是tensor,所以visdom画图的Y参数请让俺取item()!!!!

15.本地可视化远程服务器上运行的visdom的方法(本地:windows,服务器:Linux)
首先在服务器中的/home/dell/.ssh文件夹下找到 id_rsa,这就是这台服务器生成的私钥,拷到本地windows的C盘Users文件夹下的.ssh文件夹中,然后点击该私钥文件,点击属性,在“高级”中将那些能接触修改这个文件的人都“禁用继承”后删掉,只留下自己这个User(保持状态为启用继承)。然后…………(待更新)

16.你说为什么俺的visdom只有一条横线在上下动,没有一点折线的样子呢?因为你他么把update=‘append’写进opts=dict()里去了!!!

17.更换resblock为别的module后出现的bug:就是在计算real_logits时候发现总是报错,由于在cuda下所以又不能清楚的知道什么错,后来通过比对,才发现原来是BCELoss的输入必须严格在0~1之间,所以在输入之前请用sigmoid,或者别的。

18.torch.nn.modules.module.ModuleAttributeError: 'DataParallel' object has no attribute 'attn1'
该问题出现在将模型放到DataParalle 之后,模型类中**init**初始化定义的一些变量就无法取到.
解决:取该模型.module.该变量名
如:model2.module.attn1
19.visdom:ValueError: only one element tensors can be converted to Python scalars
待更新
20.‘xxxx’ object has no attribute ‘_parameter’
很有可能是运行环境与调用模型的环境不一致(别人提供的预训练模型),可以尝试下面21的解决方案。
21.RuntimeError: Error(s) in loading state_dict for DataParallel: Unexpected key(s) in state_dict: "module.h_net3.jointConv.0.weight", "module.h_net3.jointConv.1.weight", "module.h_net3.jointConv.1.bias", "module.h_net3.jointConv.1.running_mean", "module.h_net3.jointConv.1.running_var", "module.h_net3.residual.0.block.0.weight", "module.h_net3.residual.0.block.1.weight", "module.h_net3.residual.0.block.1.bias", "module.h_net3.residual.0.block.1.running_mean", "module.h_net3.residual.0.block.1.running_var", "module.h_net3.residual.0.block.3.weight", "module.h_net3.residual.0.block.4.weight", "module.h_net3.residual.0.block.4.bias", "module.h_net3.residual.0.block.4.running_mean", "module.h_net3.residual.0.block.4.running_var", "module.h_net3.residual.1.block.0.weight", "module.h_net3.residual.1.block.1.weight", "module.h_net3.residual.1.block.1.bias", "module.h_net3.residual.1.block.1.running_mean", "module.h_net3.residual.1.block.1.running_var", "module.h_net3.residual.1.block.3.weight", "module.h_net3.residual.1.block.4.weight", "module.h_net3.residual.1.block.4.bias", "module.h_net3.residual.1.block.4.running_mean", "module.h_net3.residual.1.block.4.running_var", "module.h_net3.upsample.1.weight", "module.h_net3.upsample.2.weight", "module.h_net3.upsample.2.bias", "module.h_net3.upsample.2.running_mean", "module.h_net3.upsample.2.running_var", "module.img_net3.img.0.weight".

这出现在加载作者的预训练模型的时候,一般是因为作者的训练环境与我们现在加载的环境不一致,所以改一下。

netG.load_state_dict(state_dict, strict=False)

一般这样就可以了。

22.Can't get remote credentials for deployment server dell@xxx.xxx.xxx.xxx:xx key
一般是想要上传到的远程服务器的文件夹权限问题,可以采用chmod修改远程服务器目标文件夹的权限,然后再上传(认真检查所有权限)。

23.pycharm远程服务器配置的某一interpreter为empty
这种情况建议重新创建interpreter,仔细设置一遍。
24.TypeError: 'module' object is not callable
import module方式操作module的变量时,本地不会创建新变量,操作的是目标模块的变量!
from module import *方式操作module变量时,实质上是在本地创建一个与目标模块相同的变量名,并且默认与目标模块变量指向同一个内存空间。(摘抄)

25.ValueError: too many values to unpack (expected 2)
我遇到的是函数只返回一个值我却写了两个变量等待赋值。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值