百度图片点击变网站是怎么做的,wordpress分类作为首页,寻花问柳专做男人的网站,网站建设视频上传论文【链接】 源码【链接】 一、DDIM eta
ddim_step表示执行几轮去噪迭代#xff0c;eta表示DDPM和DDIM的插值系数。当eta0时#xff0c;为DDPM#xff1b;当eta≠0时#xff0c;为DDIM。
参考
DDIM 简明讲解与 PyTorch 实现#xff1a;加速扩散模型采样的通用方法 【s… 论文【链接】 源码【链接】 一、DDIM eta
ddim_step表示执行几轮去噪迭代eta表示DDPM和DDIM的插值系数。当eta0时为DDPM当eta≠0时为DDIM。
参考
DDIM 简明讲解与 PyTorch 实现加速扩散模型采样的通用方法 【stable diffusion】两个与采样器有关的参数效果:eta大小与ddim插值方式
二、torch.permute()函数
作用
用于对torch进行维度变换。
transpose与permute的异同
同都是对tensor维度进行转置 异permute函数可以对任意高维矩阵进行转置但没有torch.permute()这个调用方式 对比permute也可以多次使用transpose
# 例子
torch.randn(2,3,4,5).permute(3,2,0,1).shape参考
Pytorch之permute函数
三、parser.add_argument(action‘store_true’)
action‘store_true’表示只要运行时该变量有传参就将该变量设为True。
参考
python之parser.add_argument()用法——命令行选项、参数和子命令解析器
四、seed everything
这是一个用于设置随机数种子的函数它可以确保在每次运行程序时生成的随机数序列都是相同的。这对于需要重现实验结果或调试代码非常有用。该函数的参数是一个整数值它可以是任何值但通常使用当前时间戳或其他唯一的标识符作为种子值。
什么是随机种子
随机数分为真随机数和伪随机数真随机数需要自然界中真实的随机物理现象才能产生而对于计算机来说生成这种随机数是很难办到的。而伪随机数是通过一个初始化的值来计算来产生一个随机序列如果初始值是不变的那么多次从该种子产生的随机序列也是相同的。这个初始值一般就称为种子。
程序中的随机数
np.random.seed只影响 NumPy 的随机过程torch.manual_seed也只影响 PyTorch 的随机过程。
import torch
torch.manual_seed(777)print(torch.rand(1)) # 始终输出tensor([0.0819])
print(torch.rand(1)) # 始终输出tensor([0.4911])CUDA 的随机数
PyTorch 中还有另一个设置随机种子的方法torch.cuda.manual_seed_all从名字可知这是设置显卡的随机种子。
import torch
torch.cuda.manual_seed_all(777)print(torch.rand(1)) # 多次调用都产生不同输出
print(torch.rand(1, devicecuda:0)) # 始终输出 tensor([0.3530], devicecuda:0)
print(torch.rand(1, devicecuda:1)) # 始终输出 tensor([0.3530], devicecuda:0)不同设备之间的随机数
在 CPU 上创建 Tensor再切换到 GPU 上。只要不直接在 GPU 上创建随机变量就可以在 CPU 和 GPU 上产出相同的结果。
import torchtorch.manual_seed(777)
print(torch.rand(1).to(cuda:0)) # 输出 tensor([0.0819], devicecuda:0)参数
Seed Everything - 可复现的 PyTorch一
五、Python getattr() 函数
getattr() 函数用于返回一个对象属性值。
参考
Python getattr() 函数
六、tensor.detach()
返回一个新的tensor从当前计算图中分离下来的但是仍指向原变量的存放位置,不同之处只是requires_grad为false得到的这个tensor永远不需要计算其梯度不具有grad。即使之后重新将它的requires_grad置为true,它也不会具有梯度grad。 这样我们就会继续使用这个新的tensor进行计算后面当我们进行反向传播时到该调用detach()的tensor就会停止不能再继续向前进行传播。 注意使用detach返回的tensor和原始的tensor共同一个内存即一个修改另一个也会跟着改变。
参考
pytorch的两个函数 .detach() .detach_() 的作用和区别
七、torch.full()
用于创建全相同的张量。
## 例子
t torch.full((3,3),10)
print(torch.full((3,3),10)的输出结果\n,t)## 输出结果
torch.full((3,3),10)的输出结果
tensor([[10., 10., 10.],[10., 10., 10.],[10., 10., 10.]])参考
PyTorch | torch.full()使用方法 | torch.full()如何使用 torch.full()例子说明 | 通过torch.full创建全相同的张量