Folders and files Name Name Last commit message
Last commit date
parent directory
View all files
size = shape 看形状
dim = len(size) 维度个数
numel 有多少个元素
shape = 空 标量 loss之类的
shape = 1 向量 线性输入,bias等
shape = 2 batch of 线性输入
shape = 3 RNN input
shape = 4 CNN input
torch.rand(1,2,3) 均匀分布一个形状[1,2,3]的
torch.randn(1,2,3) 正态分布一个...的
torch.FloatTensor(1,2,3) 随机分布一个[1,2,3]的Float Tensor
从numpy来: torch.from_numpy(a)
从list来: torch.tensor(list)
默认基本都是float
rand 均匀分布, randn 正态分布
*_like(a) 弄一个和a形状一样的
randint(1,10,[2,3]) [1,10],形状为(2,3)
full ([2,3],7) 形状为[2,3]全是7
arange(0,10,2) [0,10),间隔为2,返回torch的vector
linespace/logspace (0,10,steps=4) 均匀的[0,10]的四个数字
logspace (0,-1,steps=4) 均匀的[0,0.1]的四个数字,base设置底数
onse,zeros,eye 全零,全一,对角阵
randperm(10) [0,10)的打乱的数组,常用于shuffle
设a.shape = [4,3,28,28]
a[0,0,2,3] 取一个标量出来
a[2] 取第一个维度的第二个
一个冒号,全部包含,左,右,俩冒号,最右边代表间隔
a[:2,3] 第一个维度的[0,2),第二个维度的3
a[2,2,::3,1:23:2] 第四个维度的[1,23) 间隔为2
a[2,...,3] 第一个维度2,最后维度3,中间都取
a.index_select(3,torch.tensor(2,3))
第3个维度的第2,3号
必须用Tensor
等价于[:,:,[2,3],:]
mask大法
mask = a.ge(0.5) 返回一个全是TF的东西,大于等于0.5
torch.masked_select(a,mask)
返回一个vector,拍平了的
take大法(不常用)
torch.take(src,torch.Tensor([0,3,5]))
拍平了src,把序号035的返回
view = reshape
a.view(1,3,5,6)
只要元素数目一致,就可以搞,但是最好时刻跟踪住存储顺序
Squeeze and unsqueeze
unsqueeze 新的增加的维度的位置在哪里
squeeze 把哪个的维度数目为1的维度删除,不写就是全删
常和Expand等函数一起用,用于拓展bias
Expand Repeat 假设a[1,1,14,14]
前者为拷贝引用,a.expand(3,3,14,14) 新维度[3,3,14,14],仅1可以变,拷贝引用,一个变了一群变
懒得写的话,保持一致的话写-1,比如a.expand(-1,3,-1,-1)
Repeat 深拷贝,占用内存,但是是实打实的拷贝,另外,内部的数字为每个数字的拷贝次数
.t 转置函数,仅仅可以对维度为2的搞事情
Transpose(1,3) 对1,3的维度进行转置,为了保证存储连续性,最好后接contiguous()
permute(0,2,3,1)一次转置多个维度,内部为新的顺序
You can’t perform that action at this time.