SpringCloud 妹子图微服务架构容器化部署

点击▲关注 “爪哇笔记”   给公众号标星置顶

更多精彩 第一时间直达

前言

虽然小黄图微服务还没正式开源,但是这并不影响撸主的继续分享。随着小黄图的逐渐壮大,以后可能发展到十几或者上百个服务也不是不可能,那么随着而来的就是如何轻松快速的构建部署。

架构

部署

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
GAN(Generative Adversarial Networks)是一种非常流行的生成式深度学习模型,用于生成一些看起来非常逼真的像。如果你想用GAN来生成二次元妹子,你可以按照以下步骤来设计你的GAN模型,并训练和可视它。 1. 设计GAN模型 GAN模型由两个神经网络组成:生成器和判别器。生成器的目标是生成与真实像相似的假像,而判别器的目标是将真实像与生成的假像区分开来。GAN模型的训练过程是两个神经网络相互博弈的过程。 你可以设计生成器和判别器的结构,但是一般情况下,你可以使用卷积神经网络(Convolutional Neural Networks)来实现它们。生成器将一个随机噪声向量转换为一张像,而判别器接受一张像并输出一个二元值,表示这张像是真实的还是假的。 2. 定义损失函数 GAN模型的损失函数由两个部分组成:生成器的损失和判别器的损失。生成器的损失是生成的假像与真实像之间的差异,而判别器的损失是真实像和生成的假像之间的差异。 你可以使用二元交叉熵损失函数来定义判别器的损失,因为GAN模型是一个二元分类问题。对于生成器的损失,你可以使用L1或L2损失函数,因为它们可以度量生成的假像与真实像之间的差异。 3. 训练GAN模型 你可以使用真实像和随机噪声向量来训练GAN模型。在每次训练中,你需要先训练判别器,然后训练生成器。 在训练判别器时,你需要将真实像标记为1,将生成的假像标记为0,并计算判别器损失。在训练生成器时,你需要生成一个随机噪声向量,并将其输入到生成器中,然后计算生成器损失。 4. 可视GAN模型 你可以使用TensorBoard等工具来可视GAN模型的训练过程。你可以绘制判别器和生成器的损失函数随时间的变,以及生成的假像与真实像之间的差异。这将帮助你了解GAN模型的训练过程,并调整模型的超参数。 下面是一个例子代码,用于训练一个GAN模型,生成二次元妹子。 ```python import tensorflow as tf from tensorflow.keras import layers import numpy as np import matplotlib.pyplot as plt # 定义生成器 def make_generator_model(): model = tf.keras.Sequential() model.add(layers.Dense(256, use_bias=False, input_shape=(100,))) model.add(layers.BatchNormalization()) model.add(layers.LeakyReLU()) model.add(layers.Dense(512, use_bias=False)) model.add(layers.BatchNormalization()) model.add(layers.LeakyReLU()) model.add(layers.Dense(1024, use_bias=False)) model.add(layers.BatchNormalization()) model.add(layers.LeakyReLU()) model.add(layers.Dense(28*28*3, use_bias=False, activation='tanh')) model.add(layers.Reshape((28, 28, 3))) return model # 定义判别器 def make_discriminator_model(): model = tf.keras.Sequential() model.add(layers.Flatten()) model.add(layers.Dense(512)) model.add(layers.LeakyReLU()) model.add(layers.Dense(256)) model.add(layers.LeakyReLU()) model.add(layers.Dense(1)) return model # 定义损失函数 cross_entropy = tf.keras.losses.BinaryCrossentropy(from_logits=True) 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 def generator_loss(fake_output): return cross_entropy(tf.ones_like(fake_output), fake_output) # 定义优器 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)) # 加载数据 (train_images, _), (_, _) = tf.keras.datasets.mnist.load_data() train_images = train_images.reshape(train_images.shape[0], 28, 28, 1).astype('float32') train_images = (train_images - 127.5) / 127.5 # 将像素值标准为[-1, 1] BUFFER_SIZE = 60000 BATCH_SIZE = 256 train_dataset = tf.data.Dataset.from_tensor_slices(train_images).shuffle(BUFFER_SIZE).batch(BATCH_SIZE) # 训练模型 EPOCHS = 100 noise_dim = 100 num_examples_to_generate = 16 generator = make_generator_model() discriminator = make_discriminator_model() for epoch in range(EPOCHS): for image_batch in train_dataset: train_step(image_batch) # 绘制生成的像 if epoch % 10 == 0: noise = tf.random.normal([num_examples_to_generate, noise_dim]) generated_images = generator(noise, training=False) fig, axs = plt.subplots(4, 4) cnt = 0 for i in range(4): for j in range(4): axs[i,j].imshow(generated_images[cnt, :, :, :]) axs[i,j].axis('off') cnt += 1 plt.show() ``` 在这个例子中,我们使用了MNIST数据集中的手写数字像来训练GAN模型。在训练过程中,我们每10个epoch绘制一次生成的二次元妹子像,以观察生成器的训练效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值