tensorflow编程中batch和epoch

在机器学习中,epoch是指将所有训练样本进入一次模型,我们知道,机器学习的过程就是不断地调整权值和阈值的过程,可以只输入一个样本就进行一次调整,也可以输进去一批样本进行一次调整。以MNSIT数据集为例,可以通过如下的方式编程实现:

batch_size = 200 #批处理样本数
x_train_num = 10000 #训练集样本数量
batch_steps = int(mnist.train.num_examples / batch_size) #一次epoch所需要的批训练的次数
for i in range (batch_steps):
    batch_x, batch_y = mnist.train.next_batch(batch_size) #获取批训练样本
    sess.run([train, loss], feed_dict = {x: batch_x, y: batch_y}) #进行一次训练
print("Epoch %02d, Loss = %.6f" %(epoch, epoch_loss)) #格式化输出

int可以将训练的次数转为整数,batch_steps就是一次epoch所需要的批训练的次数,mnist.train.next_batch可以取出来指定数量的一批

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
GAN(Generative Adversarial Networks)是一种深度学习模型,它可以生成与训练数据类似的新数据。GAN 由两个神经网络组成:生成器和判别器。生成器用于生成新的数据,而判别器用于判断生成器生成的数据是否与训练数据一致。GAN 的训练过程是这样的:首先,生成器生成一些数据,然后判别器对生成的数据进行评估,如果生成的数据与训练数据相似,则判别器会给出正面的反馈,否则会给出负面的反馈。接着,根据判别器的反馈,生成器会调整自己的参数以使生成的数据更接近于训练数据。这个过程不断迭代,直到生成器生成的数据与训练数据相似。 在 TensorFlow 实现 GAN,我们需要定义两个神经网络:生成器和判别器。生成器通过一些随机噪声来生成新的数据,而判别器将原始数据和生成的数据作为输入,并尝试区分哪些是真实的数据,哪些是生成的数据。GAN 的训练过程可以看作是一个博弈过程,生成器和判别器在不断地优化自己以取得更好的成绩。 下面是一个基于 TensorFlow 的 GAN 实践代码示例: ``` python import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers # 定义生成器 def make_generator_model(): model = keras.Sequential() model.add(layers.Dense(7*7*256, use_bias=False, input_shape=(100,))) model.add(layers.BatchNormalization()) model.add(layers.LeakyReLU()) model.add(layers.Reshape((7, 7, 256))) assert model.output_shape == (None, 7, 7, 256) model.add(layers.Conv2DTranspose(128, (5, 5), strides=(1, 1), padding='same', use_bias=False)) assert model.output_shape == (None, 7, 7, 128) model.add(layers.BatchNormalization()) model.add(layers.LeakyReLU()) model.add(layers.Conv2DTranspose(64, (5, 5), strides=(2, 2), padding='same', use_bias=False)) assert model.output_shape == (None, 14, 14, 64) model.add(layers.BatchNormalization()) model.add(layers.LeakyReLU()) model.add(layers.Conv2DTranspose(1, (5, 5), strides=(2, 2), padding='same', use_bias=False, activation='tanh')) assert model.output_shape == (None, 28, 28, 1) return model # 定义判别器 def make_discriminator_model(): model = keras.Sequential() model.add(layers.Conv2D(64, (5, 5), strides=(2, 2), padding='same', input_shape=[28, 28, 1])) model.add(layers.LeakyReLU()) model.add(layers.Dropout(0.3)) model.add(layers.Conv2D(128, (5, 5), strides=(2, 2), padding='same')) model.add(layers.LeakyReLU()) model.add(layers.Dropout(0.3)) model.add(layers.Flatten()) model.add(layers.Dense(1)) return model # 定义损失函数 cross_entropy = tf.keras.losses.BinaryCrossentropy(from_logits=True) # 定义生成器损失函数 def generator_loss(fake_output): return cross_entropy(tf.ones_like(fake_output), fake_output) # 定义判别器损失函数 def discriminator_loss(real_output, fake_output): real_loss = cross_entropy(tf.ones_like(real_output), real_output) fake_loss = cross_entropy(tf.zeros_like(fake_output), fake_output) total_loss = real_loss + fake_loss return total_loss # 定义优化器 generator_optimizer = tf.keras.optimizers.Adam(1e-4) discriminator_optimizer = tf.keras.optimizers.Adam(1e-4) # 训练过程 @tf.function def train_step(images): noise = tf.random.normal([BATCH_SIZE, 100]) with tf.GradientTape() as gen_tape, tf.GradientTape() as disc_tape: generated_images = generator(noise, training=True) real_output = discriminator(images, training=True) fake_output = discriminator(generated_images, training=True) gen_loss = generator_loss(fake_output) disc_loss = discriminator_loss(real_output, fake_output) gradients_of_generator = gen_tape.gradient(gen_loss, generator.trainable_variables) gradients_of_discriminator = disc_tape.gradient(disc_loss, discriminator.trainable_variables) generator_optimizer.apply_gradients(zip(gradients_of_generator, generator.trainable_variables)) discriminator_optimizer.apply_gradients(zip(gradients_of_discriminator, discriminator.trainable_variables)) # 主程序 generator = make_generator_model() discriminator = make_discriminator_model() EPOCHS = 100 noise_dim = 100 num_examples_to_generate = 16 seed = tf.random.normal([num_examples_to_generate, noise_dim]) for epoch in range(EPOCHS): for image_batch in train_images: train_step(image_batch) # 测试过程 predictions = generator(seed, training=False) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nwsuaf_huasir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值