【每日算法】常见AIGC模型; 刷题:力扣单调栈

上期文章

【每日算法】理论:生成模型基础; 刷题:力扣单调栈

文章目录

  • 上期文章
  • 一、上期问题
  • 二、理论问题
      • 1、stable diffusion模型的网络架构
      • 2、T5的网络架构(Text-To-Text Transfer Transformer模型)
      • 3、SDXL模型
      • 4、DALLE
      • 5、BPE编码
      • 6、为什么DDPM加噪声的幅度是不一致的?
  • 三、力扣刷题回顾-单调栈部分


一、上期问题

【每日算法】理论:生成模型基础; 刷题:力扣单调栈

  • 怎么理解重参数化技术
  • KL散度是什么
  • DDPM
  • 什么是马尔可夫过程
  • GAN模型
  • VAE模型

二、理论问题

1、stable diffusion模型的网络架构

Stable Diffusion模型整体上是一个End-to-End模型,主要由VAE,U-Net以及CLIP Text Encoder三个核心组件构成。一般来讲,模型会有两个输入,即文本和图像输入。图像编码器VAE Encoder会将输入的图像转换为低维的Latent特征,而文本信息则会通过CLIP Text Encoder模型进行编码,处理过后的文本信息和图像信息会输入到图像优化模块中,图像优化模块进行优化迭代后,将其输出的低维Latent特征输入回图像解码器(VAE Decoder)中,重建成像素级图。
Stable Diffusion(SD)核心基础知识——(文生图、图生图)

2、T5的网络架构(Text-To-Text Transfer Transformer模型)

T5是谷歌在19年发布一个的一个模型,最主要的贡献是给整个 NLP 预训练模型领域提供了一个通用框架,将所有 NLP 任务都转化成 Text-to-Text任务。T5使用的就是Transformer标准的基本结构,分成 Encoder 和 Decoder 两部分,但有所区别:对于Encoder部分,是双向注意力,词与词之间互相可见,之后结果输给Decoder, Decoder部分当前时间步的词汇只能看到之前时间步的词汇。

3、SDXL模型

Stable Diffusion XL是一个二阶段的级联扩散模型,包括Base模型和Refiner模型。其中Base模型的主要工作和Stable Diffusion一致,具备文生图,图生图,图像inpainting等能力。在Base模型之后,级联了Refiner模型,对Base模型生成的图像Latent特征进行精细化,其本质上是在做图生图的工作。与Stable Diffusion模型相比,SDXL不论是模型架构上还是训练策略上都做了优化。在模型架构上,SDXL对原先sd的U-Net,VAE,CLIP Text Encoder三个部分都做了改进,在训练策略上,SDXL设计了很多训练策略,包括图像尺寸条件化策略,图像裁剪参数条件化以及多尺度训练等。
Stable Diffusion XL(SDXL)核心基础知识

4、DALLE

DALL·E 是 OpenAI 的多模态预训练模型,它的目标是将文本token和图像token当成一个数据序列,通过Transformer进行自回归。DALL-E 是一个两阶段的模型:它的第一个阶段是离散变分自编码器(Discrete Variance Auto-Encoder,dVAE),用于生成图像的token。它的第二个阶段是混合了图像和文本特征的,以Transformer为基础的生成模型。在训练阶段,模型会将文本编码和图像编码的结果进行拼接,用拼接的数据训练一个自回归transformer来建模文本和图片token的联合分布;在推理阶段,模型将输入文本编码成特征向量之后送入到自回归的Transformer中可以生成图像的token,将图像的token送入到dVAE的解码器中得到多组生成图像,此时再通过CLIP对生成样本进行评估,得到最终的生成结果。

【论文精读】DALLE: Zero-Shot Text-to-Image Generation零样本文本到图像生成

5、BPE编码

BPE(Byte Pair Encoding)编码是一种常用的无损数据压缩算法,也常被用于自然语言处理中的词汇表示和分词任务。它基于统计的方法,通过不断合并数据中出现频率最高的字节对来构建编码表。

6、为什么DDPM加噪声的幅度是不一致的?

DDPM前期的加噪幅度会小些,后期会加噪多。前期加噪少是为了保持数据结构的完整性,后期加噪多是为了加速扩散过程,从而使得模型能够更快地从噪声中恢复出清晰的数据。

三、力扣刷题回顾-单调栈部分

上期涉及题目:

  • 739. 每日温度
  • 496. 下一个更大元素 I
  • 503. 下一个更大元素 II

本期题目:

  • 42. 接雨水
  • 84.柱状图中最大的矩形

42. 接雨水:

  • 给定条件:包含n个非负整数的数组,每个非负整数都表示一个宽度为1的柱子的高度
  • 要求输出:按照上述数组排列出的柱子,在下雨后能够接住多少雨水
    在这里插入图片描述

84.柱状图中最大的矩形:

  • 给定条件:包含n个非负整数的数组,每个非负整数都表示一个宽度为1的柱子的高度
  • 要求输出:求在这个柱状图中可以勾勒出的矩形的最大面积
    在这里插入图片描述

对比分析:
42. 接雨水这道题需要分别寻找元素右边和左边的最大元素来计算雨水面积,由于单调栈的作用是寻找一个元素右边或者左边第一个比自己大或者小的元素的位置,所以单调栈保存的标号主要是用来求雨水面积中的行。对于列的计算需要考虑两侧柱子的高度,适用到单调栈场景主要是考虑以下三种情况:

  • ①当前遍历的元素(柱子)高度小于栈顶元素的高度:(把这个元素加入栈中,因为栈里本来就要保持从小到大的顺序)
  • ②当前遍历的元素(柱子)高度等于栈顶元素的高度:(更新栈顶元素,因为遇到相相同高度的柱子,需要使用最右边的柱子来计算宽度)
  • ③当前遍历的元素(柱子)高度大于栈顶元素的高度:(出现凹槽,用栈顶和栈顶的下一个元素以及要入栈的元素三个元素来接水)
    在这里插入图片描述

84.柱状图中最大的矩形和42. 接雨水是遥相呼应的两道题,接雨水是求外,柱状图中最大的矩形是求内。42. 接雨水是找每个柱子左右两边第一个大于该柱子高度的柱子,而本题是找每个柱子左右两边第一个小于该柱子的柱子。

42. 接雨水:

  • 情况一时将当前遍历的元素加入栈;情况二时当前柱子高度和栈顶一致,左边的一个是不可能存放雨水的,所以去除左侧柱子,保留右侧新柱子;情况三时将接到的雨水进行计算。
class Solution:def trap(self, height: List[int]) -> int:# stack储存index,用于计算对应的柱子高度stack=[0]result=0for i in range (1,len(height)):# 情况一if height[i]<height[stack[-1]]:stack.append(i)# 情况二# 当前柱子高度和栈顶一致时,左边的一个是不可能存放雨水的,所以保留右侧新柱子elif height[i]==height[stack[-1]]:stack.pop()stack.append(i)# 情况三else:while len(stack)!=0 and height[i]>height[stack[-1]]:# 栈顶是中间的柱子,也就是储水的凹槽的底部mid_height=height[stack[-1]]stack.pop()if stack:right_height=height[i]left_height=height[stack[-1]]# 两侧的较矮一方的高度 - 凹槽底部高度h = min(right_height, left_height) - mid_height# 凹槽右侧下标-凹槽左侧下标-1w = i-stack[-1]-1result+=h*wstack.append(i)return result

84.柱状图中最大的矩形:

  • 和接雨水一样分为三种情况,区别在于需要提前将输入数组首尾补上0,在情况三进行计算时高度的计算方式存在不同,并且接雨水试求面积之和,而本题是求面积的最大值。
class Solution:def largestRectangleArea(self, heights: List[int]) -> int:#输入数组首尾补上0heights.insert(0,0)heights.append(0)result=0stack=[0]for i in range(1,len(heights)):# 情况一if heights[i]>heights[stack[-1]]:stack.append(i)# 情况二elif heights[i] == heights[stack[-1]]:stack.pop()stack.append(i)# 情况三else:while stack and heights[i]<heights[stack[-1]]:# 栈顶是中间的柱子mid_index=stack[-1]stack.pop()if stack:w=i-stack[-1]-1h=heights[mid_index]result=max(result,w*h)stack.append(i)return result

参考:
代码随想录算法训练营第五十一天|503.下一个更大元素II,42. 接雨水
代码随想录算法训练营第五十二天|84.柱状图中最大的矩形,完结撒花✿✿ヽ(°▽°)ノ✿

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

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

相关文章

Git全套教程一套精通git.跟学黑马笔记

Git全套教程一套精通git.跟学黑马笔记 文章目录 Git全套教程一套精通git.跟学黑马笔记1.版本管理工具概念2. 版本管理工具介绍2.1版本管理发展简史(维基百科)2.1.1 SVN(SubVersion)2.1.2 Git 3. Git 发展简史4. Git 的安装4.1 git 的下载4.2 安装4.3 基本配置4.4 为常用指令配置…

【jeecgboot】微服务实战LISM

目录 一、服务解决方案-Spring Cloud Alibaba1.1选用原因&#xff08;基于Spring Cloud Alibaba的试用场景&#xff09;1.2 核心组件使用前期规划 部署 nacos部署 mino使用JavaFreemarker模板引擎&#xff0c;根据XML模板文件生成Word文档使用JavaFlowable 工作流引擎前端 -vue…

【C++中日期类的实现】

一路&#xff0c;一路&#xff0c;一路从泥泞到风景............................................................................................... 目录 前言 一、【什么是日期类】 二、【代码实现】 1.【Date.h】部分&#xff1a; 2.【Date.cpp】部分&#xff1a;…

通用的springboot web jar包执行脚本,释放端口并执行jar包

1、通用的springboot web jar包执行脚本&#xff0c;释放端口并执行jar包&#xff1a; #!/bin/bash set -eDATE$(date %Y%m%d%H%M) # 基础路径 BASE_PATH/data/yitu-projects/yitu-xzhq/sftp # 服务名称。同时约定部署服务的 jar 包名字也为它。 SERVER_NAMEyitu-server # 环境…

大模型语言系列-Agent

文章目录 前言一、Agent是什么&#xff1f;二、LLM Agent1.西部世界小镇Agent2.BabyAGI3.AutoGPT4.Voyager Agent 总结 前言 自2022年ChatGPT诞生以来&#xff0c;LLM获得了收获了大量关注和研究&#xff0c;但究其根本&#xff0c;技术还是要为应用服务&#xff0c;如何将LLM…

探索编程新纪元:Code GeeX、Copilot与通义灵码的智能辅助之旅

在人工智能技术日新月异的今天&#xff0c;编程领域的革新也正以前所未有的速度推进。新一代的编程辅助工具&#xff0c;如Code GeeX、Copilot和通义灵码&#xff0c;正在重塑开发者的工作流程&#xff0c;提升编程效率&#xff0c;并推动编程教育的普及。本文将深入探讨这三款…

Docker 镜像源配置

目录 一、 Docker 镜像源1.1 加速域名1.2 阿里云镜像源&#xff08;推荐&#xff09; 二、Docker 镜像源配置2.1 修改配置文件2.1.1 Docker Desktop 配置2.1.2 命令行配置 2.2 重启 Docker 服务2.2.1 Docker Desktop 重启2.2.2 命令行重启 2.3 检查是否配置成功 参考资料 一、 …

SpringCloudAlibaba系列之Seata实战

目录 环境准备 1.下载seata安装包 2.修改配置文件 3.准备seata所需配置文件 4.初始化seata所需数据库 5.运行seata 服务准备 分布式事务测试 环境准备 1.下载seata安装包 Seata-Server下载 | Apache Seata 本地环境我们选择稳定版的二进制下载。 下载之后解压到指定目录…

网络分层架构(七/四层协议)详解

OSI七层模型和TCP/IP四层模型 业内普遍的分层方式有两种&#xff1a;OSI七层模型 和TCP/IP四层模型。记忆则为 “应表会传网数物” 关于协议&#xff1a; ① OSI七层模型详解 结构名 功能 主要设备 应用层 是最靠近用户的OSI层。用户接口、应用程序。应用层向应用进程展示…

详解MySql索引

目录 一 、概念 二、使用场景 三、索引使用 四、索引存在问题 五、命中索引问题 六、索引执行原理 一 、概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。暂时可以理解成C语言的指针,文章后面详解 二、使用场景 数据量较大&#xff0c;且…

P1881 绳子对折

题目描述 FJ 有一个长度为 L&#xff08;1≤L≤10,000&#xff09;的绳子。这个绳子上有 N&#xff08;1≤N≤100&#xff09;个结&#xff0c;包括两个端点。FJ 想将绳子对折&#xff0c;并使较短一边的绳子上的结与较长一边绳子上的结完全重合&#xff0c;如图所示&#xff…

CleanMyMac X2024永久免费的强大的Mac清理工具

作为产品功能介绍专员&#xff0c;很高兴向您详细介绍CleanMyMac X这款强大的Mac清理工具。CleanMyMac X具有广泛的清理能力&#xff0c;支持多种文件类型的清理&#xff0c;让您的Mac始终保持最佳状态。 系统垃圾 CleanMyMac X能够深入系统内部&#xff0c;智能识别并清理各种…

MinGW64 windows gcc编译器安装

下载编译好的文件包 https://sourceforge.net/projects/mingw-w64/ 打开网址 界面左上方 点File 滚轮 滚到下面 点 红框 解压 配置path 环境变量

Vue3+TS+Vite 找不到模块“@/components/xxx/xxx”或其相应的类型声明

引入vue文件时文件是存在的&#xff0c;引入路径也是对的&#xff0c;报找不到模块&#xff0c;有一些解决方案是在tsconfig.json里面做一些配置&#xff0c;大家可以自行百度&#xff08;不知道是不是我百度的不对&#xff0c;我的没有解决&#xff09;还有一种是在项目根目录…

进程学习--02

在C语言中&#xff0c;一般使用fork函数开辟进程&#xff0c;这个函数开辟进程后会返回一个进程号&#xff0c;在子进程中会返回0&#xff0c;在父进程中会返回子进程的进程号。 int main(){int ret fork();if(ret<0){fprintf(stderr, "pid error");exit(-1);}e…

【Python编程基础】第一节.Python基本语法(上)

文章目录 前言⼀、Python介绍二、Python环境配置三、Pycharm 书写代码四、Python基本语法 4.1 print 函数的简单使用 4.2 注释 4.3 Python 代码中三种波浪线和 PEP8 4.4 在 cmd 终端中运⾏ Python 代码 4.5 变量 4.6 数据类型 4.7 类型转换…

字典树 [Tire]

数据结构、算法总述&#xff1a;数据结构/基础算法 C/C_禊月初三的博客-CSDN博客 字典树&#xff0c;英文名 trie。顾名思义&#xff0c;就是一个像字典一样的树。 Trie 树是一种多叉树的结构&#xff0c;它的特点是所有的字符都存储在树的分支上&#xff0c;并且从根节点到某…

什么是VR应急预案演练虚拟化|VR体验馆加盟|元宇宙文旅

VR 应急预案演练虚拟化指的是利用虚拟现实&#xff08;Virtual Reality&#xff0c;VR&#xff09;技术进行应急预案演练的过程。在传统的应急预案演练中&#xff0c;人们通常需要在实际场地或模拟环境中进行演练&#xff0c;这可能存在一些限制&#xff0c;如成本高昂、场地受…

Delphi7应用教程学习1.3【练习题目】:文本及悬停文字的显示

这个例子主要用到了btn的Hint 属性&#xff0c;Hint是提示的意思。 还有Delphi7还是很好用的&#xff0c;改变了的属性是粗体&#xff0c;默认没有改变的属性为细体。

吴恩达prompt 笔记2:迭代提示开发(Iterative Prompt Develelopment)

1 前言 我们很难在初次尝试中就设计出最佳的提示&#xff0c;因此需要根据ChatGPT的反馈进行分析&#xff0c;分析输出具体在哪里不符合期望&#xff0c;然后不断思考和优化提示。如果有条件的话&#xff0c;最好是利用批量的样本来改善提示&#xff0c;这样可以对你的优化结…