由于本章内容较多,所以分为上下两篇。
关于扩散模型有很多种理解,本文介绍的是在基于PyTorch框架的重现的基础上(而他本身又基于TensorFlow实现),迁移到mind spore AI框架上实现的。
实验中我们采用离散时间(潜在变量模型)的观点,另外,读者也可以查看有关于扩散模型的其他几个观点。实验开始前请确保安装并导入所需的库。
如果将Diffusion与其他生成模型进行比较,它并没有那么复杂。它们都将噪声从一些简单分布转换为数据样本,Diffusion也是从纯噪声开始通过一个精神网络学习逐步去噪,最终得到一个实际图像。其对图像的处理包括以下两个过程:一是选择固定正向扩散过程q,二是一个学习的反向去噪的扩散过程p。
下面我们逐步构建Diffusion模型。首先,我们定义了一些帮助函数和类,这些函数和类将在实现神经网络时使用。