主要介绍一些pytorch框架常用的方法,这里torch环境实在torch0.3.1情况,请对号入座。。。
1、首先介绍我们学习pytorch的官方教程地址:http://pytorch.org/docs/master/index.html;还有一个中文文档:点击打开链接,0.4版本的官方文档:点击打开链接
2、我个人也是 pytorch 的初学者,我以一个初学者的身份来简单介绍torch的使用,pytorch是使用GPU和CPU优化的深度张量库,torch中最重要的一个数据类型就是Tensor(张量),我们计算的时候用Tensor来计算,速度要快一点,如果在训练神经网络进行梯度运算的时候,一般都会用Varaible类型来计算。
input:输入可以是Tensor向量,也可以输入单个值。output表示返回的结果,返回可以是向量也可以单个值。
**
** torch.max(input): 返回输入元素的最大值 返回tensor的一个新视图,单个维度扩大为更大的尺寸。tensor也可以扩大为更高维,新增加的维度将附在前面。 扩大tensor不需要分配新内存,只是仅仅新建一个tensor的视图,其中通过将stride设为0,一维将会扩展位更高维。任何一个一维的在不分配新内存情况下可扩展为任意的数值。 2、index_add_(dim, index, tensor) → Tensor 按参数index中的索引数确定的顺序,将参数tensor中的元素加到原来的tensor中。参数tensor的尺寸必须严格地与原tensor匹配,否则会发生错误。参数: - dim(int)-索引index所指向的维度 - index(LongTensor)-需要从tensor中选取的指数 - tensor(Tensor)-含有相加元素的tensor 3、index_copy_(dim, index, tensor) → Tensor 按参数index中的索引数确定的顺序,将参数tensor中的元素复制到原来的tensor中。参数tensor的尺寸必须严格地与原tensor匹配,否则会发生错误。解释一下:index = torch.LongTensor([0,2,1]),这里是把第2行和第3行进行对调,所以得到上述结果。 4、norrow (demension , start, length)—> te 返回一个本tensor经过缩小后的tensor。维度dim缩小范围是start到start+length。原tensor与返回的tensor共享相同的底层内存。 4、permute(dims),常用的维度转换方法 将tensor的维度换位 参数:dim(int)—换位顺序 5、 repeat(*sizes) 沿着指定的维度重复tensor。不同与expand(),本函数复制的是tensor中的数据。 参数:*size(torch.size ot int…)-沿着每一维重复的次数 6、resize_(*size) 7、resize_(*size) 将tensor的大小调整为指定的大小。如果元素个数比当前的内存大小大,就将底层存储大小调整为与新元素数目一致的大小。 如果元素个数比当前内存小,则底层存储不会被改变。原来tensor中被保存下来的元素将保持不变,但新内存将不会被初始化。 参数:sizes(torch.Size or int…)需要调整的大小
ge: input>=other 也就是a>=b, 返回true,否则返回false
gt: input> other 也就是a>b, 返回true,否则返回false
lt: input
torch.min(input) : 返回输入元素的最小值
element_size() :返回单个元素的字节
pytorch 在神经网络常用的方法
1、expand(*size)
>>> x = torch.Tensor([[1, 1, 1], [1, 1, 1], [1, 1, 1]])
>>> t = torch.Tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> index = torch.LongTensor([0, 2, 1]) #这里是把第2行和第3行进行对调
>>> x.index_add_(0, index, t)
>>> x
2 3 4
8 9 10
[torch.FloatTensor of size 3x3]
>>>x = torch.Tensor([[1,2,3], [4,5,6], [7,8,9]])
>>>x.narrow(0,0,2)
1 2 3
4 5 6
[torch.FloatTensor of size 2x3]
>>>x.narrow(1,1,2)
2 3 5
6 8 9
[torch.FloatTensor of size 3x2]
>>>x = torch.randn(2,3,4)
>>>x.size()
torch.size([2,3,5])
>>>x.permute(2,0,1).size()
torch.size([5,2,3])
>>>x = torch.Tensor([1,2,3])
>>>x.repeat(4,2)
1 2 3 1 2 3
1 2 3 1 2 3
1 2 3 1 2 3
1 2 3 1 2 3
[torch.FloatTensor of size 4x6]
>>>x.repeat(4,2)
1 2 3 1 2 3
1 2 3 1 2 3
1 2 3 1 2 3
1 2 3 1 2 3
[torch.FloatTensor of size 4x6]
>>>x.repeat(4,2,1).size()
torch.Size([4,2,3])