PyTorch查看模型和数据是否在GPU上
data = torch.ones([2, 3])
print(data.device) # 输出:cpu
此外,用.is_cuda也可以判断模型和数据是否在GPU上,例如: data.is_cuda
标题AttributeError: ‘numpy.ndarray’ object has no attribute ‘cuda’
直接将用np生成的数组改为用torch生成就可以 torch生成的直接为tensor变量
gamma[l,:,:]=(tau*rhop)*betamk**2
beta[l,:,:]=betamk
data.append(betamk.reshape(-1))
上面左面的格式为numpy的格式 等式右边为tensor的形式 所以报出了这个错误
原因:
在我们想把 GPU tensor 转换成 Numpy 变量的时候,需要先将 tensor 转换到 CPU 去,因为 Numpy 是
CPU-only 的。
但是要转换的list里面的元素包含多维的tensor,应该使用
val= torch.tensor([item.cpu().detach().numpy() for item in val]).cuda()
这是由于 gpu上的 tensor 不能直接转为 numpy; 须要先在 cpu 上完成操做,再回到 gpu 上。
问题描述 解决办法 补充
1.torch.Tensor 转 numpy
2.numpy 转 torch.Tensor
3.torch.Tensor 转 list
4.list 转 numpy
5.numpy 转 list
python 基本语法——随机数的生成 torch & numpy
生成随机数 Torch
- torch.rand 均匀分布
- torch.randn 标准正态分布
- torch,normal(means, std) 离散正态分布
- torch.linsapce(start, end, steps=100) --> Tensor 线性间距向量 Numpy
- 生成器
- 简单随机数
- np.random.rand() 均匀分布
- np.random.randn() 标准正态分布
- np.random.randint(low, high, size, dtype)
- [0,1) 之间产生随机数 .random_sample([size])
- .random 同上
- .sample([size]) 同上
- .choice(a[, size, replace, p]) 从a中随机选择指定数据, a 必须是一维数组
- 分布 numpy.random模块提供了产生多种分布随机数的API
- 排列 ————————————————
参考文章
torch.rand(2)生成一维的随机数
torch.rand(2,3)生成二维 23的二维数组
torch.randn()用法同上
torch.zeros([2,3])生成二维23的二维数组
使用格式status.norm.cdf(Norm) # 相当于已知正态分布函数曲线和x值,求函数x点左侧积分
CDF(cumulative distribution function)累积分布函数就是 分布函数,即概率密度函数的积分。
SciPy 是一个开源的 Python 算法库和数学工具包。
Scipy 是基于 Numpy 的科学计算库,用于数学、科学、工程学等领域,很多有一些高阶抽象和物理模型需要使用 Scipy。
Pandas 是 Python 语言的一个扩展程序库,用于数据分析。
th torch.no_grad()原来是因为验证集的时候,我们只是想看一下训练的效果,并不是想通过验证集来更新网络时,就可以使用with torch.no_grad()