美文网首页pytorch
2. pytorch-基本数据类型

2. pytorch-基本数据类型

作者: FantDing | 来源:发表于2018-06-29 17:28 被阅读786次

1. Tensor

1.1. 如何生成Tensor

  • 构造函数torch.FloatTensor(list/ndarray)
  • 从numpy转换torch.from_numpy(ndarray)
  • 区别:
    • 使用构造函数的方法FloatTensor()不与numpy数组共享内存,因此from_numpy()的内存利用率更高
    • FloatTensor()会生成torch.FloatTensor类型数据,而from_numpy()生成的tensor类型和参数相一致

1.2. 数据类型转换

We DO not recommend double for performance, especially on the GPU. GPUs have bad double precision perf and are optimized for float32 performance.参考 即不推荐使用DoubleTensor

  • tensor.float()转换成浮点的tensor: torch.FloatTensor
  • 值得注意的是: numpy的rand、linspace操作生成的默认生成float64数据(numpy用于科学计算目的是精确),如果使用from_numpy(float64_ndarray)则会生成DoubleTensor,这样是不推荐的; 而torch.rand/linspace会生成FloatTensor性能会更好(torch更注重性能, float精度在神经网络中完全够用)

1.3. 属性

1.4. 方法

1.4.1. 数学操作

  • torch.mean(): 参数必须是FloatTensor

2. Variable

2.1. Variable生成

仅仅可以传入Tensor

  • Variable(tensor) # 不可以是ndarray之类

2.2. 属性

  • grad 梯度

2.3. 方法

  • backward() 反向传播

3. 示例代码

import numpy as np
import torch
from torch.autograd import Variable

np_data=np.arange(4,dtype=np.float).reshape(2,2)+1
print(np_data)
# [[1. 2.]
#  [3. 4.]]
tensor=torch.from_numpy(np_data)
variable=Variable(tensor,requires_grad=True)
# variable=Variable(np_data,requires_grad=True) # 只能传入Tensor
t_out=variable*variable
out=torch.mean(t_out)
# 反响传播
out.backward()
v_grad=variable.grad
print(v_grad)
# tensor([[ 0.5000,  1.0000],
#         [ 1.5000,  2.0000]], dtype=torch.float64)

相关文章

网友评论

    本文标题:2. pytorch-基本数据类型

    本文链接:https://www.haomeiwen.com/subject/hpnayftx.html