PyTorch中的Tensor

import torch as T //version==0.3.1

####生成一个Tensor(t)
可以与list或numpy中的array互相转化:

t=T.Tensor(list)
t=T.Tensor(np.array)
t=T.from_numpy(np.array)
list=T.tolist(t)
array=t.numpy()

Tensor和np.array共享内存,所以他们之间的转换很快,而且几乎不会消耗什么资源。但这也意味着,如果其中一个变了,另外一个也会随之改变。 所以有些PyTorch没有但numpy有的操作可以以很小的代价进行“曲线救国“
指定维度的Tensor:

t=T.Tensor(d1,d2,...)
t=T.ones(d1,d2,...)
t=T.zeros(d1,d2,...)
t=T.eye(d1,d2)

由于Tensor的size是一个专门的类型,所以上面的维度也可以由size类型指定。(eye()的参数仅包括1-2个int)

t=T.Tensor(t.size())
t=T.ones(t.size())   //t=T.ones_like(t)
t=T.zeros(t.size())  //t=T.zeros_like(t)

均分区间生成Tensor、

t=T.arange(m,n,step_length) //[m,n)中m开始以步长step_length生成
t=T.range(m,n,step_length)  //[m,n-1]中m开始以步长step_length生成
t=T.linspace(m,n,step_num)  //[m,n]中以m为首项,n为末项,均分区间为step_num段

随机化生成

t=T.rand(t.size())    //均匀分布
t=T.randn(t.size())   //标准正态分布
t=T.normal(mean,std)  //size同t.Tensor(),每个数以对应的均值mean和标准差std[i,j,...]正态采样。

新建空Tensor和全值Tensor

t=T.empty(t.size())
t=T.empty_like(t)
t=T.full(t.size(),value)
t=T.full_like(t,value)

指定不同类型数据的Tensor
Data type | CPU tensor | GPU tensor

  • | :-: | -:
    32-bit floating point | T.FloatTensor | T.cuda.FloatTensor
    64-bit floating point | T.DoubleTensor | T.cuda.DoubleTensor
    16-bit floating point | T.HalfTensor | T.cuda.HalfTensor
    8-bit integer (unsigned) | T.ByteTensor | T.cuda.ByteTensor
    8-bit integer (signed) | T.CharTensor | T.cuda.CharTensor
    16-bit integer (signed) | T.ShortTensor | T.cuda.ShortTensor
    32-bit integer (signed) | T.IntTensor | T.cuda.IntTensor
    64-bit integer (signed) | T.LongTensor | T.cuda.LongTensor
    ###观察一个Tensor(t)
t.size()            //返回size类型
T.numel(t)          //返回总元素个数
t.view(d1,d2,d3....)//维度重整
t.unsqueeze(di)     //在di个维度处升维、
t.squeeze(di)       //若di维是1,压缩,否则不变。若无参数,压缩所有“1”维
T.cat((t,t,...),di) //按第di的维度按照tuple的格式复制t
T.chunk(t,i,di)     //在di维上将t分成i份,最后一份的维度不定(若不能整除)

采数据

T.index_select(t, di, indices)  //在第di维上将t的indices抽取出来组成新Tensor。
T.masked_select(t, mask)        //按照0-1Tensor mask的格式筛选t,返回一维Tensor
T.nonzero(t)                    //输出n×2维Tensor,非零元素的index

指定不同类型数据的Tensor

t.size()            //返回size类型
T.numel(t)          //返回总元素个数
t.view(d1,d2,d3....)//维度重整
t.unsqueeze(di)     //在di个维度处升维、
t.squeeze(di)       //若di维是1,压缩,否则不变。若无参数,压缩所有“1”维
T.cat((t,t,...),di) //按第di的维度按照tuple的格式复制t
T.chunk(t,i,di)     //在di维上将t分成i份,最后一份的维度不定(若不能整除)

一些数学功能类似于numpy,这里就不再赘述了,边用边整理吧。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值