Pytorch用法说明

1. pytorch基本用法

1. torch.tensor

  • torch.tensor是默认的tensor类型(torch.Floattensor)的简称。

2. torch.Tensor与torch.tensor的区别

  • 相同点: 两者都是用于生成新的张量tensor,其中tensor是一种数据类型。包含单一数据类型元素的多维矩阵。

  • 不同点: torch.Tensor是python类,默认张量类型为torch.FloatTensor的别名。

  • 例如,torch.Tensor([1,2])会调用Tensor类的构造函数init,生成floattensor类型的张量。 torch.tensor仅仅是python的函数,主要是将一个data封装成一个tensor。

  • 其函数原型是:torch.tensor(data,dtype=None,device=None,requires_grad=False) 其中data可以是list || tuple || array || scalar等类型。

  • torch.tensor可以从data中的数据部分做拷贝copy(而不是直接引用),根据原始数据类型生成相应的torch.LongTensor、torch.FloatTensor、torch.DoubleTensor。

3. transforms.ToTensor与transforms.ToPILImage

2. Pytorch错误类型

1. 模型的分类数不匹配

RuntimeError: CUDA error:CUBLAS_STATUS_ALLOC_FAILED when calling cublasCreate(handle)

2. 标签越界

RuntimeError: CUDA error: device-side assert triggered

Solution:

  1. 首先检查自己的标签是否从0开始;

  2. 将模型、损失函数、张量全部转到CPU上面运行或者debug,此时会报错具体的位置。因为cpu比cuda更能够定位自己的错误所在。在debug模式下,我发现的确是因为某个索引越界导致程序异常(但是cuda始终告诉我是标签越界)

3. pytorch中梯度求导只能针对FolatTensor类型吗?

Yes 关于这个问题如果有人了解,麻烦请告知一声,主要小编也不太清楚,只不过是根据所查资料得出的结论,若有错误,请加以指正。

若有错误,请加以指正,感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值