ACGAN与CGAN的区别

原创文章,转载请注明: 转载自慢慢的回味

本文链接地址: ACGAN与CGAN的区别

ACGAN与CGAN的区别如下


1 与CGAN一样的是,在生成网络的输入都混入label;
2 不一样的是在鉴别网络输入时,ACGAN不再混入label,而是在鉴别网络的输出时,把label作为target进行反馈来提交给鉴别网络的学习能力。
3 另一个不一样的是,生成网络和鉴别网络的网络层不再是CGAN的全连接,而是ACGAN的深层卷积网络(这是在DCGAN开始引入的改变),卷积能够更好的提取图片的特征值,所有ACGAN生成的图片边缘更具有连续性,感觉更真实。

继续阅读“ACGAN与CGAN的区别”本作品采用知识共享署名 4.0 国际许可协议进行许可。

CGAN与GAN的区别

原创文章,转载请注明: 转载自慢慢的回味

本文链接地址: CGAN与GAN的区别

CGAN与GAN的区别如下


GAN视频讲解参考
CGAN视频讲解参考
在生成网络的输入和鉴别网络的输入都混入label,这样生成网络就会学会根据label生成含有label特征的图片;鉴别网络就能学会根据label快速学会分类图片。
如下生成网络model不直接传入noise,而是传入noise和label对于元素相乘的结果。
label[1,]->Embedding[10,100]->label_embedding[1,100]->Flatten[100,] X Noise[100,] = model_input[100,]

        noise = Input(shape=(self.latent_dim,))
        label = Input(shape=(1,), dtype='int32')
        label_embedding = Flatten()(Embedding(self.num_classes, self.latent_dim)(label))
 
        model_input = multiply([noise, label_embedding])
        img = model(model_input)

继续阅读“CGAN与GAN的区别”本作品采用知识共享署名 4.0 国际许可协议进行许可。

GAN生成对抗网络的Keras实现

原创文章,转载请注明: 转载自慢慢的回味

本文链接地址: GAN生成对抗网络的Keras实现

网络组成

GAN生成对抗网络包括2部分:
生成网络部分:它是一个多层神经网络结构,把一个高斯噪声通过网络生成一个图片数据,像是一个回归问题。
鉴别网络部分:它也是一个多层神经网络结构,把一个图片数据通过网络输出1或0,分辨出是不是真实图片,像是一个分类问题。
对抗的含义在于,生成网络总是想生成一个和真的一样的图片,鉴别网络部分总是想区分出谁是真实图片,谁是生成网络生成的。

理论推导网上很多,可以参考比如:GAN论文阅读——原始GAN(基本概念及理论推导)

程序分析

生成网络模型:
输入1X100的高斯分布向量 ->
256输出的全连接 -> 用ReLU进行分类 -> 正规化 ->
512输出的全连接 -> 用ReLU进行分类 -> 正规化 ->
1024输出的全连接 -> 用ReLU进行分类 -> 正规化 ->
图像大小(28X28X1)输出的全连接 -> 用tanh进行激活输出 -> 生成28X28X1的图片
返回的模型为:输入噪声,输出图片
继续阅读“GAN生成对抗网络的Keras实现”本作品采用知识共享署名 4.0 国际许可协议进行许可。

Tensorflow LSTM原理

原创文章,转载请注明: 转载自慢慢的回味

本文链接地址: Tensorflow LSTM原理

LSTM是RNN的一种cell实现。那么什么是RNN呢?RNN是一种特殊的神经网络结构, 它是根据“人的认知是基于过往的经验和记忆”这一观点而提出的,它使网络对前面的内容的一种“记忆”功能。隐藏层中,一个序列当前的输出与前面的输出也有关,具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出,所有前面的结果可以影响后面的输出。所以它广泛运用于文本生成,机器翻译,机器写小说,语音识别等。
RNN整个网络架构如下所示:

可以看李弘毅的视频:25.循环神经网络RNN(I)_高清了解更多的RNN原理

LSTM原理

本文只说明LSTM的原理和一个基于Tensorflow的简单测试,测试代码以下图为案例:

如下图所示,LSTM单元接受3个输入:当前输入x_t,上一Cell状态c_t-1,上一次输出h_t-1。
1 上一次输出h_t-1和当前输入x_t按y轴加在一起,和权值矩阵W相乘,然后按y轴均分成4组i,j(z_2),f,o。
2 上一次状态C_t-1和遗忘开关f_t相乘,完成遗忘的处理;和受输入控制的i_t相加(i_t*j_t)完成状态的更新(c_t=C_t-1*f_t+i_t*j_t)。
3 更新后的状态C_t和输出开关o_t相乘,输出h_t。

继续阅读“Tensorflow LSTM原理”本作品采用知识共享署名 4.0 国际许可协议进行许可。

Tensorflow 图像CNN分类解析

原创文章,转载请注明: 转载自慢慢的回味

本文链接地址: Tensorflow 图像CNN分类解析

自从Yann Lecun最早将CNN用于手写数字识别后,卷积神经网络在多个方向持续火爆:如语音识别、人脸识别、通用物体识别等。与普通神经网络的最大区别为:卷积神经网络包含了由卷积层和池化层构成的特征抽取器。卷积层由卷积核做卷积运算替代全连接神经网络的矩阵计算。卷积核表示一组共享的权值,位于不同地方的权值可以模拟人眼对图像识别的局部感受野:一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。共享的权值还可以大大降低权值参数量。所以卷积核的局部感受野可以解决全连接计算将图像展开为向量丢失的空间信息;共享权值减少的参数可以提高训练效率和避免网络过拟合。

CNN原理

下面的视频也详细介绍了CNN的原理:
10.卷积神经网络(CNN)_高清

测试程序

继续阅读“Tensorflow 图像CNN分类解析”本作品采用知识共享署名 4.0 国际许可协议进行许可。