pytorch函数

笔记:

1.标签一般默认为LongTensor

2.pytorch只能处理2维的数据。

字典:

找到一份很好的pytorch中文文档:http://pytorch-cn.readthedocs.io/zh/latest/

1.nn.CrossEntropyLoss()
EXP:loss_func = torch.nn.CrossEntropyLoss()
交叉熵:通常用在分类问题上
目标标签为: y = [0, 0, 0, 1]
实际结果为: out = net(x) = [1,2,3,4]
将输出转发为概率:out = F.softmax(out)=[0.1, 0.2, 0.3, 0.4]
计算二者的误差: loss = loss_func(out, y)

2.nn.Sequential()
EXP:
net = torch.nn.Sequential(
torch.nn.Linear(2,10)
torch.nn.ReLu()
torch.nn.Linear(10,2)
)

一种简单的神经网络构建方式,直接按顺序垒神经层。

3.optim.SGD()
EXP:optimizer = torch.optim,SGD(net.parameters(),lr=0.1)

优化方法采用:随机梯度下降法(Stochastic Gradient Descent,简称SGD)

4.optim.step()
EXP:
loss.backward()
optimizer.step()
一般用在反向传播后,将参数更新。

5..save()
EXP:torch.save(net,”net.pkl”) #保存整个神经网络

EXP:torch.save(net.state_dict(),”net_parameters.pkl”) #保存整个神经网路的parameters
defsave(obj,f,pickle_module=pickle,pickle_protocol=DEFAULT_PROTOCOL):
f:保存到的文件

6..load()
EXP:torch.load(“net.pkl”) #导入神经网络

7..load_state_dict()
EXP:net2 =
net = torch.nn.Sequential(
torch.nn.Linear(2,10)
torch.nn.ReLu()
torch.nn.Linear(10,2)
)
net.load_state_dict(torch.load(net_parameters.pkl))

需要先构建一个结构相同的神经网络,再导入参数,一般比直接导入整个神经网络更快。

8..linspace(start,end,steps=100,out=None)
steps指生成的个数,输出的一维张量应该是递增的

9..logspace(start,end,steps=100,out=None)
生成 10start 到 10end之间的数。

10.torch.unsqueeze()
EXP:X = torch.unsqueeze(torch.linsapce(-1,1.100),dim=1)
torch只能处理二维的数据,用来将数据转为2维的。

11.torchvision.transforms
用于预处理数据
torchvision.transforms.ToTensor()
将PIL Image 或 numpy.ndarry转换位Tensor,范围从[0,255]映射到[0.0,1]

torchvision.transforms.Normalize(mean,std)
EXP:torchvision.transforms.Normalize((0.5,0.5,0.5), (0.5,0.5,0.5))
mean 每个channel的均值
std 每个channel到标准差
正则化处理:input[channel] = (input[channel] - mean[channel]) / std[channel]

torchvision.transforms.Compose()
EXP:

transforms.Compose([
transforms.CenterCrop(10),
transforms.ToTensor(),
])
将多个transforms连接在一起

12.torch.index_select
def index_select(input, dim, index, out=None)
切片。官方example:
Example::

        >>> x = torch.randn(3, 4)
        >>> x

         1.2045  2.4084  0.4001  1.1372
         0.5596  1.5677  0.6219 -0.7954
         1.3635 -1.2313 -0.5414 -1.8478
        [torch.FloatTensor of size 3x4]

        >>> indices = torch.LongTensor([0, 2])
        >>> torch.index_select(x, 0, indices)

         1.2045  2.4084  0.4001  1.1372
         1.3635 -1.2313 -0.5414 -1.8478
        [torch.FloatTensor of size 2x4]

        >>> torch.index_select(x, 1, indices)

         1.2045  0.4001
         0.5596  0.6219
         1.3635 -0.5414
        [torch.FloatTensor of size 3x2]

这里indices指要切片的索引的下标,例如[0,2]指待会儿切片为坐标为0和坐标为2的片。而dim指切片的维度,dim=0,指切片为横轴(结合indices,切片为横坐标为0和2的两片),dim=-1或1,指切片为纵轴(切片为纵坐标为0和2的两片)。

你可能感兴趣的:(pytorch)