添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
cpu_imgs.numpy()

5. note:GPU tensor不能直接转为numpy数组,必须先转到CPU tensor。

6. 如果tensor是 标量 的话,可以直接使用 item() 函数 (只能是标量) 将值取出来:

print loss_output.item()
我想要对一个大批量的 数据 分批输入模型得到所有的embedding,但是过程进行到 间报 cuda out of memory。经查勘是因为早些的embedding没有及时从 cuda 释放内存导致后面的model无法进行forward。 只需要 pytorch tensor . cpu ()就可以释放了。 举个例子: embeddings=[] for batch in data_loader: embedding_batch=model(input_data) embeddings.append(e 前面的博客简单讲了Variable和Parameter的区别,这次加入tenor,详细的分析三者的区别和联系。文 参考了 Pytorch Tensor , Variable & Parameter 1. Tensor pytorch Tensor 类似于 numpy 的array,而不直接用 tensor 的原因,是因为 tensor 能够更方便地在 GPU 上进行运算。 pytorch tensor 设计了许多方便的操作,同时 tensor 也可以轻松地和 numpy 数组进行相互 转换 。 2.Variable         Variable是对 Tensor 的封装,操作与 tensor 基本一致,不同的是 # 以下代码只有在 PyTorch GPU 版本上才会执⾏行行 if torch. cuda .is_available(): device = torch. device (" cuda ") # GPU y = torch.ones_like(x, device = device ) # 直接创建一个在 GPU 上的 Tensor x = x.to( device ) # 等价于 .to(" cuda ") z = x + y print(z) print(z.to(" cpu ", torch.double)) # to()还可以同时更改. PyTorch 教程-7: PyTorch 保存与加载 tensor 和模型详解 保存和读取 Tensor PyTorch tensor 可以保存成 .pt 或者 .pth 格式的文件,使用torch.save()方法保存张量,使用torch.load()来读取张量: x = torch.rand(4,5) torch.save(x, "./my Tensor .pt") y = torch.load("./my Tensor .pt") print(y) tensor ([[0.9363, 0.2292, 0.1612, 普通的计算都是发生在 cpu 里的,如果 数据 cpu ,那么可以通过 x. numpy ()方法将 tensor 转为 numpy 要调用 gpu 计算要 x. cuda (), 如果还要回到内存要先. cpu 除char tensor 外所有 tensor 都可以 转换 numpy import torch as tor import numpy as np a = tor.ones(5) tensor ([1., 1., 1., 1., 1.]) a.dev 因为data. cpu 后,会将data的类型改为builtin_function_or_method,所以一定记得加()报错里面的内容就已经告诉我们怎么改了,即在 数据 后面加. cpu ()在 cpu 上运行 tensor 张量,会出现如下报错。其 data可以是一维,二维,三维等等。注意 cpu 后面加(),否则会报错。个人遇到的bug记录。 有时候,需要查看模型和 数据 是在 GPU 上,还是在 CPU 上;或者需要将模型和 数据 放在指定的 GPU 或者 CPU 上,那该怎么做呢? 1. 判断模型是在 GPU 上还是 CPU 上 model = nn.LSTM(input_size=10, hidden_size=4, num_layers=1, batch_first=True) print(next(model.parameters()). device ) 2.判断 数据 是在 GPU 上还是 CPU 上 data = torch.ones([2, 3]) print(d