使用变分Autoencoder生成数字图像NVIDIA GPU
这个例子展示了如何生成CUDA®墨西哥人对于一个训练有素的变分autoencoder (VAE)网络。这个例子说明了:
这个示例使用pretrained解码器基于网络火车变分Autoencoder (VAE)来生成图像深度学习工具箱™的例子。有关更多信息,请参见火车变分Autoencoder (VAE)来生成图像(深度学习工具箱)。
第三方的先决条件
要求
CUDA启用NVIDIA GPU®和兼容的驱动程序。
可选
等non-MEX构建静态、动态库或可执行文件,这个例子有以下额外的需求。
NVIDIA CUDA工具包。
英伟达cuDNN图书馆。
环境变量的编译器和库。有关更多信息,请参见第三方硬件和设置必备产品s manbetx 845。
验证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
对象的trainedDecoderVAENet
MAT-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深度学习配置对象,并将其分配给DeepLearningConfig
GPU代码配置对象的属性。
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不同于图像生成的墨西哥人函数调用。
另请参阅
功能
对象
coder.gpuConfig
|coder.gpuEnvConfig
|coder.CuDNNConfig
|coder.TensorRTConfig
|dlarray
(深度学习工具箱)|dlnetwork
(深度学习工具箱)
相关的例子
- 火车变分Autoencoder (VAE)来生成图像(深度学习工具箱)
更多关于
- 代码生成的dlarray
- dlarray限制代码生成
- 自定义训练循环,损失函数和网络(深度学习工具箱)
- 列车网络的使用自定义训练循环(深度学习工具箱)
- 使用dlnetwork对象作出预测(深度学习工具箱)