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编程实现生成特定范围内不重复多个随机数的2种方法
Apr 14 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
Mar 23 Python
详解Django中间件的5种自定义方法
Jul 26 Python
python实现停车管理系统
Nov 30 Python
python使用thrift教程的方法示例
Mar 21 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
python中Lambda表达式详解
Nov 20 Python
Python使用uuid库生成唯一标识ID
Feb 12 Python
Python实现动态给类和对象添加属性和方法操作示例
Feb 29 Python
python小白学习包管理器pip安装
Jun 09 Python
python 实现波浪滤镜特效
Dec 02 Python
python如何读取和存储dict()与.json格式文件
Jun 25 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
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
php Imagick获取图片RGB颜色值
2014/07/28 PHP
PHP Web木马扫描器代码分享
2015/09/06 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
2019/10/09 PHP
js版本A*寻路算法
2006/12/22 Javascript
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
JQuery元素快速查找与操作
2018/04/22 jQuery
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
Python获取linux主机ip的简单实现方法
2016/04/18 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
python如何运行js语句
2020/09/09 Python
购买大码女装:Lane Bryant
2016/09/07 全球购物
出纳员岗位责任制
2014/02/11 职场文书
学校搬迁方案
2014/06/15 职场文书
离婚协议书应该怎么写
2014/10/12 职场文书
单方离婚协议书范本2014
2014/10/28 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
企业愿景口号
2015/12/25 职场文书
大学生创业计划书
2019/06/24 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
vue实现滑动解锁功能
2022/03/03 Vue.js
springboot实现string转json json里面带数组
2022/06/16 Java/Android