模型和数据是否在GPU

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 的。

在这里插入图片描述
模型和数据是否在GPU_第1张图片
但是要转换的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

  1. torch.rand 均匀分布
  2. torch.randn 标准正态分布
  3. torch,normal(means, std) 离散正态分布
  4. torch.linsapce(start, end, steps=100) --> Tensor 线性间距向量 Numpy
  5. 生成器
  6. 简单随机数
  7. np.random.rand() 均匀分布
  8. np.random.randn() 标准正态分布
  9. np.random.randint(low, high, size, dtype)
  10. [0,1) 之间产生随机数 .random_sample([size])
  11. .random 同上
  12. .sample([size]) 同上
  13. .choice(a[, size, replace, p]) 从a中随机选择指定数据, a 必须是一维数组
  14. 分布 numpy.random模块提供了产生多种分布随机数的API
  15. 排列 ————————————————
    参考文章

torch.rand(2)生成一维的随机数
torch.rand(2,3)生成二维 23的二维数组
torch.randn()用法同上
torch.zeros([2,3])生成二维2
3的二维数组

使用格式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()

你可能感兴趣的:(python,numpy,python,深度学习)