2023神经网络与深度学习第二周总结

深度学习平台介绍

总览

在这里插入图片描述
在这里插入图片描述

pytorch

张量:是一个物理量,对高维(维数 ≥ 2) 的物理量进行“量纲分析” 的一种工具。简单的可以理解为:一维数组称为矢量,二维数组为二阶张量,三维数组为三阶张量
计算图:用“结点”(nodes)和“线”(edges)的有向图来描述数学计算的图像。“节点” 一般用来表示施加的数学操作,但也可以表示数据输入的起点/输出的终点,或者是读取/写入持久变量的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即
“张量”(tensor)
pytorch使用 tensor 表示数据,使用 Dataset、DataLoader 读取样本数据和标签;使用变量 (Variable) 存储神经网络权值等参数;使用计算图 (computational graph) 来表示计算任务;在代码运行过程中同时执行计算图。

pytorch线性回归基本例程:

import torch.nn as nn
#定义网络
class LinearRegression(nn.Module): 
	def __init__(self): 
		super(LinearRegression, self).__init__()
		self.linear = nn.Linear(1, 1) # 输入和输出的维度都是1 
	def forward(self, x):
		out = self.linear(x)
		return out

#进行训练:
model = LinearRegression()
params = list(model.named_parameters())
(_, w) = params[0]
(_, b) = params[1]
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.3)
x = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1)
y = 2*x + 10 + torch.rand(x.size())
for epoch in range(20):
	inputs = x 
	target = y 
	out = model(inputs) # 向前传播
	loss = criterion(out, target) # 向后传播
	optimizer.zero_grad() # 注意每次迭代都需要清零
	loss.backward()
	optimizer.step()
	print('Epoch: {}, w: {:.4f},b:{:.4f}'.format(epoch + 1, float(w.data),float(b.data)))
model.eval()

在这里插入图片描述

卷积神经网络基础

在这里插入图片描述

基本概念

填充(Padding):也就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常用0或者复制边界像素来进行填充。
步长(Stride):卷积核在矩阵上移动的步长
多通道卷积:以RGB为例,如下图:
在这里插入图片描述池化(pooling):使用局部统计特征,如均值或最大值。解
决特征过多问题

卷积神经网络结构

构成:由多个卷积层和下采样层构成,后面可连接全连接网络
卷积层:k个滤波器
下采样层:采用mean或max
后面:连着全连接网络
前向传播定义为:
在这里插入图片描述
如果第l层为卷积+池化层,则:
在这里插入图片描述

LeNet-5

网络结构

在这里插入图片描述
C1层
6个feature map,每个神经元对输入进行5x5卷积,每个神经元对应(5x5+1)个参数,共6个feature map,28*28个神经元,共有(5x5+1)x6x(28x28)个连接
S2层
池化层
C3层
16个feature map,每个神经元对输入进行三维卷积核卷积,某个feature map上的神经元并没有用到S2层每一个feature map的数据,对于单个C3层feature map它使用的S2层的哪些feature map是固定的,设计出来的关系如下:
在这里插入图片描述
S4层
120个神经元, 每个神经元同样对输入进行5x5卷积,与S4全连接,总连接数(5x5x16+1)x120=48120
C5层
120个神经元,与S4层全连接
F6层
84个神经元,与C5全连接,总连接数(120+1)x84=10164
输出层
由欧式径向基函数单元构成,每类一个单元,输出RBF单元计算输入向量和参数向量之间的欧式距离
LeNet与现在网络的区别:卷积时不进行填充(padding),池化层选用平均池化而非最大池化,选用Sigmoid或tanh而非ReLU作为非线性环节激活函数,层数较浅,参数数量小(约为6万)
网络形状概览:
在这里插入图片描述

误差反向传播

卷积NN的BP算法
1.误差从下采样层回传到卷积层(假设为2x2核平均池化):
在这里插入图片描述
2.误差从卷积层回传到下采样层(假设为2x2核卷积):
在这里插入图片描述
在这里插入图片描述

LeNet5代码实现

import torch
from torch import nn
from d2l import torch as d2l
class Reshape(torch.nn.Module):
	def forward(self, x):
		return x.view(-1, 1, 28, 28)
net = torch.nn.Sequential(
	Reshape(),
	nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.Sigmoid(),
	nn.AvgPool2d(kernel_size=2, stride=2),
	nn.Conv2d(6, 16, kernel_size=5), nn.Sigmoid(),
	nn.AvgPool2d(kernel_size=2, stride=2),
	nn.Flatten(),
	nn.Linear(16 * 5 * 5, 120), nn.Sigmoid(),
	nn.Linear(120, 84), nn.Sigmoid(),
	nn.Linear(84, 10))

LeNet可视化网站帮助理解

LeNet可视化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值