paddlespeech.t2s.modules.transformer.attention 模块

多头注意力层的定义。

class paddlespeech.t2s.modules.transformer.attention.LegacyRelPositionMultiHeadedAttention(n_head, n_feat, dropout_rate, zero_triu=False)[来源]

基础: MultiHeadedAttention

具有相对位置编码的多头注意力层(旧版本)。 详细信息可以在 https://github.com/espnet/espnet/pull/2816 找到。 论文: https://arxiv.org/abs/1901.02860

Args:
n_head (int):

头的数量。

n_feat (int):

特征的数量。

dropout_rate (float):

dropout 率。

zero_triu (bool):

是否将注意力矩阵的上三角部分置为零。

方法

__call__(*inputs, **kwargs)

将self作为一个函数调用。

add_parameter(name, parameter)

添加一个参数实例。

add_sublayer(name, sublayer)

添加一个子层实例。

apply(fn)

递归地将 fn 应用到每个子层(由 .sublayers() 返回)以及自身。

buffers([include_sublayers])

返回当前层及其子层中的所有缓冲区的列表。

children()

返回一个迭代器,遍历直接子层。

clear_gradients()

清除此层所有参数的梯度。

create_parameter(shape[, attr, dtype, ...])

为该层创建参数。

create_tensor([name, persistable, dtype])

为该层创建张量。

create_variable([name, persistable, dtype])

为该层创建张量。

eval()

将该层及其所有子层设置为评估模式。

extra_repr()

该层的额外表示,您可以自定义实现自己的层。

forward(query, key, value, pos_emb, mask)

计算“缩放点积注意力”与 rel。

forward_attention(value, scores[, mask])

计算注意力上下文向量。

forward_qkv(query, key, value)

转换查询、键和值。

full_name()

此层的完整名称,由 name_scope + "/" + MyLayer.__class__.__name__ 组成

load_dict(state_dict[, use_structured_name])

从 state_dict 设置参数和可持久化缓存。

named_buffers([prefix, include_sublayers])

返回一个迭代器,遍历层中的所有缓冲区,生成名称和张量的元组。

named_children()

返回一个直接子层的迭代器,同时提供层的名称和层本身。

named_parameters([prefix, include_sublayers])

返回一个迭代器,遍历层中的所有参数,生成名称和参数的元组。

named_sublayers([prefix, include_self, ...])

返回Layer中所有子层的迭代器,生成名称和子层的元组。

parameters([include_sublayers])

返回当前层及其子层的所有参数的列表。

register_buffer(name, tensor[, persistable])

将一个张量注册为该层的缓冲区。

register_forward_post_hook(hook)

为层注册一个前向后钩子。

register_forward_pre_hook(hook)

为层注册一个前向预钩子。

rel_shift(x)

计算相对位置编码。 参数: x(Tensor): 输入张量(批次,头,时间1,时间2)。 返回: Tensor: 输出张量。

set_dict(state_dict[, use_structured_name])

从 state_dict 设置参数和可持久化的缓冲区。

set_state_dict(state_dict[, use_structured_name])

从state_dict设置参数和持久化缓冲区。

state_dict([destination, include_sublayers, ...])

获取当前层及其子层的所有参数和可持久化缓冲区。

sublayers([include_self])

返回子层的列表。

to([device, dtype, blocking])

通过给定的设备、数据类型和阻塞方式转换层的参数和缓冲区。

to_static_state_dict([destination, ...])

获取当前层及其子层的所有参数和缓冲区。

train()

将此层及其所有子层设置为训练模式。

向后

注册状态字典钩子

forward(query, key, value, pos_emb, mask)[来源]

计算带相对位置编码的“缩放点积注意力”。

Args:

query(Tensor): 查询张量 (#batch, time1, size).
key(Tensor): 键张量 (#batch, time2, size).
value(Tensor): 值张量 (#batch, time2, size).
pos_emb(Tensor): 位置嵌入张量 (#batch, time1, size).
mask(Tensor): 掩码张量 (#batch, 1, time2) 或 (#batch, time1, time2).

Returns:

张量:输出张量(#batch,time1,d_model)。

rel_shift(x)[来源]

计算相对位置编码。
参数:

x(Tensor):

输入张量 (批次, 头, 时间1, 时间2).

Returns:

张量: 输出张量。

class paddlespeech.t2s.modules.transformer.attention.MultiHeadedAttention(n_head, n_feat, dropout_rate)[来源]

基础: Layer

多头注意力层。

参数:

n_head (int):

头的数量。

n_feat (int):

特征的数量。

dropout_rate (float):

dropout 率。

方法

__call__(*inputs, **kwargs)

将self作为一个函数调用。

add_parameter(name, parameter)

添加一个参数实例。

add_sublayer(name, sublayer)

添加一个子层实例。

apply(fn)

递归地将 fn 应用到每个子层(由 .sublayers() 返回)以及自身。

buffers([include_sublayers])

返回当前层及其子层中的所有缓冲区的列表。

children()

返回一个迭代器,遍历直接子层。

clear_gradients()

清除此层所有参数的梯度。

create_parameter(shape[, attr, dtype, ...])

为该层创建参数。

create_tensor([name, persistable, dtype])

为该层创建张量。

create_variable([name, persistable, dtype])

为该层创建张量。

eval()

将该层及其所有子层设置为评估模式。

extra_repr()

该层的额外表示,您可以自定义实现自己的层。

forward(query, key, value[, mask])

计算缩放点积注意力。

forward_attention(value, scores[, mask])

计算注意力上下文向量。

forward_qkv(query, key, value)

转换查询、键和值。

full_name()

此层的完整名称,由 name_scope + "/" + MyLayer.__class__.__name__ 组成

load_dict(state_dict[, use_structured_name])

从 state_dict 设置参数和可持久化缓存。

named_buffers([prefix, include_sublayers])

返回一个迭代器,遍历层中的所有缓冲区,生成名称和张量的元组。

named_children()

返回一个直接子层的迭代器,同时提供层的名称和层本身。

named_parameters([prefix, include_sublayers])

返回一个迭代器,遍历层中的所有参数,生成名称和参数的元组。

named_sublayers([prefix, include_self, ...])

返回Layer中所有子层的迭代器,生成名称和子层的元组。

parameters([include_sublayers])

返回当前层及其子层的所有参数的列表。

register_buffer(name, tensor[, persistable])

将一个张量注册为该层的缓冲区。

register_forward_post_hook(hook)

为层注册一个前向后钩子。

register_forward_pre_hook(hook)

为层注册一个前向预钩子。

set_dict(state_dict[, use_structured_name])

从 state_dict 设置参数和可持久化的缓冲区。

set_state_dict(state_dict[, use_structured_name])

从state_dict设置参数和持久化缓冲区。

state_dict([destination, include_sublayers, ...])

获取当前层及其子层的所有参数和可持久化缓冲区。

sublayers([include_self])

返回子层的列表。

to([device, dtype, blocking])

通过给定的设备、数据类型和阻塞方式转换层的参数和缓冲区。

to_static_state_dict([destination, ...])

获取当前层及其子层的所有参数和缓冲区。

train()

将此层及其所有子层设置为训练模式。

向后

注册状态字典钩子

forward(query, key, value, mask=None)[来源]

计算缩放的点积注意力。

Args:
query(Tensor):

查询张量 (#batch, time1, size).

key(Tensor):

关键张量 (#batch, time2, size).

value(Tensor):

值张量 (#batch, time2, size).

mask(Tensor, optional):

掩码张量 (#batch, 1, time2) 或 (#batch, time1, time2)。 (默认值 = None)

Returns:

张量:输出张量(#batch,time1,d_model)。

forward_attention(value, scores, mask=None)[来源]

计算注意力上下文向量。

Args:
value(Tensor):

转换值 (#batch, n_head, time2, d_k).

scores(Tensor):

注意力分数 (#batch, n_head, time1, time2).

mask(Tensor, optional):

掩码 (#batch, 1, time2) 或 (#batch, time1, time2)。(默认值 = None)

Returns:

张量:经过变换的值(#batch,time1,d_model),按注意力分数(#batch,time1,time2)加权。

forward_qkv(query, key, value)[来源]

转换查询、键和值。

Args:
query(Tensor):

查询张量 (#batch, time1, size).

key(Tensor):

关键张量 (#batch, time2, size).

value(Tensor):

值张量 (#batch, time2, size).

Returns:
Tensor:

转换后的查询张量 (#batch, n_head, time1, d_k).

Tensor:

变换后的关键张量 (#batch, n_head, time2, d_k).

Tensor:

变换后的值张量 (#batch, n_head, time2, d_k).

class paddlespeech.t2s.modules.transformer.attention.RelPositionMultiHeadedAttention(n_head, n_feat, dropout_rate, zero_triu=False)[来源]

基础: MultiHeadedAttention

带有相对位置编码的多头注意力层(新实现)。 详细信息请参见 https://github.com/espnet/espnet/pull/2816。 论文: https://arxiv.org/abs/1901.02860

Args:
n_head (int):

头的数量。

n_feat (int):

特征的数量。

dropout_rate (float):

dropout 率。

zero_triu (bool):

是否将注意力矩阵的上三角部分置为零。

方法

__call__(*inputs, **kwargs)

将self作为一个函数调用。

add_parameter(name, parameter)

添加一个参数实例。

add_sublayer(name, sublayer)

添加一个子层实例。

apply(fn)

递归地将 fn 应用到每个子层(由 .sublayers() 返回)以及自身。

buffers([include_sublayers])

返回当前层及其子层中的所有缓冲区的列表。

children()

返回一个迭代器,遍历直接子层。

clear_gradients()

清除此层所有参数的梯度。

create_parameter(shape[, attr, dtype, ...])

为该层创建参数。

create_tensor([name, persistable, dtype])

为该层创建张量。

create_variable([name, persistable, dtype])

为该层创建张量。

eval()

将该层及其所有子层设置为评估模式。

extra_repr()

该层的额外表示,您可以自定义实现自己的层。

forward(query, key, value, pos_emb, mask)

计算“缩放点积注意力”与 rel。

forward_attention(value, scores[, mask])

计算注意力上下文向量。

forward_qkv(query, key, value)

转换查询、键和值。

full_name()

此层的完整名称,由 name_scope + "/" + MyLayer.__class__.__name__ 组成

load_dict(state_dict[, use_structured_name])

从 state_dict 设置参数和可持久化缓存。

named_buffers([prefix, include_sublayers])

返回一个迭代器,遍历层中的所有缓冲区,生成名称和张量的元组。

named_children()

返回一个直接子层的迭代器,同时提供层的名称和层本身。

named_parameters([prefix, include_sublayers])

返回一个迭代器,遍历层中的所有参数,生成名称和参数的元组。

named_sublayers([prefix, include_self, ...])

返回Layer中所有子层的迭代器,生成名称和子层的元组。

parameters([include_sublayers])

返回当前层及其子层的所有参数的列表。

register_buffer(name, tensor[, persistable])

将一个张量注册为该层的缓冲区。

register_forward_post_hook(hook)

为层注册一个前向后钩子。

register_forward_pre_hook(hook)

为层注册一个前向预钩子。

rel_shift(x)

计算相对位置编码。参数: x(Tensor): 输入张量 (batch, head, time1, 2*time1-1)。

set_dict(state_dict[, use_structured_name])

从 state_dict 设置参数和可持久化的缓冲区。

set_state_dict(state_dict[, use_structured_name])

从state_dict设置参数和持久化缓冲区。

state_dict([destination, include_sublayers, ...])

获取当前层及其子层的所有参数和可持久化缓冲区。

sublayers([include_self])

返回子层的列表。

to([device, dtype, blocking])

通过给定的设备、数据类型和阻塞方式转换层的参数和缓冲区。

to_static_state_dict([destination, ...])

获取当前层及其子层的所有参数和缓冲区。

train()

将此层及其所有子层设置为训练模式。

向后

注册状态字典钩子

forward(query, key, value, pos_emb, mask)[来源]

计算带相对位置编码的“缩放点积注意力”。

Args:
query(Tensor):

查询张量 (#batch, time1, size).

key(Tensor):

关键张量 (#batch, time2, size).

value(Tensor):

值张量 (#batch, time2, size).

pos_emb(Tensor):

位置嵌入张量 (#batch, 2*time1-1, size).

mask(Tensor):

掩码张量 (#batch, 1, time2) 或 (#batch, time1, time2)。

Returns:

张量:输出张量(#batch,time1,d_model)。

rel_shift(x)[来源]

计算相对位置编码。参数:

x(Tensor):

输入张量(批次,头,时间1,2*时间1-1)。

Returns:

张量:输出张量。