Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
pytorch-doc-zh
提交
100ae00d
P
pytorch-doc-zh
项目概览
OpenDocCN
/
pytorch-doc-zh
通知
120
Star
3932
Fork
992
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
pytorch-doc-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
100ae00d
编写于
2月 06, 2024
作者:
绝不原创的飞龙
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2024-02-06 16:05:38
上级
01fbe66e
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
39 addition
and
39 deletion
+39
-39
docs/todo/aud_2.2/aud22_25.md
docs/todo/aud_2.2/aud22_25.md
+1
-1
docs/todo/aud_2.2/aud22_28.md
docs/todo/aud_2.2/aud22_28.md
+3
-3
docs/todo/aud_2.2/aud22_29.md
docs/todo/aud_2.2/aud22_29.md
+3
-3
docs/todo/aud_2.2/aud22_40.md
docs/todo/aud_2.2/aud22_40.md
+6
-6
docs/todo/aud_2.2/aud22_50.md
docs/todo/aud_2.2/aud22_50.md
+1
-1
docs/todo/rec/rec_10.md
docs/todo/rec/rec_10.md
+14
-14
docs/todo/txt_0.17/txt017_05.md
docs/todo/txt_0.17/txt017_05.md
+11
-11
未找到文件。
docs/todo/aud_2.2/aud22_25.md
浏览文件 @
100ae00d
...
...
@@ -125,7 +125,7 @@ Audio([SPEECH_WAVEFORM](https://pytorch.org/docs/stable/tensors.html#torch.Tenso
### `n_fft` 参数的影响
频谱图计算的核心是(短时)傅立叶变换,
`n_fft`
参数对应于以下离散傅立叶变换定义中的
\(
N
\)
。
频谱图计算的核心是(短时)傅立叶变换,
`n_fft`
参数对应于以下离散傅立叶变换定义中的
$N$
。
$$ X_k =
\s
um_{n=0}^{N-1} x_n e^{-
\f
rac{2
\p
i i}{N} nk} $$
...
...
docs/todo/aud_2.2/aud22_28.md
浏览文件 @
100ae00d
...
...
@@ -59,11 +59,11 @@ from IPython.display import Audio
正弦振荡器从给定的振幅和频率生成正弦波形。
\[
x_t = A_t
\s
in
\t
heta_t
\]
$$x_t = A_t
\s
in
\t
heta_t$$
其中相位
\(\t
heta_t
\)
是通过积分瞬时频率
\(
f_t
\)
找到的。
其中相位
$
\t
heta_t$ 是通过积分瞬时频率 $f_t$
找到的。
\[\t
heta_t =
\s
um_{k=1}^{t} f_k
\]
$$
\t
heta_t =
\s
um_{k=1}^{t} f_k$$
注意
...
...
docs/todo/aud_2.2/aud22_29.md
浏览文件 @
100ae00d
...
...
@@ -121,7 +121,7 @@ def plot([freq](https://pytorch.org/docs/stable/tensors.html#torch.Tensor "torch
[
锯齿波
](
https://en.wikipedia.org/wiki/Sawtooth_wave
)
可以表示为以下形式。它包含所有整数谐波,因此在减法合成中常被使用。
\[\b
egin{align
*} y_t &= \sum_{k=1}^{K} A_k \sin ( 2 \pi f_k t ) \\ \text{其中} \\ f_k &= k f_0 \\ A_k &= -\frac{ (-1) ^k }{k \pi} \end{align*
}
\]
$$
\b
egin{align
*} y_t &= \sum_{k=1}^{K} A_k \sin ( 2 \pi f_k t ) \\ \text{其中} \\ f_k &= k f_0 \\ A_k &= -\frac{ (-1) ^k }{k \pi} \end{align*
}$$
以下函数接受基频和振幅,并根据上述公式添加扩展音高。
...
...
@@ -179,7 +179,7 @@ plot([freq](https://pytorch.org/docs/stable/tensors.html#torch.Tensor "torch.Ten
[
方波
](
https://en.wikipedia.org/wiki/Square_wave
)
仅包含奇整数谐波。
\[\b
egin{align
*} y_t &= \sum_{k=0}^{K-1} A_k \sin ( 2 \pi f_k t ) \\ \text{其中} \\ f_k &= n f_0 \\ A_k &= \frac{ 4 }{n \pi} \\ n &= 2k + 1 \end{align*
}
\]
$$
\b
egin{align
*} y_t &= \sum_{k=0}^{K-1} A_k \sin ( 2 \pi f_k t ) \\ \text{其中} \\ f_k &= n f_0 \\ A_k &= \frac{ 4 }{n \pi} \\ n &= 2k + 1 \end{align*
}$$
```
py
def
square_wave
([
freq0
](
https
:
//
pytorch
.
org
/
docs
/
stable
/
tensors
.
html
#torch.Tensor "torch.Tensor"), [amp0](https://pytorch.org/docs/stable/tensors.html#torch.Tensor "torch.Tensor"), num_pitches, sample_rate):
...
...
@@ -213,7 +213,7 @@ plot([freq](https://pytorch.org/docs/stable/tensors.html#torch.Tensor "torch.Ten
[
三角波
](
https://en.wikipedia.org/wiki/Triangle_wave
)
也仅包含奇整数谐波。
\[\b
egin{align
*} y_t &= \sum_{k=0}^{K-1} A_k \sin ( 2 \pi f_k t ) \\ \text{其中} \\ f_k &= n f_0 \\ A_k &= (-1) ^ k \frac{8}{(n\pi) ^ 2} \\ n &= 2k + 1 \end{align*
}
\]
$$
\b
egin{align
*} y_t &= \sum_{k=0}^{K-1} A_k \sin ( 2 \pi f_k t ) \\ \text{其中} \\ f_k &= n f_0 \\ A_k &= (-1) ^ k \frac{8}{(n\pi) ^ 2} \\ n &= 2k + 1 \end{align*
}$$
```
py
def
triangle_wave
([
freq0
](
https
:
//
pytorch
.
org
/
docs
/
stable
/
tensors
.
html
#torch.Tensor "torch.Tensor"), [amp0](https://pytorch.org/docs/stable/tensors.html#torch.Tensor "torch.Tensor"), num_pitches, sample_rate):
...
...
docs/todo/aud_2.2/aud22_40.md
浏览文件 @
100ae00d
...
...
@@ -116,19 +116,19 @@ plot()
从发射矩阵中,接下来我们生成表示每个时间帧发生转录标签概率的状态图。
状态图是一个二维矩阵,具有时间轴和标签轴。标签轴表示我们正在对齐的转录。在下文中,我们使用
\(
t
\)
表示时间轴中的索引,使用
\(
j
\)
表示标签轴中的索引。
\(
c_j
\)
表示标签索引
\(
j
\)
处的标签。
状态图是一个二维矩阵,具有时间轴和标签轴。标签轴表示我们正在对齐的转录。在下文中,我们使用
$t$表示时间轴中的索引,使用$j$表示标签轴中的索引。$c_j$表示标签索引$j$
处的标签。
为了生成时间步长
\(
t+1
\)
的概率,我们查看从时间步长
\(
t
\)
到时间步长
\(
t+1
\)
的格子和发射。有两种路径可以到达时间步长
\(
t+1
\)
,标签为
\(
c_{j+1}
\)
。第一种情况是标签在
\(
t
\)
时为
\(
c_{j+1}
\)
,从
\(
t
\)
到
\(
t+1
\)
没有标签变化。另一种情况是标签在
\(
t
\)
时为
\(
c_j
\)
,在
\(
t+1
\)
转换为下一个标签
\(
c_{j+1}
\)
。
为了生成时间步长
$t+1$的概率,我们查看从时间步长$t$到时间步长$t+1$的格子和发射。有两种路径可以到达时间步长$t+1$,标签为$c_{j+1}$。第一种情况是标签在$t$时为$c_{j+1}$,从$t$到$t+1$没有标签变化。另一种情况是标签在$t$时为$c_j$,在$t+1$转换为下一个标签$c_{j+1}$
。
以下图表说明了这种转变。
!
`download.pytorch.org/torchaudio/tutorial-assets/ctc-forward.png`
由于我们正在寻找最可能的转换,因此我们为
\(
k_{(t+1, j+1)}
\)
的更可能路径取更可能的路径,即
由于我们正在寻找最可能的转换,因此我们为
$k_{(t+1, j+1)}$
的更可能路径取更可能的路径,即
\(
k_{(t+1, j+1)} = max( k_{(t, j)} p(t+1, c_{j+1}), k_{(t, j+1)} p(t+1, repeat) )
\)
$k_{(t+1, j+1)} = max( k_{(t, j)} p(t+1, c_{j+1}), k_{(t, j+1)} p(t+1, repeat) )$
其中
\(
k
\)
代表格子矩阵,
\(
p(t, c_j)
\)
代表时间步长
\(
t
\)
处标签
\(
c_j
\)
的概率。
\(
repeat
\)
代表 CTC 公式中的空白标记。(有关 CTC 算法的详细信息,请参阅
*使用 CTC 进行序列建模*
[
[distill.pub
](
https://distill.pub/2017/ctc/
)
)
其中
$k$代表格子矩阵,$p(t, c_j)$代表时间步长$t$处标签$c_j$的概率。$repeat$
代表 CTC 公式中的空白标记。(有关 CTC 算法的详细信息,请参阅
*使用 CTC 进行序列建模*
[
[distill.pub
](
https://distill.pub/2017/ctc/
)
)
```
py
# We enclose the transcript with space tokens, which represent SOS and EOS.
...
...
@@ -185,7 +185,7 @@ plot()
生成了格子后,我们将沿着具有高概率元素的路径遍历它。
我们将从具有最高概率时间步长的最后标签索引开始,然后,我们向后遍历时间,根据过渡后概率
\(
k_{t, j} p(t+1, c_{j+1})
\)
或
\(
k_{t, j+1} p(t+1, repeat)
\)
选择停留(
\(
c_j
\r
ightarrow c_j
\)
)或过渡(
\(
c_j
\r
ightarrow c_{j+1}
\)
)。
我们将从具有最高概率时间步长的最后标签索引开始,然后,我们向后遍历时间,根据过渡后概率
$k_{t, j} p(t+1, c_{j+1})$或$k_{t, j+1} p(t+1, repeat)$选择停留($c_j
\r
ightarrow c_j$)或过渡($c_j
\r
ightarrow c_{j+1}$
)。
一旦标签到达开头,转换就完成了。
...
...
docs/todo/aud_2.2/aud22_50.md
浏览文件 @
100ae00d
...
...
@@ -27,7 +27,7 @@
|
`convolve`
| 使用直接方法沿着它们的最后一个维度对输入进行卷积。 |
|
`fftconvolve`
| 使用 FFT 沿着它们的最后一个维度对输入进行卷积。 |
|
`add_noise`
| 根据信噪比对波形进行缩放和添加噪音。 |
|
`preemphasis`
| 预强调波形的最后一个维度,即对于
`waveform`
中的每个信号
\(
x
\)
,计算输出
\(
y
\)
为。 |
|
`preemphasis`
| 预强调波形的最后一个维度,即对于
`waveform`
中的每个信号
$x$,计算输出$y$
为。 |
|
`deemphasis`
| 沿着其最后一个维度减弱波形。 |
|
`speed`
| 调整波形速度。 |
|
`frechet_distance`
| 计算两个多元正态分布之间的 Fréchet 距离[Dowson and Landau, 1982:450–455, 1982.")]。 |
...
...
docs/todo/rec/rec_10.md
浏览文件 @
100ae00d
...
...
@@ -77,13 +77,13 @@ class torchrec.modules.crossnet.CrossNet(in_features: int, num_layers: int)
[
交叉网络
](
https://arxiv.org/abs/1708.05123
)
:
Cross Net 是对形状为
\(
(
*
, N)
\)
的张量进行一系列“交叉”操作,使其形状相同,有效地创建
\(
N
\)
个可学习的多项式函数。
Cross Net 是对形状为
$(
*
, N)$的张量进行一系列“交叉”操作,使其形状相同,有效地创建$N$
个可学习的多项式函数。
在这个模块中,交叉操作是基于一个满秩矩阵(NxN)定义的,这样交叉效应可以覆盖每一层上的所有位。在每一层 l 上,张量被转换为:
\[
x_{l+1} = x_0
*
(W_l
\c
dot x_l + b_l) + x_l
\]
$$x_{l+1} = x_0
*
(W_l
\c
dot x_l + b_l) + x_l$$
其中
\(
W_l
\)
是一个方阵
\(
(NxN)
\)
,
\(
*
)表示逐元素乘法,
\(\c
dot
\)
表示矩阵乘法。
其中
$W_l$是一个方阵$(NxN)$,$
*
)表示逐元素乘法,$
\c
dot$
表示矩阵乘法。
参数:
...
...
@@ -128,17 +128,17 @@ class torchrec.modules.crossnet.LowRankCrossNet(in_features: int, num_layers: in
基类:
`Module`
低秩交叉网络是一个高效的交叉网络。它不是在每一层使用满秩交叉矩阵(NxN),而是使用两个核
\(
W (N x r)
\)
和
\(
V (r x N)
\)
,其中 r << N,以简化矩阵乘法。
低秩交叉网络是一个高效的交叉网络。它不是在每一层使用满秩交叉矩阵(NxN),而是使用两个核
$W (N x r)$和$V (r x N)$
,其中 r << N,以简化矩阵乘法。
在每一层 l 上,张量被转换为:
\[
x_{l+1} = x_0
*
(W_l
\c
dot (V_l
\c
dot x_l) + b_l) + x_l
\]
$$x_{l+1} = x_0
*
(W_l
\c
dot (V_l
\c
dot x_l) + b_l) + x_l$$
其中
\(
W_l
\)
可以是一个向量,
\(
*
)表示逐元素乘法,
\(\c
dot
\)
表示矩阵乘法。
其中
$W_l$可以是一个向量,$
*
)表示逐元素乘法,$
\c
dot$
表示矩阵乘法。
注意
秩 r 应该被聪明地选择。通常,我们期望 r < N/2 以节省计算;我们应该期望
\(
r ~= N/4
\)
以保持完整秩交叉网络的准确性。
秩 r 应该被聪明地选择。通常,我们期望 r < N/2 以节省计算;我们应该期望
$r ~= N/4$
以保持完整秩交叉网络的准确性。
参数:
...
...
@@ -187,17 +187,17 @@ class torchrec.modules.crossnet.LowRankMixtureCrossNet(in_features: int, num_lay
低秩混合交叉网络是来自
[
论文
](
https://arxiv.org/pdf/2008.13535.pdf
)
的 DCN V2 实现:
LowRankMixtureCrossNet 将每层的可学习交叉参数定义为一个低秩矩阵
\(
(N
*
r)
\)
以及专家混合。与 LowRankCrossNet 相比,这个模块不依赖于单个专家来学习特征交叉,而是利用这样的
\(
K
\)
专家;每个专家在不同子空间中学习特征交互,并通过依赖于输入
\(
x
\)
的门控机制自适应地组合学习到的交叉。
LowRankMixtureCrossNet 将每层的可学习交叉参数定义为一个低秩矩阵
$(N
*
r)$以及专家混合。与 LowRankCrossNet 相比,这个模块不依赖于单个专家来学习特征交叉,而是利用这样的$K$专家;每个专家在不同子空间中学习特征交互,并通过依赖于输入$x$
的门控机制自适应地组合学习到的交叉。
在每一层 l 上,张量被转换为:
\[
x_{l+1} = MoE({expert_i : i
\i
n K_{experts}}) + x_l
\]
$$x_{l+1} = MoE({expert_i : i
\i
n K_{experts}}) + x_l$$
每个
\(
expert_i
\)
被定义为:
每个
$expert_i$
被定义为:
\[
expert_i = x_0
*
(U_{li}
\c
dot g(C_{li}
\c
dot g(V_{li}
\c
dot x_l)) + b_l)
\]
$$expert_i = x_0
*
(U_{li}
\c
dot g(C_{li}
\c
dot g(V_{li}
\c
dot x_l)) + b_l)$$
其中
\(
U_{li} (N, r)
\)
,
\(
C_{li} (r, r)
\)
和
\(
V_{li} (r, N)
\)
是低秩矩阵,
\(
*
)表示逐元素乘法,
\(
x
\)
表示矩阵乘法,
\(
g()
\)
是非线性激活函数。
其中
$U_{li} (N, r)$,$C_{li} (r, r)$和$V_{li} (r, N)$是低秩矩阵,$
*
)表示逐元素乘法,$x$表示矩阵乘法,$g()$
是非线性激活函数。
当 num_expert 为 1 时,门控评估和 MOE 将被跳过以节省计算。
...
...
@@ -254,9 +254,9 @@ class torchrec.modules.crossnet.VectorCrossNet(in_features: int, num_layers: int
在每一层 l 上,张量被转换为
\[
x_{l+1} = x_0
*
(W_l . x_l + b_l) + x_l
\]
$$x_{l+1} = x_0
*
(W_l . x_l + b_l) + x_l$$
其中
\(
W_l
\)
是一个向量,
\(
*
)表示逐元素乘法;
\(
.
\)
表示点操作。
其中
$W_l$是一个向量,$
*
)表示逐元素乘法;$.$
表示点操作。
参数:
...
...
docs/todo/txt_0.17/txt017_05.md
浏览文件 @
100ae00d
...
...
@@ -73,19 +73,19 @@ forward(query: Tensor, key: Tensor, value: Tensor, attn_mask: Optional[Tensor] =
> + 输入:
> +
> > + 查询:
\((...,L,N,E)\)
> > + 查询:
$(...,L,N,E)$
> > +
> > + 键:
\((...,S,N,E)\)
> > + 键:
$(...,S,N,E)$
> > +
> > + 值:
\((...,S,N,E)\)
> > + 值:
$(...,S,N,E)$
> > +
> > + attn_mask,bias_k 和 bias_v:与注意力层中相应参数的形状相同。
> > +
> + 输出:
> +
> > + attn_output:
\((...,L,N,E)\)
> > + attn_output:
$(...,L,N,E)$
> > +
> > + attn_output_weights:
\((N * H,L,S)\)
> > + attn_output_weights:
$(N * H,L,S)$
> > +
> 注意:具有超过三个维度的查询/键/值输入是可选的(用于广播目的)。MultiheadAttentionContainer 模块将在最后三个维度上操作。
>
...
...
@@ -193,19 +193,19 @@ forward(query: Tensor, key: Tensor, value: Tensor, attn_mask: Optional[Tensor] =
形状:
+
query:
\(
(..., L, N
*
H, E / H)
\)
+
query:
$(..., L, N
*
H, E / H)$
+
键:
\(
(..., S, N
*
H, E / H)
\)
+
键:
$(..., S, N
*
H, E / H)$
+
value:
\(
(..., S, N
*
H, E / H)
\)
+
value:
$(..., S, N
*
H, E / H)$
+
attn_mask:
\(
(N
*
H, L, S)
\)
,具有
`True`
的位置不允许参与
+
attn_mask:
$(N
*
H, L, S)$
,具有
`True`
的位置不允许参与
当`False`值将保持不变。
+
bias_k 和 bias_v:bias:
\(
(1, N
*
H, E / H)
\)
+
bias_k 和 bias_v:bias:
$(1, N
*
H, E / H)$
+
输出:
\(
(..., L, N
* H, E / H)\),\((N *
H, L, S)
\)
+
输出:
$(..., L, N
* H, E / H)$,$(N *
H, L, S)$
注意:具有超过三个维度的查询/键/值输入是可选的(用于广播目的)。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录