IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> GAN-BP生成数据 -> 正文阅读

[人工智能]GAN-BP生成数据

单特征生成

代码主体部分如下(不含预处理部分)

import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
import random

BATCH_SIZE = 1
LR_G = 0.0008           # learning rate for generator
LR_D = 0.0004           # learning rate for discriminator
N_IDEAS = 200             # think of this as number of ideas for generating an art work (Generator)
# k = random.randint(0,len(datas)1)
k = 2#第k个样本
ART_COMPONENTS = len(list(datas[k-2]))    # it could be total point G can draw in the canvas
PAINT_POINTS = np.vstack([np.linspace(-1, 1, ART_COMPONENTS) for _ in range(BATCH_SIZE)])


def artist_works(datas):     # painting from the famous artist (real target)
    paintings = []
    painting = list(datas[k-2].T)
    paintings.append(painting)
    paintings = torch.from_numpy(np.array(paintings))
    return paintings

# 生成器
G = nn.Sequential(                      
    nn.Linear(N_IDEAS, 150),           
    nn.ReLU(),
    nn.Linear(150, ART_COMPONENTS),    
)
# 判别器
D = nn.Sequential(                      
    nn.Linear(ART_COMPONENTS, 100),     
    nn.ReLU(),
    nn.Linear(100, 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() 
p=[]
for i in range(ART_COMPONENTS):
    p.append(i)
for step in range(2000):
    artist_paintings = artist_works(datas)  # 真实数据
    artist_paintings = artist_paintings.to(torch.float32)
    G_ideas = torch.randn(BATCH_SIZE, N_IDEAS) 
    
    #Generator先通过随机点创造图,并把图给Discriminator
    G_paintings = G(G_ideas)                    # 生成假数据
    prob_artist1 = D(G_paintings)               # D试图减少这种问题
    G_loss = torch.mean(torch.log(1. - prob_artist1))  
    opt_G.zero_grad()
    G_loss.backward()
    opt_G.step()
    
    #Discriminator比较真实图和生成图,找出两者的区别并减小这种区别
    prob_artist0 = D(artist_paintings)          # D试图增加这个概率
    prob_artist1 = D(G_paintings.detach())      # D试图减少这种问题
    D_loss = - torch.mean(torch.log(prob_artist0) + torch.log(1. - prob_artist1))
    opt_D.zero_grad()
    D_loss.backward(retain_graph=True) 
    opt_D.step()
    
    if (step+1) % 50 == 0:  # plotting
        scaler = joblib.load("D:/PYthon代码/归一化/scalar")#加载
        G_paintings = scaler.fit_transform(G_paintings.T.detach().numpy())#生成数据
        scaler = joblib.load("D:/PYthon代码/归一化/scalar")#加载
        G_paintings = scaler.inverse_transform(G_paintings)
       
        scaler = joblib.load("D:/PYthon代码/归一化/scalar")#加载
        artist_paintings = artist_paintings.permute(0, 2, 1)
        artist_paintings = artist_paintings[-1,:,:]
        artist_paintings = scaler.inverse_transform(artist_paintings.T)#反归一化 
        
        plt.plot( p[::30], list(G_paintings)[::30], lw = 1,label='Generated painting')
        plt.plot( p[::30], list(artist_paintings[0])[::30], lw = 1, label='data')
        plt.legend()
        plt.ioff()
        plt.show()
        
        pt = []
        for i in G_paintings:
            pt.append(i[0])
        rpt = []
        for i in artist_paintings[0]:
            rpt.append(i)
        g_s_m = pd.Series(pt) #利用Series将列表转换成新的、pandas可处理的数据
        g_a_d = pd.Series(rpt)
        print("第{}次训练".format(step+1))
        print("真数据和合成数据的相关系数:{:.4f}".format(g_s_m.corr(g_a_d)))
        print("真数据概率:{:.4f}%".format(float(prob_artist0)))
        print("合成数据概率:{:.4f}%".format(float(prob_artist1)))
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 11:03:14  更:2022-05-06 11:04:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:24:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码