AI ninja project [day 23] 生成对抗网路 Generative Adversarial Network(GAN)

相信大家都有听过GAN的名子,
原理就好像同时有一名创作家及一名监定员,
创作家进行创造,而监定员进行监定,
两者有各自跟原始作品的损失函数,
利用损失资讯的大小,以优化器来修正创作家创作的方向以及监定员监定的依据。

参考攻略:
https://www.tensorflow.org/tutorials/generative/dcgan?hl=zh_tw

https://ithelp.ithome.com.tw/upload/images/20210923/20122678vDXE3pIIyj.png

colab:
https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/generative/dcgan.ipynb?hl=zh_tw

安装及载入:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678sXSbHGdnRS.png

https://ithelp.ithome.com.tw/upload/images/20210923/20122678INuS6CXqmG.png

imageio套件是为了让训练过程以动画的方式来呈现。

载入手写数字资料集:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678z5lbgC0iP1.png

将图片转成28×28像素,每一个像素正规化成-1到1之间的数值:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678JP8eYnH0Ok.png

调整batch大小,并且改变训练资料的排序:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678mXX5wr3SmS.png

建立生成器:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678ajUbNHbKWC.png

输入为100维的矩阵,我们可以先查看未训练的生成结果:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678D2M2GQxMnl.png

搭建判别器:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678lksuEhYmh5.png

输出结果为正数代表认定为真品,负数认定生成作品为假的,
不过目前还没训练,所以结果不具有意义:
https://ithelp.ithome.com.tw/upload/images/20210923/201226784ct6rbXEyn.png

创立生成器及判别器各自的损失函数:
https://ithelp.ithome.com.tw/upload/images/20210923/201226782LH3vwhZuf.png

https://ithelp.ithome.com.tw/upload/images/20210923/201226784Nt6hcBFag.png

https://ithelp.ithome.com.tw/upload/images/20210923/20122678oVKgPKIcs9.png

设定各自的优化器:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678qpP87bEXdQ.png

载入过去别人训练好的储存点,降低训练时间,
自己重新训练也可以:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678ROj7XItcVq.png

设定初始生成画作的随机数值,并且一次生成16张图片:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678Rx1xpCqTHu.png

设定生成对抗的过程,优化器依据生成器及判别器各自的损失资讯来修正生成及判别方向:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678AykYc4BGvq.png

搭建function,依据epochs来进行生成对抗的训练:
https://ithelp.ithome.com.tw/upload/images/20210923/2012267806ZoY3UU6S.png

将每一个epochs的训练结果保存起来:
https://ithelp.ithome.com.tw/upload/images/20210923/2012267867zw5sRWLe.png

开始训练:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678zXIxQVg5dU.png

那可以将训练过程以动画的方式来呈现:
https://ithelp.ithome.com.tw/upload/images/20210923/201226788rOkVko3Df.png

假设哪一天需要依靠贩卖艺术品维生,
但是又没有艺术天份,
这个时候就可以请GAN来帮我们创作艺术作品了。

下面的攻略有对浪漫时期的作品进行创作:
https://www.kaggle.com/amyjang/creating-romantic-period-art-w-tensorflow-dcgan

该资料集还有表现主义及立体主义的作品可以参考。

那这个攻略是对於彩色图片CIFAR10资料集进行创作:
https://machinelearningmastery.com/how-to-develop-a-generative-adversarial-network-for-a-cifar-10-small-object-photographs-from-scratch/


<<:  Day-22 创新才是正义!带领任天堂重返荣耀的 Wii

>>:  # Day8--物件兄弟党的小弟们:属性与方法

[鱼刺-Python-1] asyncio 非同步呼叫POST Method方法

Python非同步需要使用到asyncio,简单测试如下 import asyncio import...

[Day 13] 实作 API Authentication

Ktor Authentication Plugin 因为 Ktor 的开发风格是 DSL,不依赖 ...

Day13.进入 ARM 世界: ARM Instruction Sets

学组语的目的,不见得是为了改善效能,而是: 判断 optimizing compiler 产生的机...

Chart

这边是 Chart.js 的小练习,主要就是模拟股票上上下下的线图。 安装 npm install ...

Transactions (5-2) - Serializability Isolation - SSI & Summary

续 Day 6。 强列建议阅读本文之前要先去看 Day 4 - Snapshot Isolatio...