归一化#
批归一化前向#
批归一化操作计算
\( output = scale*{input - mean \over \sqrt{variance + epsilon}} + bias \)
可选地,该操作还计算
\(next\_running\_mean = (1 - momentum)*previous\_running\_mean + momentum*current\_running\_mean\)
\(next\_running\_variance = (1 - momentum)*previous\_running\_variance + momentum*current\_running\_variance\)
C++ API#
std::array<std::shared_ptr<Tensor_attributes>, 5> batchnorm(std::shared_ptr<Tensor_attributes>& input,
std::shared_ptr<Tensor_attributes>& scale,
std::shared_ptr<Tensor_attributes>& bias,
Batchnorm_attributes attributes);
其中输出数组包含以下顺序的张量: [output, saved_mean, saved_invariance, next_running_mean, next_running_variance]
批归一化属性是一个轻量级结构,带有用于提供可选输入张量和其他操作属性的设置器
Batchnorm_attributes&
set_previous_running_stats(std::shared_ptr<Tensor_attributes>& previous_running_mean,
std::shared_ptr<Tensor_attributes>& previous_running_variance,
std::shared_ptr<Tensor_attributes>& momentum)
Batchnorm_attributes&
set_name(std::string const&)
Batchnorm_attributes&
set_compute_data_type(DataType_t value)
Python API#
批归一化
输入
缩放
偏置
输入运行均值
输入运行方差
epsilon
momentum
计算数据类型
名称
批归一化完成#
The bn_finalize
操作根据 genstat
操作生成的统计信息计算下一次迭代所需的统计信息。
C++ API#
std::array<std::shared_ptr<Tensor_attributes>, 6> bn_finalize(std::shared_ptr<Tensor_attributes>,
std::shared_ptr<Tensor_attributes>,
std::shared_ptr<Tensor_attributes>,
std::shared_ptr<Tensor_attributes>,
std::shared_ptr<Tensor_attributes>,
std::shared_ptr<Tensor_attributes>,
BN_finalize_attributes);
输出为 [EQ_SCALE, EQ_BIAS, MEAN, INV_VARIANCE, NEXT_RUNNING_MEAN, NEXT_RUNNING_VAR]
。
批归一化反向 (DBN)#
DBN 操作计算批归一化前向操作反向传播期间的数据梯度、缩放梯度和偏置梯度。
C++ API#
std::array<std::shared_ptr<Tensor_attributes>, 3> batchnorm_backward(std::shared_ptr<Tensor_attributes> loss,
std::shared_ptr<Tensor_attributes> input,
std::shared_ptr<Tensor_attributes> scale,
Batchnorm_backward_attributes);
输出数组包含以下顺序的张量: [input gradient, scale gradient, bias gradient]
。
DBN 属性是一个轻量级结构,带有设置器
Batchnorm_backward_attributes&
set_saved_mean_and_inv_variance(std::shared_ptr<Tensor_attributes> saved_mean,
std::shared_ptr<Tensor_attributes> saved_inverse_variance)
Batchnorm_backward_attributes&
set_epsilon(std::shared_ptr<Tensor_attributes> epsilon)
Batchnorm_backward_attributes&
set_name(std::string const&)
Batchnorm_backward_attributes&
set_compute_data_type(DataType_t value)
只需设置(保存的均值和逆方差)或 (epsilon) 之一即可。
生成统计信息#
Genstats 操作计算每个通道维度的总和和平方和。
C++ API#
std::array<std::shared_ptr<Tensor_attributes>, 2>
cudnn_frontend::graph::genstats(std::shared_ptr<Tensor_attributes>, Genstats_attributes);
输出数组包含以下顺序的张量: [sum, square_sum]
Genstats 属性是一个轻量级结构,带有设置器
Genstats_attributes&
set_name(std::string const&)
Genstats_attributes&
set_compute_data_type(DataType_t value)
Python API#
生成统计信息
输入
计算数据类型
名称
层归一化前向#
层归一化操作计算
\( output = scale*{input - mean \over \sqrt{variance + epsilon}} + bias \)
归一化跨特征发生,每个样本独立进行。
C++ API#
std::array<std::shared_ptr<Tensor_attributes>, 3> layernorm(std::shared_ptr<Tensor_attributes>& input,
std::shared_ptr<Tensor_attributes>& scale,
std::shared_ptr<Tensor_attributes>& bias,
Layernorm_attributes attributes);
输出数组包含以下顺序的张量: [output, mean, variance]
层归一化属性是一个轻量级结构,带有用于提供可选输入张量和其他操作属性的设置器
Layernorm_attributes&
set_name(std::string const&)
Layernorm_attributes&
set_compute_data_type(DataType_t value)
Python API#
层归一化
归一化前向阶段
输入
缩放
偏置
epsilon
计算数据类型
名称
层归一化反向 (DLN)#
DLN 操作计算层归一化前向操作反向传播期间的数据梯度、缩放梯度和偏置梯度。
C++ API#
std::array<std::shared_ptr<Tensor_attributes>, 3>
layernorm_backward(std::shared_ptr<Tensor_attributes> dy,
std::shared_ptr<Tensor_attributes> x,
std::shared_ptr<Tensor_attributes> scale,
Layernorm_backward_attributes options);
输出数组包含以下顺序的张量: [input gradient, scale gradient, bias gradient]
。
层归一化属性是一个轻量级结构,带有用于提供可选输入张量和其他操作属性的设置器
Layernorm_attributes&
set_name(std::string const&)
Layernorm_attributes&
set_compute_data_type(DataType_t value)
Python API#
层归一化
输入
缩放
损失
计算数据类型
名称
实例归一化前向#
实例归一化操作计算
\( output = scale*{input - mean \over \sqrt{variance + epsilon}} + bias \)
归一化跨每个样本发生。
C++ API#
std::array<std::shared_ptr<Tensor_attributes>, 3> instancenorm(std::shared_ptr<Tensor_attributes>& input,
std::shared_ptr<Tensor_attributes>& scale,
std::shared_ptr<Tensor_attributes>& bias,
Instancenorm_attributes attributes);
输出数组包含以下顺序的张量: [output, mean, variance]
。
实例归一化属性是一个轻量级结构,带有用于提供可选输入张量和其他操作属性的设置器
Instancenorm_attributes&
set_name(std::string const&)
Instancenorm_attributes&
set_compute_data_type(DataType_t value)
Python API#
实例归一化
归一化前向阶段
输入
缩放
偏置
epsilon
计算数据类型
名称
实例归一化反向 (DIN)#
DIN 操作计算实例归一化前向操作反向传播期间的数据梯度、缩放梯度和偏置梯度。
C++ API#
std::array<std::shared_ptr<Tensor_attributes>, 3>
instancenorm_backward(std::shared_ptr<Tensor_attributes> dy,
std::shared_ptr<Tensor_attributes> x,
std::shared_ptr<Tensor_attributes> scale,
Instancenorm_backward_attributes options);
输出数组包含以下顺序的张量: [input gradient, scale gradient, bias gradient]
。
实例归一化属性是一个轻量级结构,带有用于提供可选输入张量和其他操作属性的设置器
Instancenorm_attributes&
set_name(std::string const&)
Instancenorm_attributes&
set_compute_data_type(DataType_t value)
Python API#
层归一化
输入
缩放
损失
计算数据类型
名称