pytorch--字典(updating)

来源:互联网 发布:windows 7 beta 编辑:程序博客网 时间:2024/06/06 00:05

随记:

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连接在一起
原创粉丝点击