如何通过生成对抗网络将Python完整实现?学到了

释放双眼,带上耳机,听听看~!

人们如今热衷深入细致自学研究结果,每天或每星期单厢发布新微积分模型或新概念的新技术或数据库系统当中一项值得注意的工作是由OpenAI的Ian Goodfellow et.al在2014年发表的“Generative Adversarial Networks”。

它是袖珍的神经互联网构架众所周知聚合微积分模型和辨别微积分模型有两种广泛类型的机器自学微积分模型,a)辨别微积分模型 b)聚合微积分模型在辨别微积分模型中,演算法企图将输出态射到输出,但她们不关心统计数据中的潜在性表达式她们忽略统计数据的则表示在微积分名词中,聚合微积分模型自学条件随机表达式。

如何通过生成对抗网络将Python完整实现?学到了

联手随机表达式然而,在聚合微积分模型中,演算法试著将输出态射到输出,并且还自学潜在性表达式和统计数据则表示因而,聚合微积分模型自学统计数据的联手随机表达式透过采用那个,她们可以从自学统计数据中聚合捷伊统计数据点GAN是聚合微积分模型对付格斗游戏对付格斗游戏是人工智慧(AI)的领域,三个或更多的全权交互作用,企图透过完成目标击退劲敌。

最常见的例子众所周知是zero-sum 格斗游戏,如井字棋或象棋三个玩者最轻化,另三个最优化,因而她们玩的是min-max格斗游戏(根据可计算性)GAN有三个神经互联网,三个是辨别互联网,另三个是聚合互联网每个互联网互相试著,从而在整个过程中透过聚合互联网自学统计数据的则表示。

因而就有了“对付互联网”那个词互联网背后的微积分深度自学或机器自学都是为的是优化表达式或最优化演算法的经济损失她们用势能下降法设X为真实世界统计数据集,Z为概率密度函数噪音设p(z)为潜在性空间z的统计数据,G和D分别是聚合互联网和辨别互联网的有界表达式。

D(x)则表示统计数据来自真实世界统计数据集x的机率,她们体能训练D使机率笔记(D(x)最轻化,体能训练G使笔记(1 – D(G(z))最优化具体来说,她们玩的是上面介绍的最轻最轻值格斗游戏,并获得自上而下INS13ZD

如何通过生成对抗网络将Python完整实现?学到了

GAN(经济损失表达式)以上表达式为她们的聚合对付互联网提供了经济损失表达式现在,注意log(1 – D(G(z))饱和状态是很重要的,所以她们不会使它最优化,而是她们最轻化log(D(G(z)))为的是证明由冷却系统互联网聚合的样品与X完全一致,她们须要深入细致微积分,并采用Kullback-Leibler无限小不等式和Jensen-Shannon无限小。

聚合对付互联网的体能训练是非常困难的为的是成功地体能训练它们,须要读懂一些突破点互联网构架为的是精简,她们采用THF1神经互联网作为原初创建三个互联网这将是她们的聚合互联网,它将从潜在性的算式Z中获取输出该互联网的输出层次将与原初样品统计数据中的特征数量相同。

她们创建了另三个甘当辨别器的互联网它将只输出三个纯量值对于这种情况,她们将聚合MNIST数字的影像以下是概要的互联网规范 :聚合互联网[n,m]的输出层,当中n是正确率,m是潜表达式的测度这里,n = 128,m = 100。

它将有三个暗藏层,后跟输出层[100,256] => [256,512]输出层[512,768]辨别互联网输出层由权重股[128,768]组成三个暗藏层有[768,512] => [512,256]最后输出层[256,1]。

如何通过生成对抗网络将Python完整实现?学到了

Training GANTensorflow实现在本节中,她们必须具备一些关于张量流的基本知识我将仅解释经济损失表达式计算部分,该区域在实现中是棘手的Python实现如下:from datetime import datetime。

import argparseimport tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltimport matplotlib.gridspec as gridspec

BATCH_SIZE = 128LEARNING_RATE = 1e-3EPOCHS = 75Z_DIM = 100def he_xavier(in_size: int, out_size: int, init_only=False):

“””Xavier initialization according to Kaiming He in:*Delving Deep into Rectifiers: Surpassing Human-Level

Performance on ImageNet Classification(https://arxiv.org/abs/1502.01852)”””stddev = tf.cast(tf.sqrt(2 / in_size), tf.float32)

W = tf.random_normal([in_size, out_size], stddev=stddev)b = tf.zeros([out_size])if init_only:return W, b

return tf.Variable(W, name=”weights”), tf.Variable(b, name=”biases”)def print_flags(flags):for key, value in vars(flags).items():

print(“{}: {}”.format(key, str(value)))def load_mnist():from tensorflow.examples.tutorials.mnist import input_data

return input_data.read_data_sets(“./MNIST_data”, one_hot=True)class GAN(object):def __init__(self, lr=1E-3, batch_size=128, z_dim=100):

self.lr = lrself.batch_size = batch_sizeself.z_dim = z_dimself.z_in = tf.placeholder(tf.float32, shape=[None, z_dim])

self.x_in = tf.placeholder(tf.float32, shape=[None, 784])# Construct Discriminator/ Generator graph ops

self.g_sample, self.g_weights = self.generator(z=self.z_in)self.d_real, self.d_weights = self.discriminator(self.x_in)

self.d_fake, _ = self.discriminator(self.g_sample, reuse=True)# Loss and optimization opsself.d_loss, self.g_loss = self.loss()

self.d_train, self.g_train = self.optimize()# Initialize session to run ops inself._sess = tf.Session()

self._sess.run(tf.initialize_all_variables())def discriminator(self, x, reuse=False):with tf.variable_scope(“D”, reuse=reuse):

W1_init, _ = he_xavier(784, 128, init_only=True)W1 = tf.get_variable(“W1”, initializer=W1_init)b1 = tf.get_variable(“b1”, shape=[128], initializer=tf.constant_initializer(0.0))

d_h1 = tf.nn.elu(tf.add(tf.matmul(x, W1), b1))W2_init, _ = he_xavier(128, 1, init_only=True)W2 = tf.get_variable(“W2”, initializer=W2_init)

b2 = tf.get_variable(“b2”, shape=[1], initializer=tf.constant_initializer(0.0))d_h2 = tf.add(tf.matmul(d_h1, W2), b2)

return tf.nn.sigmoid(d_h2), [W1,b1,W2,b2]def generator(self, z):W1, b1 = he_xavier(self.z_dim, 128)g_h1 = tf.nn.elu(tf.add(tf.matmul(z, W1), b1))

W2, b2 = he_xavier(128, 784)g_h2 = tf.add(tf.matmul(g_h1, W2), b2)return tf.nn.sigmoid(g_h2), [W1,b1,W2,b2]

def loss(self):discriminator_loss = -tf.reduce_mean(tf.log(self.d_real) + tf.log(1. – self.d_fake))generator_loss = -tf.reduce_mean(tf.log(self.d_fake))

return discriminator_loss, generator_lossdef optimize(self):optimizer = tf.train.AdamOptimizer(learning_rate=self.lr)

d_train = optimizer.minimize(self.d_loss, var_list=self.d_weights)g_train = optimizer.minimize(self.g_loss, var_list=self.g_weights)

return d_train, g_traindef sample_z(self, num_samples):return np.random.uniform(-1., 1., size=[num_samples, self.z_dim])

def train_discriminator(self, x_in):z_sample = self.sample_z(self.batch_size)fetches = [self.d_train, self.d_loss]

_, d_loss = self._sess.run(fetches, feed_dict={self.x_in: x_in, self.z_in:z_sample})return d_lossdef train_generator(self):

z_sample = self.sample_z(self.batch_size)fetches = [self.g_train, self.g_loss]_, g_loss = self._sess.run(fetches, feed_dict={self.z_in: z_sample})

return g_lossdef sample_g(self, num_samples):z_sample = self.sample_z(num_samples=num_samples)return self._sess.run(self.g_sample, feed_dict={self.z_in: z_sample})

def plot_grid(samples):fig = plt.figure(figsize=(4, 4))gs = gridspec.GridSpec(4, 4)gs.update(wspace=0.05, hspace=0.05)

for i, sample in enumerate(samples):ax = plt.subplot(gs[i])plt.axis(off)ax.set_xticklabels([])ax.set_yticklabels([])

ax.set_aspect(equal)plt.imshow(sample.reshape(28, 28), cmap=Greys_r)return figdef main(_):print_flags(FLAGS)

gan = GAN(lr=FLAGS.learning_rate, batch_size=FLAGS.batch_size, z_dim=FLAGS.z_dim)mnist = load_mnist()

print(“Started training {}”.format(datetime.now().isoformat()[11:]))plot_index = 0for epoch in range(FLAGS.epochs):

for batch in range(mnist.train.num_examples // FLAGS.batch_size):batch_x, _ = mnist.train.next_batch(FLAGS.batch_size)

_ = gan.train_discriminator(x_in=batch_x) # train disciminator_ = gan.train_generator() # train generator

if epoch % 10 == 0:d_loss = gan.train_discriminator(x_in=batch_x)g_loss = gan.train_generator()print(“Epoch {} Discriminator Loss {} Generator loss {}”.format(epoch + 1,

d_loss,g_loss))gen_sample = gan.sample_g(num_samples=16)fig = plot_grid(gen_sample)plt.savefig({}.png.format(str(plot_index).zfill(3)), bbox_inches=tight)

plot_index += 1plt.close(fig)print(“Ended training {}”.format(datetime.now().isoformat()[11:]))FLAGS = None

if __name__ == “__main__”:parser = argparse.ArgumentParser()parser.add_argument(“–learning_rate”, type=int, default=LEARNING_RATE)

parser.add_argument(“–batch_size”, type=int, default=BATCH_SIZE)parser.add_argument(“–epochs”, type=int, default=EPOCHS)

parser.add_argument(“–z_dim”, type=int, default=Z_DIM)FLAGS, _ = parser.parse_known_args()tf.app.run()

她们首先用真实世界统计数据体能训练discriminator ,然后她们体能训练generator,给discriminator 提供假影像在上面她们的讨论中,她们须要最轻化方程,但是tensroflow只有最优化,所以负号才能做到这一点。

在第85行中,只采用log(D(G(z)),如前面讨论的原初方程饱和状态

如何通过生成对抗网络将Python完整实现?学到了

GAN聚合的示例影像结论GAN是最先进的神经互联网众所周知,可以用来做很多事情她们可以将它用于某些她们目前没有医疗处理的疾病的药物发现压缩统计数据然后解压缩统计数据恢复损坏的统计数据,文本到影像聚合,以及更多无穷无尽的应用程序聚合对付互联网。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。e网宇宙

给TA打赏
共{{data.count}}人
人已打赏
热点

开普勒星球有多适合人类居住?这都可以

2023-6-15 9:43:15

热点

这本书带你揭示生成对抗网络快来看

2023-6-15 9:45:33

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索