欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > AF3 FourierEmbedding类源码解读

AF3 FourierEmbedding类源码解读

2025/1/26 15:24:28 来源:https://blog.csdn.net/qq_27390023/article/details/145329015  浏览:    关键词:AF3 FourierEmbedding类源码解读

FourierEmbedding 是一个用于扩散条件的傅里叶嵌入类,其核心是将输入的时间步噪声强度或控制参数timestep)转换为高维的周期性特征。

源代码:

class FourierEmbedding(nn.Module):"""Fourier embedding for diffusion conditioning."""def __init__(self, embed_dim):super(FourierEmbedding, self).__init__()self.embed_dim = embed_dim# Randomly generate weight/bias once before trainingself.weight = nn.Parameter(torch.randn((1, embed_dim)))self.bias = nn.Parameter(torch.randn((1, embed_dim)))def forward(self, t):"""Compute embeddings"""two_pi = torch.tensor(2 * 3.1415, device=t.device, dtype=t.dtype)return torch.cos(two_pi * (t * self.weight + self.bias))

类代码解读:

1. 类的功能

该模块的主要目的是通过傅里叶变换,将输入的时间步嵌入到一个周期性的高维特征空间。这种处理方式在扩散模型中尤为重要,因为时间步本身是一个标量(单一数值),通过傅里叶嵌入,模型能够更好地捕获时间的周期性模式。

2. __init__ 方法
def __init__(self, embed_dim):super(FourierEmbedding, self).__init__()self.embed_dim = embed_dim# Randomly generate weight/bias once before trainingself.weight = nn.Parameter(torch.randn((1, embed_dim)))self.bias = nn.Parameter(torch.randn((1, embed_dim)))
功能
  • 初始化傅里叶嵌入模块。
  • 生成随机初始化的权重和偏置(weight 和 bias),用于控制傅里叶变换的频率和相位。
重要参数
  • embed_dim:
    • 表示嵌入的维度,即输出特征的大小。
    • 在扩散模型中,较大的 e

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com