创建tensor
- 从numpy导入

- 从list里面导入
tips: orch.tensor()里面的参数只能是numpy数据或list,即现成的数据;torch.Tensor/FloatTensor()参数为数据的维度,如果是接收现成的数据,要用list形式,如第四行表示方法(不建议使用,易混淆),如果是torch.Tensor/FloatTensor(2,3)表示数据shape为2*3
-
创建未初始化数据,即申请内存空间
三种方法,在数据使用前记得覆盖原有的随机初始化的值,小括号内的参数均表示数据的维度,即shape
Tips:默认类型
设置默认数据类型的方法:torch.set_default_tensor_type(torch.DoubleTensor)
否则默认数据类型为torch.FloatTensor
-
随机初始化
rand()表示在[0,1]之间均匀采样 rand_like()的参数是tensor randint(min,max,shape) randn(shape)表示正态分布的随机数据 normal(mean,std)

- 其他常用API
full(shape, num) 生成一个全为num的,shape为shape的数
arange/range(min,max,step)
linspace/logspace(min,max,total_num)
ones/zeros/eye(shape),其中eye()只能是一维或两维
randperm(num)随机打散num个数
索引与切片
- 下标索引

- 切片

- 隔行采样
两个冒号连在一起表示隔行取样::,中间没有逗号 - 具体维度下的采样

- …任意多的维度
主要用在取中间的全部,但是最后一个维度另外操作,比如隔行取样 - 掩码索引
使用不多,因为会把数据打平

- 打平索引
使用不多
维度变换
操作方法
-
view/reshape(),功能一样 只要保证总的数据维度不变(1.) 忽略位置信息,通道信息,适合全连接层(2.) 只关注宽的信息,把所有照片的行和通道信息合并不关注(3.) 照片和通道信息合并,不关注来自哪张照片和哪个通道,只看行列信息(4.) 恢复数据时必须满足之前的维度信息

-
squeeze()/unsqueeze() unsqueeze() index为正数,则在index之前插入,index是负数,则在index位置之后插入。前后按照正常的从左到右,右边是后面,插入的是是维度
squeeze()

-
expand/repeat() expend()只能将原来是1的地方变为N,-1表示保持不变 不会主动复制数据,推荐

-
repeat()参数表示对应位置拷贝的次数
不推荐,因为会更改memory,占有内存变多,不能使用原来的数据

- ** .t()**
- Transpose() 一次只能两两交换

- permute()参数对应依次表示变换之前的下标
