用Tensorflow2.0实现的多个GAN模型,有代码

2019-10-11     AI公园
作者:Tim Sainburg
编译:ronghuaiyang

导读

这是一个在Tensorflow 2中实现许多生成模型的小项目。层和优化器使用Keras。这些模型是为两个数据集实现的:fashion MNIST和NSYNTH。

代码仓库:https://github.com/timsainb/tensorflow2-generative-models/#generative-models-in-tensorflow-2

这是一个在Tensorflow 2中实现许多生成模型的小项目。层和优化器使用Keras。这些模型是为两个数据集实现的:fashion MNIST和NSYNTH。编写网络的目标是在保持可读性的同时尽可能简单和一致。因为每个网络都包含在notebook中,所以应该可以很容易地在colab会话中运行它们。

包括的模型有:

Autoencoder (AE)

一个简单的编码器网络

Variational Autoencoder (VAE)

原始的可变自动编码器网络,使用了tensorflow_probability。

Generative Adversarial Network (GAN)

GANs是神经网络的一种形式,其中两个子网络(编码器和解码器)被使用目的相反的损失函数进行训练:一个编码器被训练用于生成与真实数据不可分辨的数据,另一个解码器被训练用于区分数据和生成的数据。

Wasserstein GAN with Gradient Penalty (WGAN-GP)

WGAN-GP是在原有损失函数的基础上改进的一种GAN,用于提高训练的稳定性。

VAE-GAN

VAE-GAN结合VAE和GAN对生成器中潜在的数据表示形式进行自动编码,以改进自动编码器中使用的基于每个像素的误差函数。

Generative adversarial interpolative autoencoder (GAIA)

GAIA是一种通过对真实数据的潜在空间投影中的插值进行反向训练来学习凸潜表示的自编码器。

其他的内容:

Seq2Seq Autoencoder (without attention)

Seq2Seq模型使用递归神经网络cell(如LSTMs)来更好地捕捉数据中的序列信息。该实现使用卷积层作为LSTM单元的输入,并使用一个双向LSTM层。

Spectrogramming, Mel Scaling, MFCCs, and Inversion in Tensorflow

Tensorflow有一个信号处理包,它允许我们将波形生成声谱图作为数据集迭代器的一部分,而不是预先生成另外一个声谱图数据集。这个notebook 可以作为如何做到这一点的参考。声谱图反演采用Griffin-Lim算法。

Iterator for NSynth

NSYNTH数据集是一组以波形形式保存的数千个音符。为了将这些作为声谱图输入Seq2Seq模型,我编写了一个小的dataset类,它在tensorflow中转换为声谱图(使用声谱图notebook中的代码)。

英文原文:https://github.com/timsainb/tensorflow2-generative-models/#generative-models-in-tensorflow-2

请长按或扫描二维码关注本公众号

文章来源: https://twgreatdaily.com/zh-hans/RHRfvm0BMH2_cNUgnUtI.html