深度学习笔记 —— 卷积层
单隐藏层就已经需要14GB的参数了!
平移不变性:识别器不会因为像素的位置而发生改变
局部性:找Waldo只需要看局部的信息即可,不需要看全局的信息
个人理解:由前面的例子可知,全连接层需要的参数量会非常多,这也就使得MLP受到了限制。但是为了解决问题,提出了“平移不变性”和“局部性”两个性质。我们从全连接层出发,应用两种性质,对原本的计算方式做一些改进,也就得到了卷积层的计算方式。相较于全连接,平移不变性使得卷积的权重在一定范围内,v是相同的;但是由于局部性的存在,当|a|,|b| > Δ的时候,v = 0。这样就极大地优化了参数量。由此,卷积层是一个特殊的全连接层,那么卷积层自然也像全连接层一样,能够进行梯度计算和反向传播从而学习到参数。
import torch
from torch import nn
from d2l import torch as d2ldef corr2d(X, K):"""计算二维互相关运算"""h, w = K.shapeY = torch.zeros((X.shape[0] - h + 1, X.shape[1] - w + 1))for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i, j] = (X[i: i + h, j: j + w] * K).sum()return YX = torch.tensor([[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]])
K = torch.tensor([[0.0, 1.0], [2.0, 3.0]])
print(corr2d(X, K))# 实现二维卷积层
class Conv2D(nn.Module):def __init__(self, kernel_size):super().__init__()self.weight = nn.Parameter(torch.rand(kernel_size))self.bias = nn.Parameter(torch.zeros(1))def forward(self, x):return corr2d(x, self.weight) + self.bias# 简单应用:检测图像中不同颜色的边缘
X = torch.ones((6, 8))
X[:, 2: 6] = 0
print(X)
K = torch.tensor([[1.0, -1.0]])
Y = corr2d(X, K)
print(Y)# 学习由X生成Y的卷积核
conv2d = nn.Conv2d(1, 1, kernel_size=(1, 2), bias=False)
# 两个1分别表示批量大小数和通道数
X = X.reshape((1, 1, 6, 8))
Y = Y.reshape((1, 1, 6, 7))for i in range(10):Y_hat = conv2d(X)l = (Y_hat - Y) ** 2conv2d.zero_grad() # 梯度设置为0l.sum().backward()conv2d.weight.data[:] -= 3e-2 * conv2d.weight.grad # 学习率:3e-2if (i + 1) % 2 == 0:print(f'batch {i + 1}, loss {l.sum():.3f}')print(conv2d.weight.data.reshape((1, 2)))
深度学习笔记 —— 卷积层相关推荐
- 吴恩达深度学习笔记——卷积神经网络(Convolutional Neural Networks)
深度学习笔记导航 前言 传送门 卷积神经网络(Convolutional Neural Networks) 卷积神经网络基础(Foundations of Convolutional Neural N ...
- 深度学习--简述卷积层如何检测物体边缘原理
对计算机视觉与深度学习有所了解的同学应该知道图像卷积可以识别出物体,在神经网络的前几层,识别出物体最基础的例如垂直或是水平的边缘.在之后的隐藏层慢慢可以识别出物体的部分,直到最后几层可以识别出完整的物 ...
- 1.3)深度学习笔记------浅层神经网络
目录 1)Neural Network Overview 2)Neural Network Representation 3)Computing a Neural Network's Output(重 ...
- 吴恩达深度学习笔记——卷积神经网络(CNN)
目录 一.计算机视觉(Computer vision) 二.边缘检测示例(Edge detection example) 三.更多的边缘检测内容(More edge detection) 四.Padd ...
- Ng深度学习笔记-卷积神经网络-目标检测
目标定位 符号表示: 图片左上角的坐标为(0,0)(0,0)(0,0),右下角标记为(1,1)(1,1)(1,1). 红色方框的中心点(bxb_{x}bx,byb_{y}by),边界框的高度为bh ...
- 深度学习:卷积层的实现
文章目录 卷积层的数据shape和普通层的数据shape差别: 卷积层实现 实现池化层 实现 CNN 中的特殊层结构 实现 LayerFactory 网络结构 卷积层的数据shape和普通层的数据sh ...
- 深度学习笔记---卷积特征提取与池化
卷积特征提取与池化 一.卷积特征提取 全联通网络( Full Connected Networks ) 在稀疏自编码章节中,我们介绍了把输入层和隐含层进行"全连接"的设计.从计算的 ...
- 深度学习笔记-卷积神经网络CNN与循环神经网络RNN有什么区别?
转载 https://blog.csdn.net/weixin_35227692/article/details/79223536 转载于:https://www.cnblogs.com/USTBlx ...
- 深度学习笔记~卷积网络中特征图的可视化
转载:https://machinelearningmastery.com/how-to-visualize-filters-and-feature-maps-in-convolutional-neu ...
- 深度学习笔记(24) 卷积层
深度学习笔记(24) 卷积层 1. 卷积层向前传播 2. 卷积层符号 3. 简单的卷积网络 1. 卷积层向前传播 一个典型的卷积神经网络的卷积层,而通常有三层: 卷积层 Conv 池化层 POOL 全 ...
最新文章
- gorm软删除_gorm踩坑:软删除与某个字段的唯一性
- 肝货!你想要的资源这里都有!
- 如何使用BAdI ORDER_SAVE创建客户自定义的error message
- Node.js 官方文档中文版
- Java开发热门前沿知识!成功从小公司跳槽进蚂蚁定级P6
- 语音识别插件_AnsweringMachine XS: 越狱理由之二,iPhone 电话语音答录机
- 开源项目filepond的独立自由之路:城市套路深
- 推荐系统000111
- php 环境 手动,手动搭建php环境(win系统)
- 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_14maven工程servlet实例之指定web文件夹...
- 工具说明书 - 单词发音及根据发音查单词
- ubuntu清除dns缓存_如何在Ubuntu上清除DNS缓存
- 冰刃IceSword中文版 V1.22 绿色汉化修正版
- matlab画全球参数分布图 绘制世界地图
- 使用eclipse编写并运行你的第一个Android程序
- 学编程都会遇到哪些困难?
- C语言——医院挂号系统(队列)
- 第5章 LinearR/PLR/SVR/KNN/DTR/RFR(测算房价)
- 关于网站目录结构需要注意的地方
- 我的世界java无法连接服务器_java - 无法连接到Minecraft服务器 - SO中文参考 - www.soinside.com...