许嵩

基于GAN的特征抽取 Feature Extraction by GAN

风流意气都作罢 提交于 2020-02-29 07:36:00
InfoGAN 期望的是 input 的每一个维度都能表示输出数据的某种特征。但实际改变输入的一个特定维度取值,很难发现输出数据随之改变的规律。 InfoGAN 就是想解决这个问题。在 GAN 结构以外,把输入 z 分成两个部分 c 和 z' ,然后根据 generated data x 来预测给到 generator 的 c 是什么,这里的ae 做的事情是 code-x-code。同时还需要 discriminator 来配合,x 还必须要足够像目标数据(要不 generator 直接把 c 复制过来就最容易让 classifer 预测对)。 为了要让 classifer 可以成功从 x 中预测原来的 c(能反推回去),那 generator 就要让 c 的每一个维度都对 output 有一个明确的影响。就让 z' 去表示那些无法解释的特征。 VAE-GAN 可以看作用 GAN 来强化 VAE(让VAE生成的数据更加realistic),也可以看作用 VAE 来强化 GAN(原本的 GAN 是随机从 z 到 x,现在训练的时候 generator 还要尽可能好地重构 z 原本的 x,从一开始就知道一个 z 它对应的 x 应该是什么样,所以 VAE-GAN 训练会稳定一些) 训练流程。其中,原本的真实数据 x 、VAE 从 x 经过 encoder 得到 z ~ 再经过

VAE代码学习

こ雲淡風輕ζ 提交于 2020-02-10 09:45:10
1.pytorch中给出的例子 https://github.com/pytorch/examples/blob/master/vae/main.py 实现过程非常简单: class VAE(nn.Module): def __init__(self): super(VAE, self).__init__() self.fc1 = nn.Linear(784, 400)#第一层,推断 self.fc21 = nn.Linear(400, 20)#对应均值 self.fc22 = nn.Linear(400, 20)#对应方差 self.fc3 = nn.Linear(20, 400)#生成层1 self.fc4 = nn.Linear(400, 784)#生成层2 def encode(self, x): h1 = F.relu(self.fc1(x)) return self.fc21(h1), self.fc22(h1) def reparameterize(self, mu, logvar): std = torch.exp(0.5*logvar) eps = torch.randn_like(std) return mu + eps*std def decode(self, z): h3 = F.relu(self.fc3(z)) return torch.sigmoid

Python实训Day02-Python基础以及和C语言的比较

假装没事ソ 提交于 2020-02-05 03:39:48
Python与C的区别 特点比较 主要区别 特点比较 语言 主流软件 语法特点 C 微软的VS,CodeBlocks 结构化语言,利于 面向过程 编程,运行程序之前需要先编译 Python Pycharm,Jupyter 脚本语言, 面向对象 ,属于解释型语言(即不需要编译,在运行时转换成机器语言) 近年来由于Python语法的简洁,备受程序员青睐,而C语言也由于其简洁和结构完善,被广泛应用,值得一提的是,Python就是用C开发出来的。 主要区别 语法识别: 1)作用域:C语言中通过 { } 来划分作用域,而Python靠缩进 2)赋值语句:C语言中语句末尾要加 ; ,而Python不加,通过缩进判断语句 3)判断语句:C语言用括号括起条件,Python在后面加 : 除法符号: C语言中除法符号 / ,而Python中用 // 表示整数除法, / 表示浮点数除法 变量声明: C语言中需要提前声明变量,而Python由于其动态性不需要声明 Python中有一些C中没有的概念 列表 列表用 [ ] 标识,是 python 最通用的 复合数据类型 。 列表中可以用 [头下标:尾下标] 截取列表对应部分。从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾,如 ls[1:3] 截取的是第2到3个元素,且 不包括 第4个元素ls[3]. ls = [

李宏毅ml--deep generative model

谁都会走 提交于 2020-02-02 02:05:20
一篇很好的关于生成模型的科普文 机器如果可以画出一只猫的时候,那么机器对于猫的概念就会有很大的不同。以下是三个最主要的方法。 pixelRNN 我们现在要求让机器画出一张图出来,假设现在让机器画出一个3x3的图,有9个像素点。即让机器画9个像素点就完成了任务,一个像素点就用三维的vector来表示,即rgb值。现在随机给机器一个红色的像素点,然后learn一个model,其输入是已经存在的像素点,输出是下一个像素点。(RNN是可以处理任意长度的input),pixelRNN是不需要任何标签的。 下面是slide所示的论文机器所画出的图片 waveNet:做语音合成 一些tip关于生成宝可梦: 如果你用上面所说的三维vector代表rgb做为像素点的输入,得到的图会偏灰,因为较为清晰的图片是有某个通道值较大,某个较小形成的,但是我们输入会做normalization,已经经过sigmoid function,最后值都会落在0.5左右,无法形成较大的偏差,所以我们用不同颜色作为one-hot encoding的不同维度,以此作为输入。然后会有很多相似的颜色,先做cluster,即最后有167个颜色。 像这种task是很难被评估的,因为你也不能说机器评估的不对,因为这是一种创作 VAE variation auto encoder 把decoder部分拿出来,然后随机生成一个向量

浅谈变分自编码器(Variational Auto Encoder)

风流意气都作罢 提交于 2020-01-01 07:29:24
作者:SnowYuan 1.VAE简介 变分自编码器(Variational Autoencoder,VAE)是生成模型(Generative Model)的一种,另一种常见的生成模型是生成式对抗网络(Generative Adversarial Network,GAN),这里我们介绍下VAE的原理,并用Keras实现。 变分自动编码器很酷,他们让我们对大的数据集建模,设计出复杂的生成模型的数据,它们可以生成虚构的名人面孔和高分辨率数字艺术品的图像。这些模型在图像生成和增强学习方面也产生了当前最先进的机器学习结果。下图展示的是一个用VAE模型生成的虚构的名人面孔。 图1 一个变分的自动编码器生成的虚构的名人面孔 2. VAE原理 从概率的角度,我们假设任何数据集都采样自某个分布P(X|z),z 是隐藏的变量,代表了某种内部特征,比如手写数字的图片 x,z 可以表示字体的大小,书写风格,加粗、斜体 等设定,它符合某个先验分布,在给定具体隐藏变量 z 的情况下,我们可以从学到了 分布中采样一系列的生成样本,这些样本都具有 z 所表示的共性。 在P(z)已知(可以假定它符合已知的分布,比如N(0,1)的条件下,我们的目的就是希望能学会生成概率模型P(X|Z)。这里我们可以采用最大似然估计(Maximum likelihood estimation):一个好的模型

ON the study of generative adversarial network for corss-lingual voice conversion

落花浮王杯 提交于 2019-12-18 10:08:08
abstract 用Variational Autoencoding Wasserstein GAN (VAW-GAN) and cycle-consistent adversarial network (CycleGAN)实现跨语言的vc,保存了src的文本和tar的身份特征。不依赖语言的对齐,也不需要外部的ASR等。对两种语言的数据量要求都很少,而且性能和单语言的差不多。 introduction GAN网络在图像的风格迁移上有成功的应用。VAW-GAN【28】,CycleGAN【29-31】, StarGAN【32】在vc上也有不错的效果。 之前在cross-lingual任务上的方法有codebook mapping 和 GMM,但是他们需要同一个人同时录制两种语言,这点在实际中很难做到。或者是找两种语言系统的音素或者声学聚类,从而摆脱对平行数据的依赖。 PPGs构建了source和target speaker之间的桥梁,但是它依赖于ASR系统的性能。还可以通过unit selection和迭代帧对齐的方法找到source和target frame pairs的对齐,但是因为不精确的对齐,性能也还有提升的空间。  VAW-GAN用隐向量解释观察结果,而不是学到paired映射函数。CycleGAN用对抗loss和周期一致性loss同时学到前向和反向映射

变分自动编码器(VAE)

做~自己de王妃 提交于 2019-12-18 06:12:33
VAE(Variational Autoencoder)的原理 Kingma, Diederik P., and Max Welling. "Auto-encoding variational bayes." arXiv preprint arXiv:1312.6114 (2013). 论文的理论推导见:https://zhuanlan.zhihu.com/p/25401928 中文翻译为:变分自动编码器 转自:http://kvfrans.com/variational-autoencoders-explained/ 下面是VAE的直观解释,不需要太多的数学知识。 什么是变分自动编码器? 为了理解VAE,我们首先从最简单的网络说起,然后再一步一步添加额外的部分。 一个描述神经网络的常见方法是近似一些我们想建模的函数。然而神经网络也可以被看做是携带信息的数据结构。 假如我们有一个带有解卷积层的网络,我们设置输入为值全为1的向量,输出为一张图像。然后,我们可以训练这个网络去减小重构图像和原始图像的平均平方误差。那么训练完后,这个图像的信息就被保留在了网络的参数中。 现在,我们尝试使用更多的图片。这次我们用one-hot向量而不是全1向量。我们用[1, 0, 0, 0]代表猫,用[0, 1, 0, 0]代表狗。虽然这要没什么问题,但是我们最多只能储存4张图片。当然

第十三讲--课时30--变分自编码器

扶醉桌前 提交于 2019-12-06 18:43:15
variational autoencoders(VAE) VAE的概率分布引入了变量z,无法直接优化,我们要取其下限再做优化。 ---------------------------------------------------------------------------------------------------------------------- 自动编码机的Encoder和Decoder部分可以是单层,也可以是深度神经网络 ----------------------------------------------------------------------------------------------------------------------- VAE 先验概率P(z) 可以认为是高斯分布 P(x|z(i)) 需要神经网络拟合 极大似然估计行不通,P theta(x) 算不了;后验概率P theta (z|x)也算不了 用一个网络去逼近 z|x 的分布 训练完成之后,只使用Decoder部分 VAE生成的图片比较模糊 来源: CSDN 作者: i_chase 链接: https://blog.csdn.net/qq_39638957/article/details/80352597

12.6日学习记录

你说的曾经没有我的故事 提交于 2019-12-06 16:43:00
1.在DE时如果有不同的批次cell,如何办的? 对类型A每个cell类型做VAE,并且包括进批次向量。对每个类型中的cell的批次做不同的处理, for i in batchid: ... px_scales.append(self.get_harmonized_scale(i)) 对每个batch都做单独处理。 #但是还是觉得这个过程好复杂啊,就是个黑盒啊,你也不可能写出每个的梯度吧,我觉得我应该运行模型,然后查看梯度变化(待做)。 #害怕跑代码,感觉自己跑不起来。做害怕的事情,然后你发现不过如此。 2. 需要再考虑一下VAE怎么讲会更好? 来源: https://www.cnblogs.com/BlueBlueSea/p/11994942.html