Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
D_ACMER
apachecn-dl-zh
提交
2b85bb09
A
apachecn-dl-zh
项目概览
D_ACMER
/
apachecn-dl-zh
与 Fork 源项目一致
Fork自
OpenDocCN / apachecn-dl-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
apachecn-dl-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2b85bb09
编写于
12月 11, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-12-11 18:37:54
上级
f6ac0ec8
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
27 addition
and
15 deletion
+27
-15
new/gan-proj/7.md
new/gan-proj/7.md
+6
-6
new/gan-proj/8.md
new/gan-proj/8.md
+7
-1
new/handson-unsup-learn-py/01.md
new/handson-unsup-learn-py/01.md
+4
-4
new/handson-unsup-learn-py/03.md
new/handson-unsup-learn-py/03.md
+1
-1
new/handson-unsup-learn-py/07.md
new/handson-unsup-learn-py/07.md
+9
-3
未找到文件。
new/gan-proj/7.md
浏览文件 @
2b85bb09
...
...
@@ -28,8 +28,8 @@ CycleGAN 是一种**生成对抗网络**(**GAN**),用于跨域传输任务
CycleGAN 中有两个生成器网络,如下所示:
1.
**生成器`A`**
:学习映射
!
[](
img/5ee63015-1266-4f90-b3cc-dca5d99f293e.png
)
,其中
`X`
是源域,
`Y`
是目标域。 它从源域
`A`
拍摄图像,并将其转换为与目标域
`B`
相似的图像。 基本上,网络的目的是学习映射,以使
`G(X)`
与
`Y`
相似。
2.
**生成器`B`**
:学习映射
!
[](
img/4afb529e-38ff-40f5-b294-dd6545cd5251.png
)
,然后从目标域
`B`
中获取图像,并将其转换为与源域
`A`
中的图像相似的图像。类似地, 网络要学习另一个映射,以便
`F(G(X))`
类似于
`X`
)。
1.
**生成器`A`**
:学习映射
`G: X -> Y`
,其中
`X`
是源域,
`Y`
是目标域。 它从源域
`A`
拍摄图像,并将其转换为与目标域
`B`
相似的图像。 基本上,网络的目的是学习映射,以使
`G(X)`
与
`Y`
相似。
2.
**生成器`B`**
:学习映射
`F: Y -> X`
,然后从目标域
`B`
中获取图像,并将其转换为与源域
`A`
中的图像相似的图像。类似地, 网络要学习另一个映射,以便
`F(G(X))`
类似于
`X`
)。
这两个网络的架构相同,但我们分别对其进行训练。
...
...
@@ -183,11 +183,11 @@ CycleGAN 总体上由两种架构组成:生成器和判别器。 生成器架
对抗性损失是实际分布
`A`
或
`B`
的图像与生成器网络生成的图像之间的损失。 我们有两个映射功能,我们将对两个映射应用对抗性损失。
映射
!
[](
img/4777940b-3156-48bb-8ab8-a0b8d3d97978.png
)
的对抗损失如下所示:
映射
`G: X -> Y`
的对抗损失如下所示:
![](
img/f278fd84-eb49-4d88-a98e-31396fe4ea3a.png
)
在此,
`x`
是来自分布
`A`
的一个域的图像,
`y`
是来自分布
`B`
的另一个域的图像。判别器
!
[](
img/c420501d-952a-4e5b-84b0-0aa891624a10.png
)
试图区分
`G`
映射(!
[](
img/e57cd8de-afc5-4e00-a0d4-b87786d7318f.png
)
)生成的图像和来自不同的分布
`B`
的真实图像
`y`
。判别器!
[](
img/e0cef545-08a1-4089-a238-9b6945c1d821.png
)
试图区分
`F`
映射生成的图像(!
[](
img/968121df-410e-4bff-9e76-57d447e34db5.png
)
)和来自分布
`A`
的真实图像
`x`
。
`G`
的目的是使对抗损失函数最小 对抗对手
`D`
,后者不断尝试使其最大化。
在此,
`x`
是来自分布
`A`
的一个域的图像,
`y`
是来自分布
`B`
的另一个域的图像。判别器
`D[y]`
试图区分
`G`
映射(
`G(x)`
)生成的图像和来自不同的分布
`B`
的真实图像
`y`
。判别器
`D[x]`
试图区分
`F`
映射生成的图像(
`F(y)`
)和来自分布
`A`
的真实图像
`x`
。
`G`
的目的是使对抗损失函数最小 对抗对手
`D`
,后者不断尝试使其最大化。
...
...
@@ -197,7 +197,7 @@ CycleGAN 总体上由两种架构组成:生成器和判别器。 生成器架
仅使用对抗损失的问题在于,网络可以将同一组输入图像映射到目标域中图像的任何随机排列。 因此,任何学习的映射都可以学习类似于目标分布的输出分布。
!
[](
img/95c36bf0-5253-4227-9d80-7ab5e826094a.png
)
和!
[](
img/de2f63f2-3d6f-4cb6-90d0-9a9789508d31.png
)
之间可能有许多可能的映射功能。 循环一致性损失通过减少可能的映射数来克服了这个问题。 周期一致映射功能是可以将图像
`x`
从域
`A`
转换为域
`B`
中的另一个图像
`y`
并生成原始图像的功能。
仅使用对抗损失的问题在于,网络可以将同一组输入图像映射到目标域中图像的任何随机排列。 因此,任何学习的映射都可以学习类似于目标分布的输出分布。
`x[i]`
和
`y[i]`
之间可能有许多可能的映射功能。 循环一致性损失通过减少可能的映射数来克服了这个问题。 周期一致映射功能是可以将图像
`x`
从域
`A`
转换为域
`B`
中的另一个图像
`y`
并生成原始图像的功能。
前向循环一致性映射功能如下所示:
...
...
@@ -225,7 +225,7 @@ CycleGAN 总体上由两种架构组成:生成器和判别器。 生成器架
![](
img/b72c39e8-2d9b-487b-83df-3b73ab2c550f.png
)
在此,
!
[](
img/a04311c3-8eb2-45e2-98c0-e691deb818e0.png
)
是第一个对抗性损失,!
[](
img/c9de7008-1df0-4381-92f5-fcfc5aa276a3.png
)
是第二个对抗性损失。 在生成器
`A`
和判别器
`B`
上计算第一个对抗损失。在生成器
`B`
和判别器
`A`
上计算第二个对抗损失。
在此,
`l[GAN](G, D[Y], X, Y)`
是第一个对抗性损失,
`l[GAN](F, D[X], Y, X)`
是第二个对抗性损失。 在生成器
`A`
和判别器
`B`
上计算第一个对抗损失。在生成器
`B`
和判别器
`A`
上计算第二个对抗损失。
要训练 CycleGAN,我们需要优化以下功能:
...
...
new/gan-proj/8.md
浏览文件 @
2b85bb09
...
...
@@ -1349,7 +1349,13 @@ patchgan_discriminator.save_weights("discriminator.h5")
在 20、50、150 和 200 个时代(从左到右) 之后,图像如下所示:
![](
img/81830986-deb9-4db9-9dba-518aa6313466.png
)
![](
img/515bff70-925a-4f3b-a995-470637fd676e.png
)
![](
img/550e5193-b6a1-49ba-81eb-cd1fe71c7634.png
)
![](
img/277d3877-16f5-4ce5-b5f0-2703bc2d3075.png
)
![](
img/81830986-deb9-4db9-9dba-518aa6313466.png
)
![](
img/515bff70-925a-4f3b-a995-470637fd676e.png
)
![](
img/550e5193-b6a1-49ba-81eb-cd1fe71c7634.png
)
![](
img/277d3877-16f5-4ce5-b5f0-2703bc2d3075.png
)
每个块均包含垂直堆叠的外观标签,生成的照片和实际图像。 我建议您将网络训练 1000 个纪元。 如果一切顺利,则在 1000 个时期之后,生成器网络将开始生成逼真的图像。
...
...
new/handson-unsup-learn-py/01.md
浏览文件 @
2b85bb09
...
...
@@ -164,13 +164,13 @@
在有监督的情况下,模型的任务是找到样本的正确标签,假设已正确标记了训练集的存在,并且有可能将估计值与正确值进行比较。 术语
**受监督**
源自外部
*教具*
的概念,该教具在每次预测后提供准确而即时的反馈。 该模型可以使用这种反馈作为误差的度量,从而执行减少误差所需的校正。
更正式地说,如果我们假设数据生成过程,则
!
[](
img/ea0ccb2d-9b21-4eb1-b9c5-4bf2675f5c7c.png
)
数据集的获取方式为:
更正式地说,如果我们假设数据生成过程,则
`P_data(x_bar, y)`
数据集的获取方式为:
![](
img/c7e60603-2d54-4e9f-90b6-acbbb6fc56e5.png
)
如上一节中所述,所有样本必须是独立于
**且从数据生成过程中均匀采样的**
(
**IID**
)值相等。 特别是,所有类别都必须代表实际分布(例如,如果
`p(y = 0) = 0.4`
和
`p(y = 1) = 0.6`
,则比例应为 40% 或 60%)。 但是,为了避免偏差,当类别之间的差异不是很大时,合理的选择是完全均匀的采样,并且对于
`y = 1, 2, ..., M`
具有相同的代表数。
通用分类器
!
[](
img/91b8220c-e8df-436d-98be-2c519efcb45d.png
)
可以通过两种方式建模:
通用分类器
`c(x_bar, θ_bar)`
可以通过两种方式建模:
*
输出预测类的参数化函数
*
参数化的概率分布,为每个输入样本输出分类概率
...
...
@@ -284,7 +284,7 @@ x(t) = 1.169t + 0.628
**聚类分析**
(通常简称为
**聚类**
)是一项任务的示例,我们希望在其中找到大量样本之间的共同特征。 在这种情况下,我们总是假设存在数据生成过程
!
[](
img/a5fd4b73-81fb-4a6a-b653-25f369c85104.png
)
,并将数据集
`X`
定义为:
**聚类分析**
(通常简称为
**聚类**
)是一项任务的示例,我们希望在其中找到大量样本之间的共同特征。 在这种情况下,我们总是假设存在数据生成过程
`P_data(X)`
,并将数据集
`X`
定义为:
![](
img/6a44d736-7aea-47d8-b3b7-5f48d10e36e5.png
)
...
...
@@ -292,7 +292,7 @@ x(t) = 1.169t + 0.628
![](
img/a5e03fb9-969b-4595-aaaa-2c2777cbc5db.png
)
在先前的公式中,引入了常数
`ε`
以避免被零除。 显然
`d(a, c) < d(a, b) ⇒ s(a, c) > s(a, b)`
。 因此,给定每个群集的代表
!
[](
img/fba84550-7fae-4228-ad4f-02618cc35ca1.png
)
,我们可以考虑以下规则来创建一组分配的向量:
在先前的公式中,引入了常数
`ε`
以避免被零除。 显然
`d(a, c) < d(a, b) ⇒ s(a, c) > s(a, b)`
。 因此,给定每个群集的代表
`μ_bar[i]`
,我们可以考虑以下规则来创建一组分配的向量:
![](
img/57dee268-a1df-4c52-a95e-fa6fa1a320fb.png
)
...
...
new/handson-unsup-learn-py/03.md
浏览文件 @
2b85bb09
...
...
@@ -88,7 +88,7 @@
*
在对
`L`
进行特征分解之后(考虑非正规图拉普拉斯
`L[u] = D-W`
并求解方程
`L[u]·v =λDv`
,很容易计算特征值和特征向量 ),则空特征值始终以多重性出现
`p`
。
*
如果
`G`
是无向图(因此
`wij] ≥ 0, ∀i, j`
),则连接的组件数等于
`p`
(空特征值的多重性)。
*
如果
`A`
![](
img/055b1708-309e-409f-ab58-e4017eae690d.png
)
`ℜ^N`
和
`Θ`
是
`A`
的可数子集(即
`X`
是可计数的子集,因为样本数始终是有限的),向量
`v∈ℜ^N`
对于
`Θ`
被称为
**指标向量**
,给定
`θ[i] ∈ Θ`
,如果
`θ[i] ∈ A`
,
`v^(i) = 1`
,否则
`v^(i) = 0`
。 例如,如果我们有两个向量
`a = (1, 0)`
和
`b = (0, 0)`
(因此,
`Θ = {a, b}`
),我们认为
`A = {(1, n)}`
其中
`n ∈ [1, 10]`
,向量
`v = (1, 0)`
是一个指标向量,因为
`a ∈ A`
和
`b ∉ A`
。
*
如果
`A`
包含于
`ℜ^N`
和
`Θ`
是
`A`
的可数子集(即
`X`
是可计数的子集,因为样本数始终是有限的),向量
`v∈ℜ^N`
对于
`Θ`
被称为
**指标向量**
,给定
`θ[i] ∈ Θ`
,如果
`θ[i] ∈ A`
,
`v^(i) = 1`
,否则
`v^(i) = 0`
。 例如,如果我们有两个向量
`a = (1, 0)`
和
`b = (0, 0)`
(因此,
`Θ = {a, b}`
),我们认为
`A = {(1, n)}`
其中
`n ∈ [1, 10]`
,向量
`v = (1, 0)`
是一个指标向量,因为
`a ∈ A`
和
`b ∉ A`
。
*
`L`
的第一个
`p`
特征向量(对应于空特征值)是每个连接的分量
`C[1], C[2], ..., C[p]`
。
因此,如果数据集由
`M`
个样本
`x[i] ∈ ℜ^N`
以及图
`G`
与亲和力矩阵
`W^(M×M)`
相关联,Shi 和 Malik 建议建立矩阵
`B ∈ ℜ^(M×p)`
包含第一个
`p`
特征向量作为列,并使用诸如 K 均值的更简单方法对行进行聚类。 实际上,每一行代表样本在
`p`
维子空间上的投影,其中非凸性由可以封装在规则球中的子区域表示。
...
...
new/handson-unsup-learn-py/07.md
浏览文件 @
2b85bb09
...
...
@@ -305,9 +305,15 @@ print(np.sum(pca.explained_variance_ratio_))
一些常见的内核如下:
*
**径向基函数**
(
**RBF**
)或高斯核:!
[](
img/be7df07d-e755-4712-9b16-409ec45c4d9d.png
)
*
`p`
为!
[](
img/464465b9-c466-4538-8f60-33259f9424d7.png
)
的多项式内核
*
乙状结肠内核:!
[](
img/f1b5b271-2c9d-46d2-99c5-e00687a24f4c.png
)
*
**径向基函数**
(
**RBF**
)或高斯核:
![](img/be7df07d-e755-4712-9b16-409ec45c4d9d.png)
*
`p`
为多项式内核:
![](img/464465b9-c466-4538-8f60-33259f9424d7.png)
*
Sigmoid 内核:
![](img/f1b5b271-2c9d-46d2-99c5-e00687a24f4c.png)
对于非常大的数据集,该过程仍然相当昂贵(但是可以预先计算并存储内核值,以避免浪费额外的时间),但是它比标准投影更有效。 此外,其具有允许在可能进行线性辨别的空间中提取主要成分的优点。 现在,让我们将 RBF 内核 PCA 应用于上一个屏幕快照中显示的半月数据集。
`gamma`
参数等于
`1 /σ^2`
。 在这种特殊情况下,主要问题是存在双重重叠。 考虑到原始标准偏差约为 1.0(即
`σ^2 = 1`
),我们至少需要三个标准偏差才能区分 他们适当; 因此,我们将设置
`γ = 10`
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录