pytorch GAN生成对抗网络实例


Posted in Python onJanuary 10, 2020

我就废话不多说了,直接上代码吧!

import torch
import torch.nn as nn
from torch.autograd import Variable
import numpy as np
import matplotlib.pyplot as plt

torch.manual_seed(1)
np.random.seed(1)

BATCH_SIZE = 64
LR_G = 0.0001
LR_D = 0.0001
N_IDEAS = 5
ART_COMPONENTS = 15
PAINT_POINTS = np.vstack([np.linspace(-1,1,ART_COMPONENTS) for _ in range(BATCH_SIZE)])

def artist_works():
	a = np.random.uniform(1,2,size=BATCH_SIZE)[:,np.newaxis]
	paintings = a*np.power(PAINT_POINTS,2) + (a-1)
	paintings = torch.from_numpy(paintings).float()
	return Variable(paintings)

G = nn.Sequential(
	nn.Linear(N_IDEAS,128),
	nn.ReLU(),
	nn.Linear(128,ART_COMPONENTS),
)

D = nn.Sequential(
	nn.Linear(ART_COMPONENTS,128),
	nn.ReLU(),
	nn.Linear(128,1),
	nn.Sigmoid(),
)

opt_D = torch.optim.Adam(D.parameters(),lr=LR_D)
opt_G = torch.optim.Adam(G.parameters(),lr=LR_G)

plt.ion()

for step in range(10000):
	artist_paintings = artist_works()
	G_ideas = Variable(torch.randn(BATCH_SIZE,N_IDEAS))
	G_paintings = G(G_ideas)

	prob_artist0 = D(artist_paintings)
	prob_artist1 = D(G_paintings)

	D_loss = - torch.mean(torch.log(prob_artist0) + torch.log(1-prob_artist1))
	G_loss = torch.mean(torch.log(1 - prob_artist1))

	opt_D.zero_grad()
	D_loss.backward(retain_variables=True)
	opt_D.step()

	opt_G.zero_grad()
	G_loss.backward()
	opt_G.step()

	if step % 50 == 0:
		plt.cla()
		plt.plot(PAINT_POINTS[0],G_paintings.data.numpy()[0],c='#4ad631',lw=3,label='Generated painting',)
		plt.plot(PAINT_POINTS[0],2 * np.power(PAINT_POINTS[0], 2) + 1,c='#74BCFF',lw=3,label='upper bound',)
		plt.plot(PAINT_POINTS[0],1 * np.power(PAINT_POINTS[0], 2) + 0,c='#FF9359',lw=3,label='lower bound',)
		plt.text(-.5,2.3,'D accuracy=%.2f (0.5 for D to converge)' % prob_artist0.data.numpy().mean(), fontdict={'size':15})
		plt.text(-.5, 2, 'D score= %.2f (-1.38 for G to converge)' % -D_loss.data.numpy(), fontdict={'size': 15})
		plt.ylim((0,3))
		plt.legend(loc='upper right', fontsize=12)
		plt.draw()
		plt.pause(0.01)

plt.ioff()
plt.show()

pytorch GAN生成对抗网络实例

以上这篇pytorch GAN生成对抗网络实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
关于Django显示时间你应该知道的一些问题
Dec 25 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
Jun 23 Python
Python基于pandas实现json格式转换成dataframe的方法
Jun 22 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
python设置环境变量的作用和实例
Jul 09 Python
python批量将excel内容进行翻译写入功能
Oct 10 Python
Python Selenium参数配置方法解析
Jan 19 Python
Django与pyecharts结合的实例代码
May 13 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
Jun 29 Python
python 制作磁力搜索工具
Mar 04 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 #Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
Jan 10 #Python
mac使用python识别图形验证码功能
Jan 10 #Python
python列表推导和生成器表达式知识点总结
Jan 10 #Python
pytorch的梯度计算以及backward方法详解
Jan 10 #Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 #Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 #Python
You might like
php列出mysql表所有行和列的方法
2015/03/13 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
2016/10/17 PHP
使用Yii2实现主从数据库设置
2016/11/20 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
基于Jquery的简单图片切换效果
2011/01/06 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
python 正则式使用心得
2009/05/07 Python
Python高效编程技巧
2013/01/07 Python
python中requests模块的使用方法
2015/04/08 Python
Python argv用法详解
2016/01/08 Python
Python内置异常类型全面汇总
2020/05/28 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
shell变量的作用空间是什么
2013/08/17 面试题
日语专业个人的求职信
2013/12/03 职场文书
加拿大探亲邀请信
2014/01/28 职场文书
承诺书范文
2014/06/03 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
避暑山庄导游词
2015/02/04 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
化验室岗位职责
2015/02/14 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
写作技巧:优秀文案必备的3种结构
2019/08/19 职场文书
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
十大经典日本动漫排行榜 海贼王第三,犬夜叉仅第八
2022/03/18 日漫