赞
踩
交叉熵损失函数用于分类问题,它将预测值与真实值之间的差异对数化,然后取平均值。交叉熵能够衡量同一个随机变量中两个不同概率分布的差异程度,在机器学习中表示真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。交叉熵在分类问题中常常与softmax是标配,softmax将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。
SAM模型中的mask解码器主要用于将图像嵌入、提示嵌入和输出标记映射到掩码。它采用了改进的Transformer解码器,接一个动态掩码预测头。修改后的解码器块在两个方向(提示到图像和反方向)使用提示自注意力和交叉注意力来更新所有Embedding。两个方向的交叉注意力层之间有一个前馈mlp网络,cross attention的结果通过残差方式相加并norm。在运行两个块后,将transform返回的mask token与上采样后的图像embedding点积得到最终的分割结果,iou token经过mlp后得到分割结果的得分。
SAM:segment anything model——一个通用的图像分割基础模型
前序问题:SAM模型
VQ-VAE的优化目标由两部分组成:重建误差和嵌入空间误差:
AutoEncoder自动编码器、VAE变分自编码器、VQVAE量子化(离散化)的自编码器
前序问题:
ControlNet的基本结构由一个对应的原先网络的神经网络模块和两个”零卷积“层组成。在训练过程中,会”锁死“原先网络的权重,只更新ControlNet基本结构中的网络”副本“和零卷积层的权重。这些可训练的网络”副本“将学会如何让模型按照新的控制条件来生成结果,而被”锁死“的网络会保留原先网络已经学会的所有知识。零卷积层是一些权重和偏置被初始化为0的1X1卷积层。在训练ControlNet之前,所有zero convolution模块的输出都为零,使得ControlNet完完全全就在原有Stable Diffusion底模型的能力上进行微调训练,不会产生大的能力偏差;只有在加入自己的数据训练之后,trainable copy以及zero convolution中的可学习参数值才会发生变化,使整个网络学习到用户指定的任务。
前序问题:
去噪扩散隐式模型(DDIM)是一类更有效的迭代隐式概率模型,具有与DDPM相同的训练程序,但是它不再限制扩散过程必须是一个马尔卡夫链,这使得DDIM可以采用更小的采样步数来加速生成过程,DDIM的另外是一个特点是从一个随机噪音生成样本的过程是一个确定的过程(中间没有加入随机噪音)。
前序问题:
在机器学习领域中,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。数据归一化一般有[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结合,赋予权重,让网络自己去学习归一化层应该使用什么方法。
上期涉及题目:
本期题目:
242.有效的字母异位词:
349. 两个数组的交集:
第202题. 快乐数:
对比分析:
当遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。242.有效的字母异位词 是判断两个字符串中的元素出现次数,349. 两个数组的交集是判断两个数组中的元素出现次数,第202题. 快乐数是判断下一个数组在之前的计算过程中是否有过出现。三道题都需要对元素是否出现过进行判断,因此都可以采用哈希法进行求解。
核心思路:定义一个数组叫做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
核心思路:定义一个数组用于遍历增加记录数组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
核心思想:使用哈希法判断某一次求和的结果是否重复出现,如果重复了就是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. 两数之和
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。