pytorch遇到的问题---不定期更新

之前做彭老师的项目(人体属性),就是有这个问题!

例如:

a = torch.Tensor((1,2,3))

b = torch.Tensor((3,4,5))

想要变成[[1,2,3],[3,4,5]]

错误做法:

a = np.array(a.data.cpu())

b = np.array(b.data.cpu())

c = np.vstack((a,b))

c = Variable(c).cuda()


正确做法:

c = Torch.stack([a,b],0)



原因:进行bp的时候,会中断

 

 

Operation ban inplace

不能内联加减,除非另赋值

内联可以乘除,这些没问题

什么意思?其实很好理解:

c=torch.Tensor(torch.randn(2,3))#其中新版本的pytorch torch.Tensor已经可以自带variable了

c=c*2

w=torch.Tensor(torch.randn(2,3))

d=c*w

这是可以继续bp的,因为c=c*2是可以bp的

c=torch.Tensor(torch.randn(2,3))#其中新版本的pytorch torch.Tensor已经可以自带variable了

c=c-2

w=torch.Tensor(torch.randn(2,3))

d=c*w

这是不可以继续bp的,op是有保护机制的,即如果计算w=w+alpha*dw,那么(c:dw)到底是减2的c还是不减2的,因为有保护机制,所以c只能是torch.Tensor(torch.randn(2,3)),而不是c=c-2,如果实在想c=c-2,那么另设一个变量,比如a=c-2

 

 

不同的weight给不同的loss,可以看出这个loss的权重,但是weight一定要加上softmax,要不然都会bp为0

 

 

Can't write viminfo file /*/.viminfo!

1 切换到root用户(一定要)

2 rm -f .viminf*.tmp

 

遇到ubuntu里面同样的东西,或者是蓝色,绿色的东西,用”ll“命令看是否是链接

posted @ 2019-03-11 14:28  freebirds  阅读(428)  评论(0编辑  收藏  举报