| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Pytorch 卷积层 -> 正文阅读 |
|
[人工智能]Pytorch 卷积层 |
Pytorch 卷积层0. 环境介绍环境使用 Kaggle 里免费建立的 Notebook 小技巧:当遇到函数看不懂的时候可以按 1. 从全连接到卷积
注 :深度神经网络也不适合用于处理表格数据。 1.0 猫狗图像分类假设有一个充分的猫狗照片数据集,每张照片具有百万级别的像素,这意味着网络的每次输入都有一百万( 1 0 6 10^6 106)个维度(先不考虑 RGB 通道)。即使将隐藏层维度降低到 1000 ( 1 0 3 ) 1000(10^3) 1000(103),这个全连接层也将有 1 0 6 × 1 0 3 = 1 0 9 10^6 \times 10^3 = 10^9 106×103=109 个参数。 参数量太多,需要大量的 GPU 资源和分布式优化训练的经验。
1.1 平移不变性和局部性假设你想从一张图片中找到某个物体。 合理的假设是:无论哪种方法找到这个物体,都应该和物体的位置无关。
总结下来就是两个原则:
1.2 多层感知机的限制使用
[
X
]
i
,
j
[\mathbf{X}]_{i, j}
[X]i,j? 和
[
H
]
i
,
j
[\mathbf{H}]_{i, j}
[H]i,j? 分别表示输入图像和隐藏表示中位置
(
i
,
j
)
(i, j)
(i,j) 处的像素。 可以发现参数量很大。 1.3 引入平移不变性意味着对象在输入
X
X
X 中的平移,应该仅导致隐藏层
H
H
H 中的平移。也就是说
V
V
V 和
U
U
U 不依赖于
(
i
,
j
)
(i, j)
(i,j) 的值,即
[
V
]
i
,
j
,
a
,
b
=
[
V
]
a
,
b
[\mathsf{V}]_{i, j, a, b} = [\mathbf{V}]_{a, b}
[V]i,j,a,b?=[V]a,b?。而且
U
U
U 为一个常数
u
u
u。 这样看的话, [ V ] a , b [\mathbf{V}]_{a, b} [V]a,b? 的参数量比 [ V ] i , j , a , b [\mathsf{V}]_{i, j, a, b} [V]i,j,a,b? 要少了很多。 1.4 引入局部性为了收集训练参数
[
H
]
i
,
j
[\mathbf{H}]_{i, j}
[H]i,j? 的相关信息,我们不应偏离到距
(
i
,
j
)
(i, j)
(i,j) 很远的地方。这意味着在
∣
a
∣
>
Δ
|a|> \Delta
∣a∣>Δ 或
∣
b
∣
>
Δ
|b|> \Delta
∣b∣>Δ 的范围之外,我们可以设置
[
V
]
a
,
b
=
0
[\mathbf{V}]_{a, b} = 0
[V]a,b?=0。因此,我们可以将
[
H
]
i
,
j
[\mathbf{H}]_{i, j}
[H]i,j? 重写为: 上式就是一个卷积层(convolutional layer),卷积神经网络(CNN)就是包含卷积层的一类特殊的神经网络。
2. 卷积层卷积层严格来讲,是错误的叫法,因为它所表达的运算其实是交叉相关运算(cross-correlation),而不是卷积运算。 注:: 2.1 2D 卷积层输入
X
X
X 是
(
3
×
3
)
(3 \times 3)
(3×3) 的张量,卷积核
W
W
W 为
(
2
×
2
)
(2 \times 2)
(2×2)。 3. 图像卷积代码实现3.1 2D 卷积运算
验证上述实现的输出:
3.2 2D卷积层
3.3 图像中目标的边缘检测
输出 Y Y Y 中的 1 1 1 代表从白色到黑色的边缘, ? 1 -1 ?1 代表从黑色到白色的边缘,其他情况的输出为 0 0 0。
3.4 学习由 X X X 生成 Y Y Y 的卷积核 K K K上一节(3.3)我们是设置的卷积核 K K K 的值,通过与 X X X 运算得到了 Y Y Y,下面我们通过 X X X 和 Y Y Y 训练学习出来 K K K。 我们先构造一个卷积层,并将其卷积核初始化为随机张量。接下来,在每次迭代中,我们比较 Y Y Y 与卷积层输出的平方误差,然后计算梯度来更新卷积核。为了简单起见,我们在此使用内置的二维卷积层,并忽略偏置:
注:关于为什么损失需要 查看所学的卷积核的权重张量:
3.5 加入偏置 b b b 后训练
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/6 17:24:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |