主要内容

使用变分Autoencoder生成数字图像NVIDIA GPU

这个例子展示了如何生成CUDA®墨西哥人对于一个训练有素的变分autoencoder (VAE)网络。这个例子说明了:

  • 代的手绘风格的数字图像MNIST数据集。

  • CUDA代码生成的dlnetwork(深度学习工具箱)对象代表一个深入学习网络。

  • 使用dlarray(深度学习工具箱)在代码生成对象。

这个示例使用pretrained解码器基于网络火车变分Autoencoder (VAE)来生成图像深度学习工具箱™的例子。有关更多信息,请参见火车变分Autoencoder (VAE)来生成图像(深度学习工具箱)

第三方的先决条件

要求

  • CUDA启用NVIDIA GPU®和兼容的驱动程序。

可选

等non-MEX构建静态、动态库或可执行文件,这个例子有以下额外的需求。

验证GPU环境

验证编译器和库设置正确,运行这个示例使用coder.checkGpuInstall函数。

envCfg = coder.gpuEnvConfig (“主机”);envCfg。DeepLibTarget =“cudnn”;envCfg。DeepCodegen = 1;envCfg。安静= 1;coder.checkGpuInstall (envCfg);

Pretrained变分Autoencoder网络

Autoencoders有两个部分:编码器和译码器。编码器接受图像输入和输出压缩表示(编码),这是一个向量的大小latent_dim在本例中,等于20。解码器压缩表示,解码,再现了原始图像。

弗吉尼亚州不同于普通autoencoders他们不使用encoding-decoding过程重建一个输入。相反,他们对潜在的空间概率分布,并学习输出的分布,分布的观测数据的译码器匹配。然后,他们从这个分布生成新的数据样本。

下面的例子使用了译码器网络的训练火车变分Autoencoder (VAE)来生成图像的例子。网络训练自己,明白了火车变分Autoencoder (VAE)来生成图像(深度学习工具箱)

generateVAE入口点函数

generateVAE入口点函数加载dlnetwork对象的trainedDecoderVAENetMAT-file到一个持久变量和重用后续预测的持久对象调用。它初始化一个dlarray对象包含25个随机生成的编码,通过他们通过译码器网络,提取数字数据生成的图像深度学习数组对象。

类型(“generateVAE.m”)
函数generatedImage = generateVAE (decoderNetFileName latentDim,环境)% # codegen % MathWorks版权2020 - 2021,公司持续decoderNet;如果isempty (decoderNet) decoderNet = coder.loadDeepLearningNetwork (decoderNetFileName);结束%生成随机噪声randomNoise = dlarray (randn (1, 1, latentDim, 25岁,“单”),“SSCB”);如果coder.target (MATLAB) & & strcmp(环境,gpu) randomNoise = gpuArray (randomNoise);结束%从噪声生成新的图像generatedImage =乙状结肠(预测(decoderNet randomNoise));%提取数字数据从dlarray generatedImage = extractdata (generatedImage);结束

评估的入口点函数

评估generateVAE入口点函数生成数字图像和阴谋的结果。

latentDim = 20;matfile =“trainedDecoderVAENet.mat”;Env =;图()标题(“数字——MATLAB生成的样本”)generatedImageML = generateVAE (matfile、latentDim Env);imshow (imtile (generatedImageML,“ThumbnailSize”,[100100]))

生成CUDA墨西哥人

生成CUDA代码generateVAE入口点函数,创建一个GPU代码配置对象为一个墨西哥人的目标和目标语言设置为c++。使用coder.DeepLearningConfig函数创建一个CuDNN深度学习配置对象,并将其分配给DeepLearningConfigGPU代码配置对象的属性。

Env =“图形”;cfg = coder.gpuConfig (墨西哥人的);cfg。TargetLang =“c++”;cfg。DeepLearningConfig = coder.DeepLearningConfig (“cudnn”);args = {coder.Constant (matfile) coder.Constant (latentDim) coder.Constant (Env)};codegen配置cfgarg游戏arg游戏generateVAE报告
代码生成成功:查看报告

为TensorRT目标生成CUDA的代码,创建和使用一个TensorRT深度学习配置对象而不是CuDNN配置对象。

运行生成的墨西哥人

调用生成的CUDA墨西哥人并显示结果。

图()标题(“生成的样本位数- GPU”)generatedImageGPU = generateVAE_mex (matfile、latentDim Env);imshow (imtile (generatedImageGPU,“ThumbnailSize”,[100100]))

generateVAE入口点函数初始化dlarray对象与随机生成的编码,通过他们通过译码器网络,提取数字数据生成的图像深度学习数组对象。结果,图像在MATLAB仿真geenrated不同于图像生成的墨西哥人函数调用。

另请参阅

功能

对象

相关的例子

更多关于