Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
li工
apachecn-dl-zh
提交
c6df80b4
A
apachecn-dl-zh
项目概览
li工
/
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,发现更多精彩内容 >>
提交
c6df80b4
编写于
1月 22, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-01-22 11:25:06
上级
e2bdbb4a
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
21 addition
and
21 deletion
+21
-21
new/dl-pt-workshop/1.md
new/dl-pt-workshop/1.md
+1
-1
new/handson-1shot-learn-py/5.md
new/handson-1shot-learn-py/5.md
+1
-1
new/handson-nlp-pt-1x/9.md
new/handson-nlp-pt-1x/9.md
+1
-1
new/pt-ai-fund/1.md
new/pt-ai-fund/1.md
+1
-1
new/pt-dl-handson/2.md
new/pt-dl-handson/2.md
+2
-2
new/pt-dl-handson/5.md
new/pt-dl-handson/5.md
+1
-1
new/pt-dl-handson/7.md
new/pt-dl-handson/7.md
+1
-1
new/pt-tut-17/03.md
new/pt-tut-17/03.md
+1
-1
new/pt-tut-17/04.md
new/pt-tut-17/04.md
+2
-2
new/pt-tut-17/07.md
new/pt-tut-17/07.md
+1
-1
new/pt-tut-17/22.md
new/pt-tut-17/22.md
+1
-1
new/pt-tut-17/24.md
new/pt-tut-17/24.md
+1
-1
new/pt-tut-17/28.md
new/pt-tut-17/28.md
+2
-2
new/pt-tut-17/29.md
new/pt-tut-17/29.md
+2
-2
new/pt-tut-17/30.md
new/pt-tut-17/30.md
+2
-2
new/rl-tf/01.md
new/rl-tf/01.md
+1
-1
未找到文件。
new/dl-pt-workshop/1.md
浏览文件 @
c6df80b4
...
@@ -116,7 +116,7 @@ torch.cuda.is_available()
...
@@ -116,7 +116,7 @@ torch.cuda.is_available()
这意味着张量不仅是数据结构,而且是容器,当容器提供某些数据时,它们可以与其他张量以多线性方式映射。
这意味着张量不仅是数据结构,而且是容器,当容器提供某些数据时,它们可以与其他张量以多线性方式映射。
类似于 NumPy
阵列
或任何其他类似矩阵的结构,PyTorch 张量可以具有所需的任意多个尺寸。 可以使用以下代码片段在 PyTorch 中定义一维张量(
`tensor_1`
)和二维张量(
`tensor_2`
):
类似于 NumPy
数组
或任何其他类似矩阵的结构,PyTorch 张量可以具有所需的任意多个尺寸。 可以使用以下代码片段在 PyTorch 中定义一维张量(
`tensor_1`
)和二维张量(
`tensor_2`
):
```
py
```
py
tensor_1
=
torch
.
tensor
([
1
,
1
,
0
,
2
])
tensor_1
=
torch
.
tensor
([
1
,
1
,
0
,
2
])
...
...
new/handson-1shot-learn-py/5.md
浏览文件 @
c6df80b4
...
@@ -52,7 +52,7 @@
...
@@ -52,7 +52,7 @@
![](
img/169cea75-5669-4783-a7c4-a4b77f185c91.png
)
![](
img/169cea75-5669-4783-a7c4-a4b77f185c91.png
)
此图中
`S`
,
`R`
,
`L`
,
`W`
和
`T`
的随机变量的联合分布 通过一个简单的链规则可分为多个分布:
此图中
`S`
,
`R`
,
`L`
,
`W`
和
`T`
的随机变量的联合分布 通过一个简单的链
式
规则可分为多个分布:
![](
img/9511985a-1153-4134-8e00-3c8126a5dc83.png
)
![](
img/9511985a-1153-4134-8e00-3c8126a5dc83.png
)
...
...
new/handson-nlp-pt-1x/9.md
浏览文件 @
c6df80b4
...
@@ -124,7 +124,7 @@ BERT 是按照**转换器**的原理构建的,现在将对其进行详细说
...
@@ -124,7 +124,7 @@ BERT 是按照**转换器**的原理构建的,现在将对其进行详细说
![
Figure 9.6 – Linked encoder/decoder array
](
img/B12365_09_6.jpg
)
![
Figure 9.6 – Linked encoder/decoder array
](
img/B12365_09_6.jpg
)
图 9.6 –链接的编码器/解码器
阵列
图 9.6 –链接的编码器/解码器
数组
这将为您提供有关大型模型中不同编码器和解码器如何堆叠的有用概述。 接下来,我们将更详细地检查各个部分。
这将为您提供有关大型模型中不同编码器和解码器如何堆叠的有用概述。 接下来,我们将更详细地检查各个部分。
...
...
new/pt-ai-fund/1.md
浏览文件 @
c6df80b4
...
@@ -334,7 +334,7 @@ tensor([[3, 3],
...
@@ -334,7 +334,7 @@ tensor([[3, 3],
NumPy 是 Python 中科学计算的基本软件包。 它是一个 Python 库,提供多维数组对象和各种派生对象。 除此之外,NumPy 用作通用多维数据的有效容器。 NumPy 允许与各种数据库进行无缝,快速的集成。
NumPy 是 Python 中科学计算的基本软件包。 它是一个 Python 库,提供多维数组对象和各种派生对象。 除此之外,NumPy 用作通用多维数据的有效容器。 NumPy 允许与各种数据库进行无缝,快速的集成。
NumPy 是标准的 Python 库,用于处理数字数据。 Python 中许多著名的 ML/DS 库,例如 pandas(用于从许多来源读取数据的库)和 scikit-learn(用于读取和写入图像的最重要的 ML 库之一)都使用 NumPy 引擎盖。 例如,在处理表格数据,使用
`pandas`
库加载表格数据并将
`numpy`
数组移出数据框时,您将处理很多
`numpy`
。 读取图像,许多现有库都具有内置的 API,可以将它们读取为
`numpy`
数组; 并将
`numpy`
数组转换为图像以及文本和其他形式的数据。 同样,它们都使用
`scikit-learn`
(机器学习库)支持
`numpy`
数组。 如您所见,在
`numpy`
阵列
和 PyTorch 张量之间建立桥梁非常重要。
NumPy 是标准的 Python 库,用于处理数字数据。 Python 中许多著名的 ML/DS 库,例如 pandas(用于从许多来源读取数据的库)和 scikit-learn(用于读取和写入图像的最重要的 ML 库之一)都使用 NumPy 引擎盖。 例如,在处理表格数据,使用
`pandas`
库加载表格数据并将
`numpy`
数组移出数据框时,您将处理很多
`numpy`
。 读取图像,许多现有库都具有内置的 API,可以将它们读取为
`numpy`
数组; 并将
`numpy`
数组转换为图像以及文本和其他形式的数据。 同样,它们都使用
`scikit-learn`
(机器学习库)支持
`numpy`
数组。 如您所见,在
`numpy`
数组
和 PyTorch 张量之间建立桥梁非常重要。
# 操作步骤
# 操作步骤
...
...
new/pt-dl-handson/2.md
浏览文件 @
c6df80b4
...
@@ -129,7 +129,7 @@ b2 = torch.zeros(1, output_size, requires_grad=True, device=device, dtype=dtype)
...
@@ -129,7 +129,7 @@ b2 = torch.zeros(1, output_size, requires_grad=True, device=device, dtype=dtype)
这是反向模式自动微分的关键特征之一。 这有助于 PyTorch 动态化,因为无论用户在向前传递中作为操作编写的内容都可以写入磁带,并且在反向传播开始时,Autograd 可以在磁带上向后移动并随梯度一起移动,直到到达最外层 父母
这是反向模式自动微分的关键特征之一。 这有助于 PyTorch 动态化,因为无论用户在向前传递中作为操作编写的内容都可以写入磁带,并且在反向传播开始时,Autograd 可以在磁带上向后移动并随梯度一起移动,直到到达最外层 父母
磁带或内存的写操作可忽略不计,PyTorch 通过将操作写到磁带上并在向后遍历后销毁磁带来利用每次正向遍历中的行为。 尽管我会在本书中尽量避免使用尽可能多的数学方法,但是有关 Autograd 如何工作的数学示例绝对可以为您提供帮助。 在下面的两个图中,说明了反向传播算法和使用链规则的 Autograd 的方法。 下图中我们有一个小型网络,其中有一个乘法节点和一个加法节点。 乘法节点获取输入张量和权重张量,将其传递到加法节点以进行加法运算。
磁带或内存的写操作可忽略不计,PyTorch 通过将操作写到磁带上并在向后遍历后销毁磁带来利用每次正向遍历中的行为。 尽管我会在本书中尽量避免使用尽可能多的数学方法,但是有关 Autograd 如何工作的数学示例绝对可以为您提供帮助。 在下面的两个图中,说明了反向传播算法和使用链
式
规则的 Autograd 的方法。 下图中我们有一个小型网络,其中有一个乘法节点和一个加法节点。 乘法节点获取输入张量和权重张量,将其传递到加法节点以进行加法运算。
```
py
```
py
output
=
X
*
W
+
B
output
=
X
*
W
+
B
...
@@ -143,7 +143,7 @@ output = X * W + B
...
@@ -143,7 +143,7 @@ output = X * W + B
![
Autograd
](
img/B09475_02_04.jpg
)
![
Autograd
](
img/B09475_02_04.jpg
)
图 2.4:Autograd 使用的链规则
图 2.4:Autograd 使用的链
式
规则
前面的图可以使用以下代码转换为 PyTorch 图:
前面的图可以使用以下代码转换为 PyTorch 图:
...
...
new/pt-dl-handson/5.md
浏览文件 @
c6df80b4
...
@@ -96,7 +96,7 @@ array([[O., 0., 0., 1., 0., 0., 0., 0., 0., 0.],
...
@@ -96,7 +96,7 @@ array([[O., 0., 0., 1., 0., 0., 0., 0., 0., 0.],
使用自然语言(或由离散的单个单元组成的任何序列)的标准方法是将每个单词转换为一个热编码向量,并将其用于网络的后期。 这种方法的明显缺点是,随着词汇量的增加,输入层的大小也会增加。
使用自然语言(或由离散的单个单元组成的任何序列)的标准方法是将每个单词转换为一个热编码向量,并将其用于网络的后期。 这种方法的明显缺点是,随着词汇量的增加,输入层的大小也会增加。
词嵌入是减少
阵列
或张量维数的数十年历史的想法。
**潜在迪利克雷分配**
(
**LDA**
)和
**潜在语义分析**
(
**LSA**
)是我们用来进行嵌入的两个此类示例。 但是,在 Facebook 研究科学家 Tomas Mikolov 和他的团队于 2013 年实现 word2vec 之后,就开始将嵌入视为前提。
词嵌入是减少
数组
或张量维数的数十年历史的想法。
**潜在迪利克雷分配**
(
**LDA**
)和
**潜在语义分析**
(
**LSA**
)是我们用来进行嵌入的两个此类示例。 但是,在 Facebook 研究科学家 Tomas Mikolov 和他的团队于 2013 年实现 word2vec 之后,就开始将嵌入视为前提。
Word2vec 是一种无监督的学习算法,在这种算法中,网络未经训练就进行嵌入。 这意味着您可以在一个英语数据集上训练 word2vec 模型,并使用它为另一模型生成嵌入。
Word2vec 是一种无监督的学习算法,在这种算法中,网络未经训练就进行嵌入。 这意味着您可以在一个英语数据集上训练 word2vec 模型,并使用它为另一模型生成嵌入。
...
...
new/pt-dl-handson/7.md
浏览文件 @
c6df80b4
...
@@ -273,7 +273,7 @@ def get_screen():
...
@@ -273,7 +273,7 @@ def get_screen():
return
resize
(
screen
).
unsqueeze
(
0
).
to
(
device
)
# Resize, and add a batch dimension (BCHW)
return
resize
(
screen
).
unsqueeze
(
0
).
to
(
device
)
# Resize, and add a batch dimension (BCHW)
```
```
在这里,我们定义了
`get_screen`
函数。 柱状环境渲染并返回一个屏幕(3D 像素
阵列
)。 我们将要剪裁一个正方形的图像,其中心是小刀。 我们从
`env.state[0]`
获得了位置。 根据文档,第一个参数是购物车位置。 然后我们去掉顶部,底部,左侧和右侧,以使小柱位于中心。 接下来,我们将其转换为张量,进行一些转换,添加另一个尺寸,然后返回图像。
在这里,我们定义了
`get_screen`
函数。 柱状环境渲染并返回一个屏幕(3D 像素
数组
)。 我们将要剪裁一个正方形的图像,其中心是小刀。 我们从
`env.state[0]`
获得了位置。 根据文档,第一个参数是购物车位置。 然后我们去掉顶部,底部,左侧和右侧,以使小柱位于中心。 接下来,我们将其转换为张量,进行一些转换,添加另一个尺寸,然后返回图像。
```
py
```
py
class
DQN
(
nn
.
Module
):
class
DQN
(
nn
.
Module
):
...
...
new/pt-tut-17/03.md
浏览文件 @
c6df80b4
...
@@ -258,7 +258,7 @@ tensor([[6., 5., 6., 6.],
...
@@ -258,7 +258,7 @@ tensor([[6., 5., 6., 6.],
## 与 NumPy 桥接
## 与 NumPy 桥接
CPU 和 NumPy
阵列
上的张量可以共享其基础内存位置,更改一个将更改另一个。
CPU 和 NumPy
数组
上的张量可以共享其基础内存位置,更改一个将更改另一个。
### 张量到 NumPy 数组
### 张量到 NumPy 数组
...
...
new/pt-tut-17/04.md
浏览文件 @
c6df80b4
...
@@ -137,7 +137,7 @@ tensor([True, True])
...
@@ -137,7 +137,7 @@ tensor([True, True])
## 计算图
## 计算图
从概念上讲,Autograd 在由
[
函数
](
https://pytorch.org/docs/stable/autograd.html#torch.autograd.Function
)
对象组成的有向无环图(DAG)中记录数据(张量)和所有已执行的操作(以及由此产生的新张量)。 在此 DAG 中,叶子是输入张量,根是输出张量。 通过从根到叶跟踪此图,可以使用链规则自动计算梯度。
从概念上讲,Autograd 在由
[
函数
](
https://pytorch.org/docs/stable/autograd.html#torch.autograd.Function
)
对象组成的有向无环图(DAG)中记录数据(张量)和所有已执行的操作(以及由此产生的新张量)。 在此 DAG 中,叶子是输入张量,根是输出张量。 通过从根到叶跟踪此图,可以使用链
式
规则自动计算梯度。
在正向传播中,Autograd 同时执行两项操作:
在正向传播中,Autograd 同时执行两项操作:
...
@@ -148,7 +148,7 @@ tensor([True, True])
...
@@ -148,7 +148,7 @@ tensor([True, True])
*
从每个
`.grad_fn`
计算梯度,
*
从每个
`.grad_fn`
计算梯度,
*
将它们累积在各自的张量的
`.grad`
属性中,然后
*
将它们累积在各自的张量的
`.grad`
属性中,然后
*
使用链
规则,一直传播到叶
张量。
*
使用链
式规则,一直传播到叶子
张量。
下面是我们示例中 DAG 的直观表示。 在图中,箭头指向前进的方向。 节点代表正向传播中每个操作的反向功能。 蓝色的叶节点代表我们的叶张量
`a`
和
`b`
。
下面是我们示例中 DAG 的直观表示。 在图中,箭头指向前进的方向。 节点代表正向传播中每个操作的反向功能。 蓝色的叶节点代表我们的叶张量
`a`
和
`b`
。
...
...
new/pt-tut-17/07.md
浏览文件 @
c6df80b4
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
PyTorch 的核心是提供两个主要功能:
PyTorch 的核心是提供两个主要功能:
*
n 维张量,类似于 NumPy,但可以在 GPU 上运行
*
n 维张量,类似于 NumPy,但可以在 GPU 上运行
*
自动区分以构建和训练神经网络
*
用于构建和训练神经网络的自动微分
我们将使用将三阶多项式拟合
`y = sin(x)`
的问题作为运行示例。 该网络将具有四个参数,并且将通过使网络输出与实际输出之间的欧几里德距离最小化来进行梯度下降训练,以适应随机数据。
我们将使用将三阶多项式拟合
`y = sin(x)`
的问题作为运行示例。 该网络将具有四个参数,并且将通过使网络输出与实际输出之间的欧几里德距离最小化来进行梯度下降训练,以适应随机数据。
...
...
new/pt-tut-17/22.md
浏览文件 @
c6df80b4
...
@@ -723,7 +723,7 @@ plt.show()
...
@@ -723,7 +723,7 @@ plt.show()
*
训练更长的时间,看看效果如何
*
训练更长的时间,看看效果如何
*
修改此模型以采用其他数据集,并可能更改图像的大小和模型架构
*
修改此模型以采用其他数据集,并可能更改图像的大小和模型架构
*
在处
查看其他一些不错的 GAN 项目
*
查看其他一些不错的 GAN 项目
*
[
创建可生成音乐的 GAN
](
https://deepmind.com/blog/wavenet-generative-model-raw-audio/
)
*
[
创建可生成音乐的 GAN
](
https://deepmind.com/blog/wavenet-generative-model-raw-audio/
)
**脚本的总运行时间**
:(29 分钟 17.480 秒)
**脚本的总运行时间**
:(29 分钟 17.480 秒)
...
...
new/pt-tut-17/24.md
浏览文件 @
c6df80b4
...
@@ -237,7 +237,7 @@ Median relative difference between original and MuLaw reconstucted signals: 1.28
...
@@ -237,7 +237,7 @@ Median relative difference between original and MuLaw reconstucted signals: 1.28
上面看到的转换依赖于较低级别的无状态函数进行计算。 这些功能在
`torchaudio.functional`
下可用。 完整列表在
[
此处
](
https://pytorch.org/audio/functional.html
)
,包括:
上面看到的转换依赖于较低级别的无状态函数进行计算。 这些功能在
`torchaudio.functional`
下可用。 完整列表在
[
此处
](
https://pytorch.org/audio/functional.html
)
,包括:
*
`istft`
:短
时
傅立叶逆变换。
*
`istft`
:短
期
傅立叶逆变换。
*
`gain`
:对整个波形进行放大或衰减。
*
`gain`
:对整个波形进行放大或衰减。
*
`dither`
:增加以特定位深度存储的音频的动态范围。
*
`dither`
:增加以特定位深度存储的音频的动态范围。
*
`compute_deltas`
:计算张量的增量系数。
*
`compute_deltas`
:计算张量的增量系数。
...
...
new/pt-tut-17/28.md
浏览文件 @
c6df80b4
...
@@ -305,8 +305,8 @@ criterion = nn.NLLLoss()
...
@@ -305,8 +305,8 @@ criterion = nn.NLLLoss()
*
创建输入和目标张量
*
创建输入和目标张量
*
创建归零的初始隐藏状态
*
创建归零的初始隐藏状态
*
阅读
和中的
每个字母
*
阅读每个字母
*
保
持
下一个字母的隐藏状态
*
保
存
下一个字母的隐藏状态
*
比较最终输出与目标
*
比较最终输出与目标
*
反向传播
*
反向传播
*
返回输出和损失
*
返回输出和损失
...
...
new/pt-tut-17/29.md
浏览文件 @
c6df80b4
...
@@ -338,7 +338,7 @@ plt.plot(all_losses)
...
@@ -338,7 +338,7 @@ plt.plot(all_losses)
*
为输入类别,起始字母和空隐藏状态创建张量
*
为输入类别,起始字母和空隐藏状态创建张量
*
用起始字母创建一个字符串
`output_name`
*
用起始字母创建一个字符串
`output_name`
*
直到最大输出长度,
*
直到最大输出长度,
*
将当前
信件
输入网络
*
将当前
字母
输入网络
*
从最高输出中获取下一个字母,以及下一个隐藏状态
*
从最高输出中获取下一个字母,以及下一个隐藏状态
*
如果字母是
`EOS`
,请在此处停止
*
如果字母是
`EOS`
,请在此处停止
*
如果是普通字母,请添加到
`output_name`
并继续
*
如果是普通字母,请添加到
`output_name`
并继续
...
@@ -409,7 +409,7 @@ Iun
...
@@ -409,7 +409,7 @@ Iun
## 练习
## 练习
*
尝试使用类别 -> 行的其他数据集,例如:
*
尝试使用类别 -> 行的其他数据集,例如:
*
虚构
系
列 -> 角色名称
*
虚构
序
列 -> 角色名称
*
词性 -> 词
*
词性 -> 词
*
国家 -> 城市
*
国家 -> 城市
*
使用“句子开头”标记,以便无需选择开始字母即可进行采样
*
使用“句子开头”标记,以便无需选择开始字母即可进行采样
...
...
new/pt-tut-17/30.md
浏览文件 @
c6df80b4
...
@@ -204,7 +204,7 @@ def filterPairs(pairs):
...
@@ -204,7 +204,7 @@ def filterPairs(pairs):
准备数据的完整过程是:
准备数据的完整过程是:
*
读取文本文件并拆分为行,将行拆分为
成
对
*
读取文本文件并拆分为行,将行拆分为
偶
对
*
规范文本,按长度和内容过滤
*
规范文本,按长度和内容过滤
*
成对建立句子中的单词列表
*
成对建立句子中的单词列表
...
@@ -487,7 +487,7 @@ def timeSince(since, percent):
...
@@ -487,7 +487,7 @@ def timeSince(since, percent):
*
启动计时器
*
启动计时器
*
初始化优化器和标准
*
初始化优化器和标准
*
创建一组训练对
*
创建一组训练对
*
启动空损失
阵列
进行绘图
*
启动空损失
数组
进行绘图
然后,我们多次调用
`train`
,并偶尔打印进度(示例的百分比,到目前为止的时间,估计的时间)和平均损失。
然后,我们多次调用
`train`
,并偶尔打印进度(示例的百分比,到目前为止的时间,估计的时间)和平均损失。
...
...
new/rl-tf/01.md
浏览文件 @
c6df80b4
...
@@ -283,7 +283,7 @@ ReLU 的导数图,对于`x <= 0`,`f'(x) = 1`,对于`x > 0`,`f'(x) = 0`
...
@@ -283,7 +283,7 @@ ReLU 的导数图,对于`x <= 0`,`f'(x) = 1`,对于`x > 0`,`f'(x) = 0`
# 计算图
# 计算图
基本的神经网络由前向传播和后向传播组成。 结果,它由一系列步骤组成,这些步骤包括不同节点,权重和偏差的值,以及所有权重和偏差的成本函数导数。 为了跟踪这些过程,图片中出现了
**计算图**
。 无论神经网络的深度如何,计算图还可以跟踪链规则的区分。
基本的神经网络由前向传播和后向传播组成。 结果,它由一系列步骤组成,这些步骤包括不同节点,权重和偏差的值,以及所有权重和偏差的成本函数导数。 为了跟踪这些过程,图片中出现了
**计算图**
。 无论神经网络的深度如何,计算图还可以跟踪链
式
规则的区分。
# 使用梯度下降法解决逻辑回归的步骤
# 使用梯度下降法解决逻辑回归的步骤
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录