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 相关文章推荐
使用Python的判断语句模拟三目运算
Apr 24 Python
python实现类的静态变量用法实例
May 08 Python
Python编程之属性和方法实例详解
May 19 Python
python在控制台输出进度条的方法
Jun 20 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 Python
Python 用Redis简单实现分布式爬虫的方法
Nov 23 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
Python实现Mysql数据统计及numpy统计函数
Jul 15 Python
Python超越函数积分运算以及绘图实现代码
Nov 20 Python
Python高阶函数、常用内置函数用法实例分析
Dec 26 Python
Python语言编写智力问答小游戏功能
Oct 13 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
php异步多线程swoole用法实例
2014/11/14 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
WordPress中邮件的一些修改和自定义技巧
2015/12/15 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
javascript打开新窗口同时关闭旧窗口
2009/01/16 Javascript
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
JavaScript的漂亮的代码片段
2013/06/05 Javascript
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
Angular浏览器插件Batarang介绍及使用
2018/02/07 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
澳大利亚相机之家:Camera House
2017/11/30 全球购物
贝佳斯官方网站:Borghese
2020/05/08 全球购物
大学生找工作推荐信范文
2013/11/28 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
护士自荐信范文
2015/03/25 职场文书
物流业务员岗位职责
2015/04/03 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS