【学习笔记8】阅读StyleID论文源码

论文【链接】
源码【链接】

一、DDIM eta

ddim_step表示执行几轮去噪迭代,eta表示DDPM和DDIM的插值系数。当eta=0时,为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, device="cuda:0"))  # 始终输出 tensor([0.3530], device='cuda:0')
print(torch.rand(1, device="cuda:1"))  # 始终输出 tensor([0.3530], device='cuda:0')

不同设备之间的随机数:

在 CPU 上创建 Tensor,再切换到 GPU 上。只要不直接在 GPU 上创建随机变量,就可以在 CPU 和 GPU 上产出相同的结果。

import torchtorch.manual_seed(777)
print(torch.rand(1).to("cuda:0"))  # 输出 tensor([0.0819], device='cuda: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创建全相同的张量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/26779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.06.13

这两天一直在准备面试和进行面试啊, 从昨天面七牛云,到今天面百度和蔚来,学到了很多不只是知识上的内容,详情可看:我的牛客

【ARMv8/ARMv9 硬件加速系列 3 -- SVE 硬件加速向量运算 1】

文章目录 SVE 使用介绍SVE 特点SVE2 特点 SVE 寄存器扩展的向量寄存器可扩展的谓词寄存器.d 与 .b 后缀的区别举例介绍使用 .d 后缀进行64位元素操作使用 .b 后缀进行8位元素操作 ptrue 指令小结 FFR 寄存器 SVE 使用介绍 前面文章:【ARMv8/ARMv9 硬件加速系列 1 – SVE | NEO…

git下载项目登录账号或密码填写错误不弹出登录框

错误描述 登录账号或密码填写错误不弹出登录框 二、解决办法 控制面板\用户帐户\凭据管理器 找到对应的登录地址进行更新或者删除 再次拉取或者更新就会提示输入登录信息

影响数字本振信噪比的因素

2048 点 -66 4096 点-72 8192 点-77 16384 点-84

FineBI开发中的一些数据处理方法

在这里记录在FineBI开发中的遇到的一些数据处理方法。 1、获取一星期中的首日日期 假设电商数据分析场景中有张订单表,其中有一列为订单日期(order_create_dt),如果需要统计订单金额周同比,一般我们都需要构建一张日期维度表(如…

SAP PP学习笔记21 - 计划策略的Customize:策略组 > 策略 > 需求类型 > 需求类(消费区分,计划区分)

上面几章讲了MTS,MTO,ATO的计划策略。 本章来讲一下它的后台 Customize。 1,Customizeing:Planned Indep.Reqmts Management 这是配置计划策略的整个过程: - Requirements Type / Class 需求类型 / 需求类 - Plann…

VUE之重定向redirect

VUE之路由和重定向redirect 这个小知识点是在学习做项目的时候遇到的一个问题,借鉴了一个他人的项目,是一个酒店管理系统,拿到源码之后导到我的vscode里。 参考链接 导的过程比较顺利,正常安装,加依赖,没有…

SIM卡 移动、联通、电信对比

中国移动、联通、电信优势劣势分析 移动和联通采用GSM终端,电信采用CDMA终端(码分多址),上网速度快,保密性好联通也有CDMA关于GSM、CDMA、TDMA、 TD-SCDMA、WCDMA之间的各种纠结 中国联通:网络安全的“攻”与“防” 联通保密性…

java操作数据库语法

1 新建数据库 1.1 新建数据库 1 启动mysql数据库 2 新建数据库 1.2 mysql数据库语法 1 选择数据库 use java_demo1 2 移除数据库 drop database java_web1 3 创建表 CREATE TABLE user (id int(11) PRIMARY KEY AUTO_INCREMENT,name varchar(255) NOT NULL,age int(11)…

【python】通行网格地图四叉树化 (leeccode 427)

【python】通行网格地图四叉树化 受到Leecode 427题的启发,427. 建立四叉树 想将由0和1组成的网格地图绘制为四叉树地图,0表示可通行网格,1表示不可通行网格。 import matplotlib.pyplot as plt import matplotlib.patches as patches …

【数学建模】MATLAB入门教程:插值与拟合(下)

前言 插值与拟合在数据处理和科学计算中扮演着非常重要的角色&#xff0c;它们用于估算未知数据点的值&#xff0c;帮助我们理解和预测数据趋势 一、一维插值 1、一维插值定义 已知n1个节点(,)(j0,1,...,n,其中互不相同&#xff0c;不妨设a<<...<b),求任一插值点(…

鸿蒙开发:任务(Mission)与启动模式

任务&#xff08;Mission&#xff09;与启动模式 如前文所述&#xff0c;一个UIAbility实例对应一个任务。UIAbility实例个数与UIAbility配置的启动模式有关。在FA模型下&#xff0c;通过config.json配置文件中的“launchType”属性配置&#xff1b;在Stage模型下&#xff0c;…

QTableWidget自定义代理,实现自动换行

尝试使用setWordWrap(true)&#xff0c;但是仅对中文有效&#xff0c;对英文不会自动换行&#xff0c;最后只能用代理。 代理实现 class WordWrapDelegate : public QStyledItemDelegate { public:using QStyledItemDelegate::QStyledItemDelegate;void paint(QPainter *pai…

【镜像制作】Oracle JDK项目镜像压缩

文章目录 简介代码 简介 大家有没有试过在使用Oracle jdk的项目时&#xff0c;由于jdk的包太大&#xff0c;制作出来的镜像往往特别大&#xff0c;在大规模容器化的场景下&#xff0c;镜像的大小对存储的空间&#xff0c;拉取速度&#xff0c;启动的快慢都有一定 影响&#xff…

C#聊天室②

客户端 桌面 MyClient client;public Form1(){InitializeComponent();}// 进入聊天室按钮方法private void button1_Click(object sender, EventArgs e){if (!string.IsNullOrEmpty(textBox1.Text)){// 开始连接服务器 封装一个自定义客户端类client new MyClient(); // 给cl…

基于jeecgboot-vue3的Flowable流程-流程处理(一)

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 这部分修正一些流程处理中VForm3线上的一些bug问题 1、初始化流程提交与现实的前端页面代码 <!--初始化流程加载默认VForm3表单信息--><el-col :span"16" :offset&qu…

【Qt实现录频】

在Qt中实现录制视频可以通过使用Qt Multimedia模块来实现。你可以使用QCamera类来访问摄像头并捕获视频数据。以下是一个简单的示例代码,用于在Qt中实现录制视频: #include <QCamera> #include <QCameraInfo> #include <QCameraViewfinder> #include <…

nlp学习笔记

目录 很多入门例子 bert chinese 很多入门例子 https://github.com/lansinuote/Huggingface_Toturials bert chinese import torch import torch.nn as nn from transformers import AutoTokenizer, AutoModel, BertModel, TFBertModel, BertTokenizer# youpath = D:/bert-…

实时通信websocket和sse

microsoft/fetch-event-source是一个JavaScript库&#xff0c;用于处理服务器发送的事件&#xff08;Server-Sent Events&#xff0c;简称SSE&#xff09;。它提供了一个简单易用的API&#xff0c;使得客户端可以与服务器进行实时通信。这个库主要用于浏览器环境 安装依赖npm i…

【Mybatis】动态SQL的绑定和公共sql语句片段

Mybatis还有三个标签&#xff0c;分别是bind&#xff0c;sql和include ①bind&#xff1a;这个标签作用就是将OGNL标签里的值&#xff0c;进行二次加工&#xff0c;在绑定到另一个变量里&#xff0c;供其他标签使用&#xff0c;举个例子 调用getUsers方法的时候&#xff0c;我…