Conditional GAN
Conditional GAN介绍
传统GAN的局限性是:能生成真实的图片,但是该图片是随机的,不能生成特定的图片。比如生成猫的图片,我们并不能指定说生成一只橘黄色的猫,或者生成一只黑色的猫。
为了解决这个问题,Conditional GAN应运而生。Conditional GAN也是一种生成对抗网络,它可以生成特定的图片。它的输入是一个噪声向量和一个条件向量,输出是一个符合条件向量的图片。条件向量可以是任何东西,比如一个标签,一个类别,一个描述等等。
Conditional GAN的网络架构
生成器
生成器的输入是一个噪声向量和一个条件向量,输出是一个符合条件向量的图片。生成器的网络架构如下:
将条件向量进过一个编码层转换为神经网络可以识别的向量,然后将噪声向量和条件向量拼接在一起,输入到生成器的神经网络中,生成一张图片。
判别器
判别器的输入是一张图片和一个条件向量,输出是一个概率值,表示这张图片是真实的概率。判别器的网络架构如下:
判别器除了判断图片是真实的还是生成的,还要判断这张图片符合条件向量,如果图片很真实但不符合条件向量,那么判别器依旧会给出一个很低的概率值。
判别 ...
共享GPU内存与专用GPU内存
独立显卡:共享GPU内存与专用GPU内存
概念
所谓专用GPU内存,就是专门给GPU使用的内存,该部分内存存在于显卡当中,也叫做VRAM(Video Random Access Memory)。
所谓共享GPU内存,就是CPU和GPU都可以共同使用的内存(GPU的使用优先级最高),该部分内存从系统内存(RAM)中划分出来。在Windows系统中,共享GPU内存大小为系统内存的一半,例如系统内存为16G,那么共享GPU内存为8G。
联系
当专用GPU内存不足时,会从共享GPU内存中分配内存给GPU使用。由于专用GPU内存的读写速度比共享GPU内存的读写速度快,因此,共享GPU内存并不能提供和专用GPU内存一样的性能。
此外,专用GPU内存是显卡的一部分,并与GPU核心紧密相关,而物理内存RAM需要使用PCIe连接将数据发送到GPU核心,这进一步影响了共享GPU内存的性能。
对于一些游戏来说,如果专用GPU内存不足,会自动从共享GPU内存中分配内存给GPU使用。但是一些深度学习的框架,如TensorFlow、PyTorch等,并不会自动从共享GPU内存中分配内存给GPU使用,所以可能会看 ...
Leetcode算法
算法刷题
GAN论文精读
GAN
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
1$ hexo new "My New Post"
More info: Writing
Run server
1$ hexo server
More info: Server
Generate static files
1$ hexo generate
More info: Generating
Deploy to remote sites
1$ hexo deploy
More info: Deployment
机器学习
机器学习
AI for Everyone
AI入门及介绍
CLIP
CLIP
模型架构分为两部分,图像编码器和文本编码器,图像编码器可以是比如resnet50/ViT,然后文本编码器可以是transformer。
训练数据是网络社交媒体上搜集的图像文本对。在训练阶段,对于一个batch的数据,首先通过文本编码器和图像编码器,得到文本和图像的特征,接着将所有的文本和图像特征分别计算内积,就能得到一个矩阵,然后从图像的角度看,行方向就是一个分类器,从文本角度看,列方向也是一个分类器。
而由于我们已经知道一个batch中的文本和图像的匹配关系,所以目标函数就是最大化同一对图像和文本特征的内积,也就是矩阵对角线上的元素,而最小化与不相关特征的内积。这也就是对比学习的思想,最大化同类之间的相似度,最小化不同类之间的相似度。正样本是同一对图像和文本的特征,负样本是不同的图像和文本的特征。
对于这样的无监督的预训练方式,比如对比学习,是需要大量的数据的,所以OpenAI专门收集了4亿个图片和文本的配对,而且该数据清理的非常好,质量特别高。
Zero-shot
OpenAI的CLIP模型还是zero-shot的,也就是说,它可以在没有训练的情况下,直接在新的任务上 ...
GPT
GPT
无论下游任务发生什么变化,Transformer层是不会变的,只需要改变输入输出层即可。GPT就是一个预训练模型,之后根据下游任务的不同进行fine-tuning即可
GPT-2
GPT-2是GPT的升级版,模型更大,参数更多(15亿),效果更好,主要是讲解zero-shot learning。
GPT-3
meta learning:训练了一个很大的模型,泛化性很不错。
in-context learning:在上下文中学习,即使有训练样本,也不会更新权重。
Codex:GPT-3的应用
Megatron-LM:将模型使用的张量拆开,分别在不同的GPU上进行计算,然后再相加合并。达到模型并行的效果。用于transformer模型的训练。
Zero:数据并行实现大模型的训练。
DALL·E 2:文本经过clip变成文本特征,文本特征进过prior变成图片特征,图片特征进过decoder变成图片。zero-shot
ViLT
Chain of Thought:
写上中间推理过程,然后再问模型答案。
let’s think step by step.
Instruct GPT: ...
Swin Transformer
Swin Transformer
Swin Transformer通过在一系列视觉任务上的强大表现,进一步证明了Transformer模型在计算机视觉领域的有效性。
Swim Transformer的核心思想是提出了hierarchical transformer以及Shifted Windows。
Swin Transformer不同于ViT始终在全局上计算注意力,Swin Transformer的自注意力计算是以窗口为单位计算的,这相当于引入了聚部聚合的信息,和CNN卷积过程类似,但是步长和卷积核的大小一样,这样就使得每个窗口不会重合,每个窗口得到一个值,代表该窗口的特征,然后经过patch merging的操作,将窗口进行合并,在继续对该合并后的窗口进行自注意力计算。这样使得Swin Transformer能够处理大尺度的图像,同时保持较低的计算复杂度。Swin Transformer的结构如下图所示:
Swin Transformer是一个通用的网络架构,不仅能做图像分类,还能做一些密集预测性任务。
Shifted Windows
首先在Layer1计算自注意力,然后使用S ...