PyTorch Tersor 相关函数

1. 生成随机排列

  t.randperm(5)

2. 重新调整tensor形状

  a = t.range(0,6)
  a.veiw(2,3)
PyTorch Tersor 相关函数_第1张图片
 a.unsqueeze(1)  #注意形状,在第一维(下标从0开始)上增加1
PyTorch Tersor 相关函数_第2张图片
  a.unsqueeze(1)  #压缩第1维的‘1’
  a.unsqueeze()   #把所有维度维“1”的压缩
PyTorch Tersor 相关函数_第3张图片
  a.resize_(4,3) #旧的数据依旧保存着,多出的数据会分配新空间
PyTorch Tersor 相关函数_第4张图片
图片.png

3.设置下限和上界

   t.clamp(a, min = 3)
   t.clamp(a, max = 4)
PyTorch Tersor 相关函数_第5张图片

4. Tensor和Numpy转换
Tensor和Numpy数组之间具有很高的相似性,彼此之间的互操作也非常简单高效。需要注意的是,Numpy和Tensor共享内存。由于Numpy历史有据,支持丰富的操作,所以当遇到Tensor不支持的操作时,可先转成Numpy数据,处理后再转回tensor,其转换开销很小。

 b = t.from_numpy(a)
 b = t.Tensor(a)
 f  = b.numpy()
PyTorch Tersor 相关函数_第6张图片

5.autograd
PyTorch在autograd模块中实现了计算图的相关功能,autograd中的核心数据结构时Variable。Variable封装了tensor,并记录对tensor的操作记录用来构建计算图。

PyTorch Tersor 相关函数_第7张图片

data: 保存variable所包含的tensor
grad: 保存data对应的梯度,grad也是variable,而不是tensor,它与data形状一致。
grad_fn:指向一个Function,记录tensor的操作历史,即它是什么操作的输出,用来构建计算图。如果某一个变量是有用户创建的,则它为叶子节点,对应的grad_fn等于None.

非叶子节点grad计算完之后自动清空.那如何获取中间变量的梯度?

 t.autograd.grad(z,y)  #z对y的梯度,隐式调用backward()

你可能感兴趣的:(PyTorch Tersor 相关函数)