【每日算法】理论:常见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 两部分。T5在Transformer模型的基础上进行了一系列的改进和创新,包括统一的输入输出表示、任务描述符、训练目标和超参数的调整等,从而使得模型在处理文本生成任务时表现更加优异和通用。

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=0
        for 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
                        # 凹槽右侧下标-凹槽左侧下标-1
                        w = i-stack[-1]-1
                        result+=h*w
                stack.append(i)
        return result

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网络安全】 MSF生成木马教程

本文章仅用于信息安全学习&#xff0c;请遵守相关法律法规&#xff0c;严禁用于非法途径。若读者因此作出任何危害网络安全的行为&#xff0c;后果自负&#xff0c;与作者无关。 环境准备&#xff1a; 名称系统位数IP攻击机Kali Linux6410.3.0.231客户端Windows 76410.3.0.234…

二叉搜索树、B-树、B+树

二叉搜索树 二叉查找树&#xff0c;也称为二叉搜索树、有序二叉树或排序二叉树&#xff0c;是指一棵空树或者具有下列性质的二叉树&#xff1a; 若任意节点的左子树不空&#xff0c;则左子树上所有节点的值均小于它的根节点的值&#xff1b;若任意节点的右子树不空&#xff0…

java入门-基本数据类型

今天开始开贴关注初学java的同学&#xff0c;写些基础内容&#xff0c;希望对大家有所帮助。如果对大家有帮助会一直写下去。 java基本语法-基本数据类型 概述 基本数据类型在程序运行中&#xff0c;需要内存空间来存储数据。数据存储的大小有不同&#xff0c;申请合理的内存空…

POJO简介

文章目录 简介POJO与ELB的区别POJO真正的意思 常见的POJO类DTODAOPOVOEntity 简介 什么是POJO&#xff1f;POJO&#xff08;Plain Ordinary Java Object&#xff09;简单的Java对象&#xff0c;实际就是普通JavaBeans&#xff0c;是为了避免和EJB(EJB是Enterprise Java Beans技…

Docker【docker使用】

文章目录 前言一、概念二、常用方法1.镜像2.容器 三、镜像构建贺管理 前言 上一篇文章讲了docker的安装&#xff0c;本片文章我们来聊聊docker的一些常用操作。以及镜像、容器之间的关系 一、概念 docker三大核心概念&#xff1a;镜像 Image、容器 Container、仓库 Reposito…

Opencv4+稀疏光流算法详解+实现

0. 写在前面 项目需要用到光流法找到图像中的点运动方向&#xff0c;想到光流法刚好适用。原理部分参考&#xff1a; 图像处理算法--光流法-原理-CSDN博客 1. Opencv4.5.4稀疏光流函数说明 1.1 稀疏光流API介绍 prevImg:视频前一帧图像/金字塔&#xff0c;单通道CV_…

获取远程管理软件保存的凭据

点击星标&#xff0c;即时接收最新推文 本文选自《内网安全攻防&#xff1a;红队之路》 扫描二维码五折购书 内网敏感数据的发现 内网的核心敏感数据&#xff0c;不仅包括数据库、电子邮件&#xff0c;还包括个人数据及组织的业务数据、技术数据等。可以说&#xff0c;价值较高…

(零)OpenOFDM接收端整体思路

一旦捕获射频信号并将其下变频至基带&#xff0c;解码管道就会启动&#xff0c;包括&#xff1a; OFDM&#xff0c;多载波调制的一种。通过频分复用实现高速串行数据的并行传输, 它具有较好的抗多径衰落的能力&#xff0c;能够支持多用户接入。 OFDM主要思想是&#xff1a;将信…

(1)fopen,fseek,fread,ftell,rewind作用和使用方法,大端小端

文章目录 1.fopen&#xff0c;fseek&#xff0c;fread&#xff0c;ftell&#xff0c;rewind作用和使用方法2.bin文件里从0x0000到0x0x0007是00 00 DF 00 00 01 00 00&#xff0c;但是用fread读出来前四个字节是DF0000&#xff0c;然后是0x1000&#xff0c;这是为什么&#xff1…

2024蓝桥杯每日一题(回溯)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;木棒 试题二&#xff1a;n皇后问题 试题三&#xff1a;糖果 试题四&#xff1a;飞机降落 试题五&#xff1a;生日蛋糕 试题一&#xff1a;木棒 【问题描述】 乔治拿来一组等长…

steam_api.dll“是什么?打开游戏出现找不到steam_api.dll无法继续执行代码如何解决

"steam_api.dll"是什么&#xff1f;&#xff0c;steam_api.dll它是由windows系统Visual C Redistributable for Visual Studio提供的。当这个文件损坏或丢失时&#xff0c;会导致一些应用程序无法运行&#xff0c;显示找不到"steam_api.dll"缺失错误。本文…

马斯克开源的grok AI大模型

马斯克践行诺言&#xff0c;坚持开源原则&#xff0c;选择开源自家的 AI 大模型——Grok-1 下载链接如下: https://github.com/xai-org/grok-1 Grok-1 开源仅过去了 10 个小时&#xff0c;该项目便获得了 超过16k 的 Star&#xff0c;成为众人关注的焦点所在。 后续继续更新…

Python二级备考(1)考纲+基础操作

考试大纲如下&#xff1a; 基本要求 考试内容 考试方式 比较希望能直接刷题&#xff0c;因为不懂的比较多可能会看视频。 基础操作刷题&#xff1a; 知乎大头计算机1-13题 import jieba txtinput() lsjieba.lcut(txt) print("{:.1f}".format(len(txt)/len(ls)…

springcloud:4.2 GateWay结合JWT实现网关鉴权

概述 概述 简介 JWT是一种用于双方之间传递安全信息的简洁的、URL安全的声明规范。 定义了一种简洁的,自包含的方法用于通信双方之间以Json对象的形式安全的传递信息。 特别适用于分布式站点的单点登录(SSO)场景 传统的session认证的缺点 安全性:CSRF攻击因为基于cookie来…

掌握AI写作工具:引领内容创作潮流

随着技术发展&#xff0c;AI技术正日益渗透到各行各业&#xff0c;并对内容创作领域产生了深远影响。随着AI写作工具的不断发展和普及&#xff0c;内容创作者们正逐渐看到了AI在提高效率、创造力和质量方面的巨大潜力。本文将探讨AI写作工具如何引领内容创作潮流&#xff0c;以…

vue antd table嵌套表格 左侧展开图标动态控制显示隐藏

antd a-table想要实现如以下效果&#xff0c;有子级就显示展开图标&#xff0c;没有就不显示图标&#xff1a; 话不多说&#xff0c;直接上代码&#xff1a; <template><a-table :columns"columns" :data-source"dataSource"><template #b…

最新若依项目快速上手

最新若依项目快速上手 配套视频&#xff1a;若依项目快速上手视频 1. 下载源码 官网&#xff1a;https://ruoyi.vip/ 前端 git clone https://github.com/yangzongzhuan/RuoYi-Vue3.git后端 git clone https://gitee.com/y_project/RuoYi-Vue.git2. 数据库 创建数据库ry-vue…

JAVA后端调用OpenAI接口 实现打字机效果(SSE)

SSE SSE&#xff08;Server-Sent Events&#xff0c;服务器发送事件&#xff09;是一种基于HTTP协议的通信技术&#xff0c;它允许服务器持续地将数据推送给客户端&#xff0c;而无需客户端发起请求。这种通信方式通常用于实时性要求较高的场景&#xff0c;如实时更新、通知、或…

Linux:搭建ntp服务器

我准备两个centos7服务器 一个为主服务器连接着外网&#xff0c;并且搭建了ntp服务给其他主机同步 另外一个没有连接外网&#xff0c;通过第一台设备去同步时间 首先两个服务器都要安装ntp软件 yum -y install ntp 再把他俩的时间都改成别的 左侧的是主服务器&#xff0c;主…

【Docker篇】自定义Dockerfile的操作

文章目录 &#x1f354;镜像结构&#x1f6f8;什么是Dockerfile⭐基于Ubuntu镜像构建一个新镜像&#xff0c;运行一个java项目&#x1f50e;使用 java:8-alpine &#x1f354;镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。 我们以MySQL为例&am…