【每日算法】理论: 扩散模型+深度学习基础 刷题:力扣哈希表回顾

上期文章

【每日算法】理论: DALLE 系列 刷题:力扣链表回顾

文章目录

  • 上期文章
  • 一、上期问题
  • 二、本期问题
      • 1、交叉熵损失函数
      • 2、SAM模型的mask encoder(掩码解码器)
      • 3、VQVAE的优化问题
      • 4、controlnet模型中的zero convolution模块
      • 5、DDIM模型
      • 6、BN、LN、IN、GN、SN的对比
  • 三、力扣刷题回顾-哈希表
      • 242.有效的字母异位词
      • 349. 两个数组的交集
      • 第202题. 快乐数


一、上期问题

  • SDXL对于Stable Diffusion在网络架构上的具体改进
  • Transformer为什么可以并行
  • 卷积神经网络中的归纳偏置
  • DALLE2
  • DALLE3
  • SAM模型的数据集构建过程

二、本期问题

1、交叉熵损失函数

交叉熵损失函数用于分类问题,它将预测值与真实值之间的差异对数化,然后取平均值。交叉熵能够衡量同一个随机变量中两个不同概率分布的差异程度,在机器学习中表示真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。交叉熵在分类问题中常常与softmax是标配,softmax将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。
在这里插入图片描述

2、SAM模型的mask encoder(掩码解码器)

SAM模型中的mask解码器主要用于将图像嵌入、提示嵌入和输出标记映射到掩码。它采用了改进的Transformer解码器,接一个动态掩码预测头。修改后的解码器块在两个方向(提示到图像和反方向)使用提示自注意力和交叉注意力来更新所有Embedding。两个方向的交叉注意力层之间有一个前馈mlp网络,cross attention的结果通过残差方式相加并norm。在运行两个块后,将transform返回的mask token与上采样后的图像embedding点积得到最终的分割结果,iou token经过mlp后得到分割结果的得分。

SAM:segment anything model——一个通用的图像分割基础模型

前序问题:SAM模型

3、VQVAE的优化问题

VQ-VAE的优化目标由两部分组成:重建误差和嵌入空间误差:

  • 重建误差为输入图片和重建图片的均方误差。为了让梯度从解码器传到编码器,作者使用了一种巧妙的停止梯度算子,让正向传播和反向传播按照不同的方式计算。具体来说,前向传播时,sg里的值不变;反向传播时,sg按值为0求导,即此次计算无梯度。因此就可以实现前向传播时用解码器输入 z q ( x ) z_q(x) zq(x)计算梯度,反向传播时将解码器的梯度全部传给 z e ( x ) z_e(x) ze(x)

在这里插入图片描述

  • 嵌入空间的向量应该和其对应编码器输出尽可能接近,因此嵌入空间误差为嵌入和其对应的编码器输出的均方误差。为了让嵌入和编码器以不同的速度优化,作者再次使用了停止梯度算子,把嵌入的更新和编码器的更新分开计算。

AutoEncoder自动编码器、VAE变分自编码器、VQVAE量子化(离散化)的自编码器

前序问题:

  • VAE模型
  • VQVAE相对于VAE的改进

4、controlnet模型中的zero convolution模块

ControlNet的基本结构由一个对应的原先网络的神经网络模块和两个”零卷积“层组成。在训练过程中,会”锁死“原先网络的权重,只更新ControlNet基本结构中的网络”副本“和零卷积层的权重。这些可训练的网络”副本“将学会如何让模型按照新的控制条件来生成结果,而被”锁死“的网络会保留原先网络已经学会的所有知识。零卷积层是一些权重和偏置被初始化为0的1X1卷积层。在训练ControlNet之前,所有zero convolution模块的输出都为零,使得ControlNet完完全全就在原有Stable Diffusion底模型的能力上进行微调训练,不会产生大的能力偏差;只有在加入自己的数据训练之后,trainable copy以及zero convolution中的可学习参数值才会发生变化,使整个网络学习到用户指定的任务。

ControlNet核心基础知识

前序问题:

  • controlnet模型的创新点

5、DDIM模型

去噪扩散隐式模型(DDIM)是一类更有效的迭代隐式概率模型,具有与DDPM相同的训练程序,但是它不再限制扩散过程必须是一个马尔卡夫链,这使得DDIM可以采用更小的采样步数来加速生成过程,DDIM的另外是一个特点是从一个随机噪音生成样本的过程是一个确定的过程(中间没有加入随机噪音)。

前序问题:

  • ddpm
  • 为什么DDPM加噪声的幅度是不一致的?

6、BN、LN、IN、GN、SN的对比

在机器学习领域中,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。数据归一化一般有[0,1]归一化和正态分布归一化两种方法,在深度学习中大多用到正态分布归一化,但是由于归一化所作用在不同的集合上又大体包括BN、LN、IN、GN、SN等。不同的归一化方式的区别仅在于共享归一化参数的维度不同,具体来说:BN(批归一化)是逐通道进行的,batchsize较大时候效果才会比较理想;LN(层归一化)是逐样本进行的,即对每一个样本中多个通道进行归一化操作,是针对自然语言处理领域提出的,例如像RNN循环神经网络;IN (实例归一化)是逐通道,逐样本进行的,可以看作是将BN公式单独应用到每个输入特性(又称实例),常用于图像的风格化迁移;GN(组归一化)将channel方向分group,然后每个group内做归一化,这样与batchsize无关,不受其约束。可以说LN和IN就是GN的特列,比如G的大小为1就成了LN或者为G的大小为C就成了IN。GN适用于占用显存比较大的任务,例如图像分割。SN(自适配归一化)是将BN、LN、IN结合,赋予权重,让网络自己去学习归一化层应该使用什么方法。

归一化总结:BN、LN、IN、GN、SN

三、力扣刷题回顾-哈希表

上期涉及题目:

  • 面试题 02.07. 链表相交
  • 142.环形链表II

本期题目:

  • 242.有效的字母异位词
  • 349. 两个数组的交集
  • 第202题. 快乐数

242.有效的字母异位词:

  • 给定输入:两个字符串s和t
  • 要求输出:判断t是否为s的字母异位词
  • 补充条件:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

349. 两个数组的交集:

  • 给定输入:两个数组nums1和nums2
  • 要求输出:返回两个数组的交集
  • 注意事项:输出结果中的每个元素一定是唯一的,并且可以不考虑输出结果的顺序

第202题. 快乐数:

  • 给定输入:一个数n
  • 要求输出:返回该数是不是快乐数,如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
  • 补充条件:快乐数的定义:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1,那么这个数就是快乐数。

对比分析:
当遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。242.有效的字母异位词 是判断两个字符串中的元素出现次数,349. 两个数组的交集是判断两个数组中的元素出现次数,第202题. 快乐数是判断下一个数组在之前的计算过程中是否有过出现。三道题都需要对元素是否出现过进行判断,因此都可以采用哈希法进行求解。


242.有效的字母异位词

核心思路:定义一个数组叫做record用于遍历增加记录字符串s里字符出现的次数,然后遍历减少记录字符串t里字符出现的次数,最后判断record中的记录是否为0。

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        result=[0]*26
        for i in s:
            result[ord(i)-ord('a')]+=1
        for j in t:
            result[ord(j)-ord('a')]-=1
        for m in result:
            if m != 0:
                return False
        return True

349. 两个数组的交集

核心思路:定义一个数组用于遍历增加记录数组nums1里元素出现的次数,然后遍历数组nums2t里的元素是否在nums1里出现过,如果出现过则加入result数组返回。

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        hashtable=[0]*1000
        result=[]
        for i in nums1:
            hashtable[i]+=1
        for j in nums2:
            if hashtable[j] != 0 and j not in result:
                result.append(j)
        return result

核心思路:定义两个数组分别遍历记录数组nums1和数组nums2里元素出现的次数,然后判断同一元素是否在两个数组中均出现过。

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        record1=[0]*1000
        record2=[0]*1000
        result=[]
        for i in nums1:
            record1[i]+=1
        for j in nums2:
            record2[j]+=1
        for m in range(1000):
            if record1[m]*record2[m]:
                result.append(m)
        return result

第202题. 快乐数

核心思想:使用哈希法判断某一次求和的结果是否重复出现,如果重复了就是return false, 否则一直找到和为1为止。由于这道题是判断当前计算结果是否在之前出现过,所以定义的哈希表是用于记录之前的元素。

class Solution:
    def isHappy(self, n: int) -> bool:
        record=[]
        while n not in record:
            record.append(n)
            new_num=0
            n_str=str(n)
            for i in n_str:
                new_num+=int(i)**2
            if new_num==1:
                return True
            else:
                n=new_num
        return False

参考:
代码随想录算法训练营第五天|哈希表理论基础,242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

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

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

相关文章

浪潮信息AIStation与潞晨科技Colossal-AI 完成兼容性认证!

为进一步提升大模型开发效率,近年来,浪潮信息持续加强行业合作,携手业内头部,全面进攻大模型领域。日前,浪潮信息AIStation智能业务创新生产平台与潞晨科技Colossal-AI大模型开发工具完成兼容性互认证。后续&#xff0…

边缘计算盒子 | 什么是边缘计算盒子?选型要看哪些参数?

边缘计算(Edge Computing)是一种分布式计算范式,它将计算资源和数据存储位于离网络核心节点较近的地方,以降低延迟、提高传输速度和数据安全性。通常可以把边缘计算盒子(Edge Computing Box)理解成一种集成了边缘计算功能的硬件设备,通常部署…

SD 修复 Midjourney 有瑕疵照片

Midjourney V6 生成的照片在质感上有了一个巨大的提升。下面4张图就是 Midjourney V6 生成的。 如果仔细观察人物和老虎的面部,细节真的很丰富。 但仔细观察上面四张图的手部细节,就会发现至少有两只手是有问题的。这也是目前所有 AI 绘图工具面临的问题…

第十二章 微服务核心(二)

一、Spring Cloud 1. 服务注册中心 常见的服务注册中心组件如下 - Eureka - Consul - Zookeeper - Etcd - Nacos 2. Eureka SpringCloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理。 什么是服务治理:在传统的 RPC 远程调用框架中,管…

SQLite中的隔离(八)

返回:SQLite—系列文章目录 上一篇:SQLite版本3中的文件锁定和并发(七) 下一篇:SQLite—系列文章目录 数据库的“isolation”属性确定何时对 一个操作的数据库对其他并发操作可见。 数据库连接之间的隔离 如果使用两个不…

SpringBoot整合参数校验

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉🍎个人主页:Leo的博客💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot整合参数校验 📚个人知识库: Leo知识库,欢迎大家访问 目录 1.前言…

关于github提交失败的问题

问题描述 Username for https://github.com: LAL-Better Password for https://LAL-Bettergithub.com: remote: Support for password authentication was removed on August 13, 2021. remote: Please see https://docs.github.com/get-started/getting-started-with-git/abo…

QT资源添加调用

添加资源文件&#xff0c;新建资源文件夹&#xff0c;命名resource&#xff0c;然后点下一步&#xff0c;点完成 资源&#xff0c;右键add Prefix 添加现有文件 展示的label图片切换 QLabel *led_show; #include "mainwindow.h" #include<QLabel> #include&l…

Python应用JSON Web Tokens库之pyjwt使用详解

概要 JSON Web Tokens(JWT)是一种用于安全传输信息的开放标准(RFC 7519),它可以在网络应用之间传递声明。PyJWT是Python中用于创建、解析和验证JWT的库,它提供了丰富的功能和灵活性,能够轻松地在Python应用程序中实现JWT的各种功能。本文将深入探讨PyJWT库的各个方面,…

再见 mysql_upgrade

在数据库管理的世界里&#xff0c;随着技术的不断进步和业务的不断发展&#xff0c;数据库的版本升级成为了一个不可避免的过程。 MySQL 作为业界领先的开源关系型数据库管理系统&#xff0c;其版本迭代与功能优化同样不容忽视。 而在这个过程中&#xff0c;升级工具就显得尤为…

若依微服务nacos配置在哪里?

今天拿ruoyi-cloud项目拉下来看了下&#xff0c;发现nacos配置文件比较难找&#xff0c;这里说一下在哪里。 在项目sql脚本ry_config_20231204.sql里面&#xff0c;这个脚本执行会创建一个数据库叫ry-config。 安装好nacos以后&#xff0c;在nacos的配置文件application.proper…

ESP32-S3 集成了2.4GHz、Wi-Fi和BLE5.0的MCU芯片

智能家居无处不在&#xff0c;生活中一个不起眼的插座都有大讲究。那与全屋智能互相连通的WiFi智能插座内部到底是什么样呢&#xff1f; 一般的WiFi智能插座&#xff0c;由一个物理按键模块&#xff0c;负责物理上直接控制插座开关、重新配网等功能&#xff1b;WiFi模块&#x…

计数器的原理和应用

一、计数器的原理和应用 要求&#xff1a;每计数三次&#xff0c;数码管值加一 #include<reg51.h> unsigned char s[]{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; unsigned char num0; void initcounter() {TMOD0x06;//0000 0110TH0256-3;TL0256-3;ET01;EA1;T…

OSX-02-Mac OS应用开发系列课程大纲和章节内容设计

本节笔者会详细介绍下本系统专题的大纲&#xff0c;以及每个专题章节的组织结构。这样读者会有一个全局的概念。 在开始前还是在再介绍一下下面这个框架图&#xff0c;因为比较重要&#xff0c;在这里再冗余介绍一下。开发Apple公司相关产品的软件时&#xff0c;主要有两个框架…

327京东一面

1.项目相关 2.手撕SQL 两道 3.JMeter性能测试 首先&#xff0c;进行基准测试&#xff1a; 单用户测试&#xff08;单用户循环多次得到的数据&#xff09;&#xff1b;为多用户并发执行提供参考 其次&#xff0c;进行负载测试&#xff1a; 通过逐步增加系统负载&#xff0…

爬虫逆向实战(38)-某空气质量平台(反调试,AES,DES,MD5)

一、数据接口分析 主页地址&#xff1a;某空气质量平台 1、抓包 (1) 反调试 该网站对鼠标右击以及F12进行了监听并拦截 虽然该网站无法打开Chrome控制台&#xff0c;导致我们无法抓包&#xff0c;但是道高一尺魔高一丈。既然我们无法在打开该网站的时候打开Chrome控制台&…

括号生成(回溯+剪枝)

22. 括号生成 - 力扣&#xff08;LeetCode&#xff09; 题目描述 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 样例输入 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["((()))&q…

速通汇编(二)汇编mov、addsub指令

一&#xff0c;mov指令 mov指令的全称是move&#xff0c;从字面上去理解&#xff0c;作用是移动&#xff08;比较确切的说是复制&#xff09;数据&#xff0c;mov指令可以有以下几种形式 无论哪种形式&#xff0c;都是把右边的值移动到左边 mov 寄存器&#xff0c;数据&#…

竞赛 python+大数据校园卡数据分析

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于yolov5的深度学习车牌识别系统实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;4分工作量&#xff1a;4分创新点&#xff1a;3分 该项目较为新颖&am…

2024年 前端JavaScript 进阶 第1天 笔记

1.1-作用域和作用域链 1.2-JS垃圾回收机制以及算法 1.3-JS闭包 JS进阶-day1-154-JS闭包_哔哩哔哩_bilibili 1.4-变量和函数提升 1.5-函数剩余参数和展开运算符 运用场景&#xff1a; 1.6-ES6箭头函数的使用 1.7-数组解构 1.8-对象解构 最简写法&#xff1a; 1.9-forEach遍历数…