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的request.POST获取不到内容的问题
May 28 Python
Python socket套接字实现C/S模式远程命令执行功能案例
Jul 06 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
python3.4控制用户输入与输出的方法
Oct 17 Python
对pandas处理json数据的方法详解
Feb 08 Python
详解小白之KMP算法及python实现
Apr 04 Python
Python内置random模块生成随机数的方法
May 31 Python
python地震数据可视化详解
Jun 18 Python
Python搭建HTTP服务过程图解
Dec 14 Python
Python Switch Case三种实现方法代码实例
Jun 18 Python
如何使用Django Admin管理后台导入CSV
Nov 06 Python
详解Python常用的魔法方法
Jun 03 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一些服务器端特性的配置加强php的安全
2006/10/09 PHP
PHP session有效期问题
2009/04/26 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
php中使用GD库做验证码
2016/03/31 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
会计专业自我鉴定范文
2013/10/06 职场文书
客户接待方案
2014/02/26 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
婚礼新人答谢词
2015/01/04 职场文书
安装工程师岗位职责
2015/02/13 职场文书
教导主任个人总结
2015/03/03 职场文书
采购内勤岗位职责
2015/04/13 职场文书
应急管理工作总结2015
2015/05/04 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
Django debug为True时,css加载失败的解决方案
2021/04/24 Python
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL