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是偏置项的参数;