pytorch随笔

1. torch.from_numpy()

  • 作用:将numpy数组转换成torch张量;
  • 具体形式:torch.form_numpy(data);

2. data[].numpy()

  • 作用:将张量转换为numpy数组;
  • 形式:data[].numpy()

3. plt.imshow()

  • 作用:plt.imshow()函数负责对图像进行处理,并显示其格式,但是不能显示;
  • 形式:plt.imshow(image)

4. plt.show()

  • 作用:将plt.imshow()处理后的函数显示出来;
  • 形式:plt.show()

5. torch.add()

  • 作用:张量相加;
  • 形式:torch.add(a,b),也可以是c=a.add(b);

注意,a.add_(b)相当于自加,即a+b得到的值存储在a中。

6. torch.mul()

  • 作用:张量相乘;
  • 形式:torch.mul(a,b),也可以是c=a.mul(b);

注意,a.mul(b)相当于和自身相乘,得到的值存储在啊中。

7. torch.matmul()

  • 作用:矩阵点积,矩阵之间行和列的关系在计算时需要注意;
  • 形式:torch.matmul(a,b)或者a.matmul(b);

8. cuda()

  • 作用:将张量转移到GPU;
  • 形式:a=a.cuda()

9. Variable对象

torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现;

from torch.autograd import Variable
x = Variable(tensor, requires_grad = True) #requires_grad:指示是否需要梯度;

Varibale包含三个属性:

  • data:存储了Tensor,是本体的数据;
  • grad:保存了data的梯度,本事是个Variable而非Tensor,与data形状一致;
  • grad_fn:指向Function对象,用于反向传播的梯度计算之用;

举个例子,创建一个张量,代码如下:

from torch.autograd import Variable

train_X = np.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,
                         7.042,10.791,5.313,7.997,5.654,9.27,3.1])
dtype = torch.FloatTensor
X = Variable(torch.from_numpy(train_X).type(dtype),requires_grad=False) 

10.np.asarray()和np.array()的区别

np.array()和np.asarray()都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会。

具体看个例子:

import numpy as np
 
#example 2:
arr1=np.ones((3,3))
arr2=np.array(arr1)
arr3=np.asarray(arr1)
arr1[1]=2
print 'arr1:\n',arr1
print 'arr2:\n',arr2

#输出

arr1:
[[ 1.  1.  1.]
 [ 2.  2.  2.]
 [ 1.  1.  1.]]
arr2:
[[ 1.  1.  1.]
 [ 1.  1.  1.]
 [ 1.  1.  1.]]
arr3:
[[ 1.  1.  1.]
 [ 2.  2.  2.]

11. resize()和view()的区别

resize()是针对np.array(data)的,view是针对pytorch的Variable(data)的;

具体看个例子:

#resize()
import numpy as np
a = np.array([1,2,3,4,5,6,7,8,9,10])
a.resize((2,4))
print(a)

#输出
[[1 2 3 4]
 [5 6 7 8]]
#view()
import torch
import numpy as np
from torch.autograd import Variable

x = np.asarray([1,2,3,4,5,6,7,8,9,10])
dtype = torch.FloatTensor
y = Variable(torch.from_numpy(x).type(dtype),requires_grad=False).view(10,1)
print(y)

#输出
tensor([[ 1.],
        [ 2.],
        [ 3.],
        [ 4.],
        [ 5.],
        [ 6.],
        [ 7.],
        [ 8.],
        [ 9.],
        [10.]])

从两个例子中不难发现,resize()可以抛弃一些数据进行变换,但是view()函数不能抛弃数据进行变换。

12.pytorch函数——nn.Linear()

class torch.nn.Linear(in_features,out_features,bias = True )

参数:

  • in_features - 每个输入样本的大小;
  • out_features - 每个输出样本的大小;
  • bias - 如果设置为False,则图层不会学习附加偏差。默认值:True;

13. grad.data.zero_()

清除前面计算出来的梯度值;

14. layer.weight和layer.bias

属性weights和bias访问层的可训练参数;其中bias是偏置项的参数;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值