前面介绍了生成对抗网络,今天从最简单的对抗网络代码开始看起来,通过四个开源生成模型的代码,一步步看到较复杂的代码。
gan学习到的特征可参考学习语义特征理解世界-InfoGAN代码复现,更多效果后续推出。
一: http://blog.aylien.com/introduction-generative-adversarial-networks-code-tensorflow/ 最简单的对抗生成网络介绍
二 将判断模型和生成模型网络都改造为多层后代码如下:
https://github.com/ikostrikov/TensorFlow-VAE-GAN-DRAW/blob/master/main-gan.py 代码如下:
定义判别模型:
计算判别模型的判别结果
定义生成模型:
计算生成模型的判别结果
运算逻辑:D1是判别真实图片的结果
D2 是判别生成图片的结果
跟进判别结果计算loss,及定义优化方法
最后两行定义判别模型和生成模型的优化方法
sess.run 运行优化过程
三 到了 https://github.com/carpedm20/DCGAN-tensorflow/blob/master/model.py DCGAN代码又略微复杂了
判别结果定义loss
定义loss后组建优化器
训练优化
四: infogan
这次倒着看,训练的时候一样是sess.run trainer
trainer的定义仍然类似优化器相关loss的参数定义
loss最初定义仍然是一样的。
但是loss的进一步计算已经有些复杂了