Pytorch构建神经网络记录
1.Typical Loss -mean squere error(MSE) 均方误差 pytorch中求mean squere error的梯度有两种方式: backward( )函数(这个更方便) torch.autograd.grad()函数用法示例 -cross entropy loss
-Entropy 熵 -cross entropy 交叉熵 cross entropy的值记为H(p,q): 对于one-hot encoding,entropy=0,cross entropy = entropy+KL Divergence = 0+KL Divergence = KL Divergence. 对于分类问题为什么不使用MSE而使用cross entropy .cross_entropy()函数=softmax操作+log操作+nll_loss操作
2.链式法则
x = torch.tensor(1.)
w1 = torch.tensor(2.,requires_grad=True)
b1 = torch.tensor(1.)
w2 = torch.tensor(2.,requires_grad=True)
b2 = torch.tensor(1.)
y1 = x*w1+b1
y2 = y1*w2+b2
dy2_dy1 = torch.autograd.grad(y2,[y1],retain_graph=True)[0]
dy1_dw1 = torch.autograd.grad(y1,[w1],retain_graph=True)[0]
dy2_dw1 = torch.autograd.grad(y2,[w1],retain_graph=True)[0]
dy2_dy1*dy1_dw1
# tensor(2.)
dy2_dw1
# tensor(2.)
3.visdom可视化 在终端通过pip install visdom安装visdom 然后执行python -m visdom.server开启visdom服务,浏览器访问http://localhost:8097/ 在程序中from visdom import Visdom,绘制想要的图形。
4.学习率衰减 两种实现方案,方案1:
方案2: 5.dropout 注意在train的时候可使用dropout,在test的时候不应使用dropout,要把状态切换一下: 6.卷积神经网络 -层的定义 某一层通常包括了W和输出,如hidden layer 1包括了上层的权重和对应的输出。
-nn.Conv2d() torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)
-F.conv2d -nn.MaxPool2d() MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)
-interpolate() torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode=‘nearest’, align_corners=None) -nn.BatchNorm2d() class torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True) -神经网络单元 通常把一个conv+bachnorm+pool+relu看作一个单元,如下 如果有short cut,则一个单元为: -nn.Module模块 功能1:方便的调用已有的层 功能2:方便的构造多层网络 功能3:方便管理网络、查看参数 ————————————————————————————— 目前记录一些基础操作,暂时告一段落啦。
|