志愿者网站时长码怎么做android 旅游网站开发

张小明 2026/1/10 7:39:48
志愿者网站时长码怎么做,android 旅游网站开发,wifi小程序怎么赚钱,网络管理系统分为哪些层次用变分自编码器生成图像 目前最流行也是最成功的创造性人工智能应用就是图像生成#xff1a;学习潜在视觉空间#xff0c;并从空 间中进行采样来创造全新图片。这些图片是在真实图片中进行插值得到的#xff0c;可以是想象中的人、 想象中的地方、想象中的猫和狗等。 本节和…用变分自编码器生成图像目前最流行也是最成功的创造性人工智能应用就是图像生成学习潜在视觉空间并从空间中进行采样来创造全新图片。这些图片是在真实图片中进行插值得到的可以是想象中的人、想象中的地方、想象中的猫和狗等。本节和12.5 节将介绍一些与图像生成有关的概念还会介绍该领域中的两种主要技术的实现细节。这两种技术分别是变分自编码器variational autoencoderVAE和生成式对抗网络generative adversarial networkGAN。请注意这里介绍的技术不仅适用于图像你还可以使用VAE 和GAN 探索声音、音乐甚至文本的潜在空间。但在实践中最有趣的结果都是利用图片得到的这也是我们介绍的重点。从图像潜在空间中采样图像生成的关键思想就是找到图像表示的低维潜在空间latent space与深度学习其他内容一样它也是一个向量空间其中任意一点都可以被映射为一张“有效”图像即看起来真实的图像。能够实现这种映射的模块接收一个潜在点作为输入并输出一张图像像素网格。这种模块叫作生成器generator对于GAN 而言或解码器decoder对于VAE 而言。学到这种潜在空间之后我们可以从中对点进行采样然后将其映射到图像空间从而生成前所未见的图像如图12-13 所示。新图像是训练图像的插值。要学习图像表示的这种潜在空间VAE 和GAN 采用了不同的策略二者各有特点。VAE 非常适合学习具有良好结构的潜在空间空间中的特定方向表示数据中有意义的变化轴如图12-14所示。GAN 可以生成非常逼真的图像但它的潜在空间可能没有良好的结构连续性也不强。图像编辑的概念向量第11 章介绍词嵌入时我们已经暗示了概念向量concept vector这一想法。这里用到了同样的想法给定一个数据表示的潜在空间或一个嵌入空间空间中的某些方向可能表示原始数据中有趣的变化轴。比如在人脸图像的潜在空间中可能存在一个微笑向量smile vectors如果潜在点z 是某张人脸的嵌入表示那么潜在点z s 就是同一张脸面带微笑的嵌入表示。一旦找到了这样的向量就可以这样编辑图像将图像投影到潜在空间中然后沿着有意义的方向移动图像表示再将其解码到图像空间中。在图像空间中任何独立的变化维度都有概念向量。对于人脸而言你可能会发现向人脸添加墨镜的向量、去掉眼镜的向量、将男性面孔变为女性面孔的向量等。图12-15 是微笑向量的一个例子它是由新西兰维多利亚大学设计学院的Tom White 发现的概念向量他使用的是在名人脸部属性数据集CelebA 数据集上训练的VAE。变分自编码器变分自编码器由Diederik P. Kingma 和Max Welling 于2013 年12 月a 以及Danilo JimenezRezende、Shakir Mohamed 和Daan Wierstra 于2014 年1 月b 几乎同时提出。它是一种生成式模型特别适用于利用概念向量进行图像编辑。这种现代化的自编码器将深度学习思想与贝叶斯推断结合在一起。自编码器是一类网络其目的是将输入编码到低维潜在空间然后再解码回来。经典的图像自编码器接收一张图像通过编码器模块将其映射到潜在向量空间然后再通过解码器模块将其解码为与原始图像具有相同尺寸的输出如图12-16 所示。然后使用与输入图像相同的图像作为目标数据来训练这个自编码器也就是说自编码器学习对原始输入进行重构。通过对编码编码器输出施加各种限制我们可以让自编码器学到比较有趣的数据潜在表示。最常见的情况是将编码限制为低维且稀疏的大部分元素为0。在这种情况下编码器可以压缩输入数据。VAE 并没有将输入图像压缩为潜在空间中的固定编码而是将图像转换为统计分布的参数即均值和方差。这本质上意味着我们假设输入图像是由统计过程生成的在编码和解码的过程中应该考虑随机性。VAE 使用均值和方差这两个参数从分布中随机采样一个元素并将这个元素解码为原始输入如图12-17 所示。这一过程的随机性提高了其稳健性并迫使潜在空间的任何位置都对应有意义的表示即在潜在空间中采样的每个点都能解码为有效输出。从技术角度来说VAE 的工作原理如下。(1) 编码器模块将输入样本input_img 转换为图像表示潜在空间中的两个参数z_mean 和z_log_var。(2) 我们假定潜在正态分布能够生成输入图像并从这个分布中随机采样一个点zz z_mean exp(0.5 * z_log_var) * epsilon其中epsilon 是一个取值很小的随机张量。(3) 解码器模块将潜在空间中的这个点映射回原始输入图像。由于epsilon 是随机的因此这个过程可以保证与编码input_img 的潜在位置z-mean接近的每个点都能被解码为与input_img 相似的图像从而迫使潜在空间能够连续地有意义。潜在空间中任意两个相邻的点都可以被解码为高度相似的图像。潜在空间的连续性和低维度迫使其中的每个方向都表示数据中的一个有意义的变化轴。这使得潜在空间具有非常好的结构因此非常适合通过概念向量来进行操作。VAE 的参数可以通过两个损失函数来训练一个是重构损失reconstruction loss它迫使解码后的样本匹配原始输入另一个是正则化损失regularization loss它有助于学习良好的潜在分布并降低在训练数据上的过拟合。整个过程的原理如下所示。接下来我们可以使用重构损失和正则化损失来训练模型。对于正则化损失我们通常使用一个表达式Kullback−Leibler 散度旨在让编码器输出的分布趋向于以0 为中心的光滑正态分布。这为编码器提供了一个关于潜在空间结构的合理假设。下面我们来看一下如何在实践中实现VAE。用Keras 实现变分自编码器我们将实现一个能够生成MNIST 数字图像的VAE它包含以下3 部分。编码器网络将真实图像转换为潜在空间中的均值和方差。采样层接收上述均值和方差并利用它们从潜在空间中随机采样一个点。解码器网络将潜在空间中的点重新转换为图像。代码清单12-24 给出了我们要使用的编码器网络它将图像映射为潜在空间中的概率分布参数。它是一个简单的卷积神经网络将输入图像x 映射为z_mean 和z_log_var 两个向量。这里有一个重要的细节我们使用步幅对特征图进行下采样而没有使用最大汇聚。上次我们这样做是在第9 章的图像分割示例中。回想一下一般来说对于关注信息位置物体在图像中的位置的模型来说步幅比最大汇聚更适合。本模型需要关注信息位置因为它需要生成图像编码并将其用于重构有效图像。代码清单12-24 VAE 编码器网络代码清单12-25 利用z_mean 和z_log_var 来生成一个潜在空间点z假设二者是生成input_img 的统计分布参数。代码清单12-25 潜在空间采样层代码清单12-26 给出了解码器网络的实现。我们将向量z 的形状调整为图像尺寸然后使用几个卷积层来得到最终的图像输出其尺寸与原始图像input_img 相同。代码清单12-26 VAE 解码器网络将潜在空间点映射为图像它的架构如下所示。下面来创建VAE 模型。这是我们的第一个非监督学习模型示例自编码器是一种自监督学习因为它使用输入作为目标。如果你要做的不是经典的监督学习那么常见的做法是将Model 类子类化并实现自定义的train_ step() 来给出新的训练逻辑这是第7 章介绍过的工作流程。我们在这里也会这样做如代码清单12-27 所示。代码清单12-27 使用自定义train_step() 的VAE 模型class VAE(keras.Model): def __init__(self, encoder, decoder, **kwargs): super().__init__(**kwargs) self.encoder encoder self.decoder decoder self.sampler Sampler()最后我们将模型实例化并在MNIST 数字上进行训练如代码清单12-28 所示。由于在自定义层中给定了损失因此在编译时无须指定外部损失lossNone这又意味着在训练过程中无须传入目标数据如你所见我们在调用fit() 时只向模型传入了x_train。代码清单12-28 训练VAE模型训练完成之后我们可以使用decoder 网络将任意潜在空间向量转换为图像如代码清单12-29 所示。代码清单12-29 从二维潜在空间中采样图像网格采样数字的网格见图12-18展示了不同数字类别之间完全连续的分布沿着潜在空间的一条路径观察你会发现一个数字逐渐变形为另一个数字。这个空间的特定方向是有意义的比如有些方向表示“逐渐变为5”“逐渐变为1”等。12.5 节将详细介绍生成人造图像的另一个重要工具生成式对抗网络GAN。完整代码importnumpyasnpimportmatplotlib.pyplotaspltimporttensorflowastffromtensorflowimportkerasfromtensorflow.kerasimportlayers# 设置随机种子np.random.seed(42)tf.random.set_seed(42)# 加载并预处理MNIST数据(x_train,_),(x_test,_)keras.datasets.mnist.load_data()x_trainx_train.astype(float32)/255.0x_testx_test.astype(float32)/255.0x_trainnp.expand_dims(x_train,-1)x_testnp.expand_dims(x_test,-1)print(f训练数据形状:{x_train.shape})print(f测试数据形状:{x_test.shape})# 定义编码器网络latent_dim2encoder_inputskeras.Input(shape(28,28,1))xlayers.Conv2D(32,3,activationrelu,strides2,paddingsame)(encoder_inputs)xlayers.Conv2D(64,3,activationrelu,strides2,paddingsame)(x)xlayers.Flatten()(x)xlayers.Dense(16,activationrelu)(x)z_meanlayers.Dense(latent_dim,namez_mean)(x)z_log_varlayers.Dense(latent_dim,namez_log_var)(x)encoderkeras.Model(encoder_inputs,[z_mean,z_log_var],nameencoder)encoder.summary()# 定义采样层classSampler(layers.Layer):defcall(self,z_mean,z_log_var):batch_sizetf.shape(z_mean)[0]z_sizetf.shape(z_mean)[1]epsilontf.random.normal(shape(batch_size,z_size))returnz_meantf.exp(0.5*z_log_var)*epsilon# 定义解码器网络latent_inputskeras.Input(shape(latent_dim,))xlayers.Dense(7*7*64,activationrelu)(latent_inputs)xlayers.Reshape((7,7,64))(x)xlayers.Conv2DTranspose(64,3,activationrelu,strides2,paddingsame)(x)xlayers.Conv2DTranspose(32,3,activationrelu,strides2,paddingsame)(x)decoder_outputslayers.Conv2D(1,3,activationsigmoid,paddingsame)(x)decoderkeras.Model(latent_inputs,decoder_outputs,namedecoder)decoder.summary()# 定义VAE模型classVAE(keras.Model):def__init__(self,encoder,decoder,**kwargs):super().__init__(**kwargs)self.encoderencoder self.decoderdecoder self.samplerSampler()self.total_loss_trackerkeras.metrics.Mean(nametotal_loss)self.reconstruction_loss_trackerkeras.metrics.Mean(namereconstruction_loss)self.kl_loss_trackerkeras.metrics.Mean(namekl_loss)propertydefmetrics(self):return[self.total_loss_tracker,self.reconstruction_loss_tracker,self.kl_loss_tracker,]deftrain_step(self,data):withtf.GradientTape()astape:z_mean,z_log_varself.encoder(data)zself.sampler(z_mean,z_log_var)reconstructionself.decoder(z)# 计算重构损失reconstruction_losstf.reduce_mean(tf.reduce_sum(keras.losses.binary_crossentropy(data,reconstruction),axis(1,2)))# 计算KL散度损失kl_loss-0.5*(1z_log_var-tf.square(z_mean)-tf.exp(z_log_var))kl_losstf.reduce_mean(tf.reduce_sum(kl_loss,axis1))# 总损失total_lossreconstruction_losskl_loss# 计算梯度并更新权重gradstape.gradient(total_loss,self.trainable_weights)self.optimizer.apply_gradients(zip(grads,self.trainable_weights))# 更新指标self.total_loss_tracker.update_state(total_loss)self.reconstruction_loss_tracker.update_state(reconstruction_loss)self.kl_loss_tracker.update_state(kl_loss)return{loss:self.total_loss_tracker.result(),reconstruction_loss:self.reconstruction_loss_tracker.result(),kl_loss:self.kl_loss_tracker.result(),}# 创建并编译VAEvaeVAE(encoder,decoder)vae.compile(optimizerkeras.optimizers.Adam())# 训练VAEprint(开始训练VAE...)historyvae.fit(x_train,epochs30,batch_size128,validation_data(x_test,None))# 可视化训练过程defplot_training_history(history):fig,axesplt.subplots(1,3,figsize(15,4))axes[0].plot(history.history[loss],label训练损失)axes[0].set_title(总损失)axes[0].set_xlabel(Epoch)axes[0].legend()axes[1].plot(history.history[reconstruction_loss],label训练重构损失)axes[1].set_title(重构损失)axes[1].set_xlabel(Epoch)axes[1].legend()axes[2].plot(history.history[kl_loss],label训练KL损失)axes[2].set_title(KL散度损失)axes[2].set_xlabel(Epoch)axes[2].legend()plt.tight_layout()plt.show()plot_training_history(history)# 从潜在空间生成图像网格defplot_latent_space(decoder,n30,figsize15):# 显示数字的n×n网格digit_size28scale2.0figurenp.zeros((digit_size*n,digit_size*n))# 在标准正态分布的潜在空间中构建点网格grid_xnp.linspace(-scale,scale,n)grid_ynp.linspace(-scale,scale,n)[::-1]fori,yiinenumerate(grid_y):forj,xiinenumerate(grid_x):z_samplenp.array([[xi,yi]])x_decodeddecoder.predict(z_sample,verbose0)digitx_decoded[0].reshape(digit_size,digit_size)figure[i*digit_size:(i1)*digit_size,j*digit_size:(j1)*digit_size,]digit plt.figure(figsize(figsize,figsize))start_rangedigit_size//2end_rangen*digit_sizestart_range pixel_rangenp.arange(start_range,end_range,digit_size)sample_range_xnp.round(grid_x,1)sample_range_ynp.round(grid_y,1)plt.xticks(pixel_range,sample_range_x)plt.yticks(pixel_range,sample_range_y)plt.xlabel(z[0])plt.ylabel(z[1])plt.imshow(figure,cmapGreys_r)plt.title(从潜在空间解码得到的数字网格)plt.show()print(\n生成潜在空间图像网格...)plot_latent_space(decoder,n20,figsize10)# 可视化重构结果defplot_reconstruction(model,x_test,n10):plt.figure(figsize(20,4))foriinrange(n):# 显示原始图像axplt.subplot(2,n,i1)plt.imshow(x_test[i].reshape(28,28),cmapgray)plt.title(原始)plt.axis(off)# 显示重构图像axplt.subplot(2,n,i1n)# 获取编码并解码z_mean,z_log_varmodel.encoder.predict(x_test[i:i1],verbose0)zmodel.sampler(z_mean,z_log_var)reconstructionmodel.decoder.predict(z,verbose0)plt.imshow(reconstruction[0].reshape(28,28),cmapgray)plt.title(重构)plt.axis(off)plt.suptitle(原始图像 vs 重构图像)plt.show()print(\n展示重构结果...)plot_reconstruction(vae,x_test)# 在潜在空间中插值defplot_interpolation(decoder,start_point,end_point,n10):在潜在空间中的两个点之间进行插值interpolated_pointsnp.linspace(start_point,end_point,n)plt.figure(figsize(20,2))fori,pointinenumerate(interpolated_points):axplt.subplot(1,n,i1)imgdecoder.predict(point.reshape(1,-1),verbose0)[0]plt.imshow(img.reshape(28,28),cmapgray)plt.axis(off)plt.suptitle(潜在空间插值)plt.show()# 选择两个不同的潜在点进行插值print(\n展示潜在空间插值...)start_pointnp.array([[-2.0,0.0]])end_pointnp.array([[2.0,0.0]])plot_interpolation(decoder,start_point,end_point)
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

软件开发服务费税率网络优化

触发器与事务:如何用数据库的“隐形之手”守护数据一致性 你有没有遇到过这样的场景? 一个订单莫名其妙跳过了“已支付”直接变成了“已发货”; 用户资料改了十次,后台却一条日志都没留下; 库存明明扣减了&#xff…

张小明 2026/1/10 8:49:13 网站建设

cpa网站怎么做母婴类网站怎么建设

115proxy-for-Kodi终极指南:实现云端视频原码播放的完整教程 【免费下载链接】115proxy-for-kodi 115原码播放服务Kodi插件 项目地址: https://gitcode.com/gh_mirrors/11/115proxy-for-kodi 在当今数字娱乐时代,如何高效利用云端存储资源成为众多…

张小明 2026/1/9 17:05:12 网站建设

网站当地备案有什么网站可以赚钱

本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景 关于“游戏代练撮合”问题的研究,现有文献主要以宏观层面的游戏经济、灰色产业链治理、游戏直播/陪玩商业模式为主…

张小明 2026/1/9 4:52:08 网站建设

个人网站-个人主页作业电商平台哪个最好

本文详解如何不依赖高级编排框架,使用原生Python和LLM API构建Deep Research Agent多智能体系统。系统采用反思式搜索循环和并行处理机制,实现自主规划、多轮搜索优化和结构化报告生成。文章提供完整技术实现细节、架构设计和开源代码,强调理…

张小明 2026/1/9 17:05:47 网站建设

网站建设资金申请报告网络知识网站

目录 已开发项目效果实现截图关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 已开发项目效果实现截图 同行可拿货,招校园代理 ,本人源头供货商 python合庆镇停车场车位预约系统_q…

张小明 2026/1/9 12:14:38 网站建设

苏州的网络公司网站建设wordpress更换空间

十一国庆盛典筹备:AI辅助设计群众游行方阵视觉方案 在每年一度的“十一”群众游行筹备现场,设计师们围坐在大屏前,反复修改服装纹样、调整队形动画节奏、比对背景图景与方阵主题的契合度。这曾是一个以人力密集投入为核心的创作过程——一张主…

张小明 2026/1/9 1:55:06 网站建设