【每日算法】常见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…

SpringBoot中的HttpServletRequest

1.HttpServletRequest javax.servlet.http.HttpServletRequest是SUN制定的Servlet规范&#xff0c;是一个接口&#xff0c;表示请求&#xff0c; 其父接口是 javax.servlet.ServletRequest。“ HTTP 请求协议”的完整内容都被封装到 request对象中。 2.HttpServletRequest的生…

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

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

面试经典-32-判断子序列

题目 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"abcde"的一个子序列…

【图像生成】(四) Diffusion原理 pytorch代码实例

之前介绍完了图像生成网络GAN和VAE&#xff0c;终于来到了Diffusion。stable diffusion里比较复杂&#xff0c;同时用到了diffusion&#xff0c;VAE&#xff0c;CLIP等模型&#xff0c;这里我们主要着重介绍diffusion网络本身。 2.原理 Diffusion扩散模型从字面上来理解&#…

通用的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 # 环境…

C++从零开始(day52)——unordered_set,unordered_map学习使用

1.unordered系列关联式容器 C98中&#xff0c;STL提供了底层为红黑树结构的一系列容器&#xff0c;在查找时效率可以达到时间复杂度可以达到O(logN)&#xff0c;即红黑树的高度次&#xff0c;当树中的结点非常多时&#xff0c;查询效率也不理想&#xff0c;因此在C11中&#x…

代码随想录算法训练营第11天|20.有效的括号 1047.删除字符串中的所有相邻重复项

20.有效的括号 栈类的题目都很神奇&#xff0c;这道题分有不有效有三种情况&#xff0c;一种是左括号多了&#xff0c;一种是右括号多了&#xff0c;一种是左括号和右括号不匹配。我们设置一个栈来放s[i]所对应的右括号&#xff0c;如果s[i]‘{’&#xff0c;那么就在栈里放‘}…

大模型语言系列-Agent

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

Lua中文语言编程源码-第五节,更改lcorolib.c协程库函数, 使Lua加载中文库关键词(与所有的基础库相关)

源码已经更新在CSDN的码库里&#xff1a; git clone https://gitcode.com/funsion/CLua.git 在src文件夹下的lcorolib.c协程库函数&#xff0c;Coroutine Library&#xff1a;表明这个C源文件实现了Lua的协程库&#xff08;Coroutine Library&#xff09;&#xff0c;即提供了…

探索编程新纪元: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 检查是否配置成功 参考资料 一、 …

kubernetes-pod的调度

kubernetes-pod的调度 kubernetes-71、pod停止之后&#xff0c;服务不会停止2、pod endpoint service之间的关系3、pod的调度总述1. 资源请求&#xff08;Resource Requests&#xff09;和资源限制&#xff08;Resource Limits&#xff09;2. 节点选择器&#xff08;Node Selec…

Android 卸载系统自带APP

https://www.xda-developers.com/uninstall-carrier-oem-bloatware-without-root-access/ pm uninstall -k --user 0 NameOfPackage pm install-existing NameOfPackage you can simply use “adb shell cmd package install-existing ” in ADB and you’ll get the package…

ES6 Nunber类型、Math对象扩展

二进制和八进制表示法 ES6 提供了二进制和八进制数值的新的写法&#xff0c;分别用前缀0b&#xff08;或0B&#xff09;和0o&#xff08;或0O&#xff09;表示。 0b111110111 503 // true 0o767 503 // true// 非严格模式 (function(){console.log(0o11 011); })() // true/…

RAxML-NG安装与使用-raxml-ng-v1.2.0(bioinfomatics tools-013)

01 背景 1.1 ML树 ML树&#xff0c;或最大似然树&#xff0c;是一种在进化生物学中用来推断物种之间进化关系的方法。最大似然&#xff08;Maximum Likelihood, ML&#xff09;是一种统计框架&#xff0c;用于估计模型参数&#xff0c;使得观察到的数据在该模型参数下的概率最…

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层。用户接口、应用程序。应用层向应用进程展示…

基金养老怎么选?

养老分三大支柱&#xff0c;分别是基本养老金&#xff0c;企业年金&#xff0c;个人养老金。这里讲一下个人养老金如果靠基金如何来养老。 基金用来养老&#xff0c;分为三种&#xff0c;一中是养老目标基金&#xff0c;一种是高分红的基金&#xff0c;最后一种是有定期现金流的…