【MATLAB第27期】源码分享 | 基于MATLAB的生成对抗网络GAN回归预测模型
源码可进行分享,放心使用,后台回复“27”即可。
原理:略。
一、主程序代码
%% 1.首先是预定义: clear; clc; %%%clc是清除当前command区域的命令,表示清空,看着舒服些 。而clear用于清空环境变量。两者是不同的。 %%%装载数据集 train_x=rand(1,30);%train_x就是我们希望GAN网络能够生成与其相似的数据。其中 Neuron1=size(train_x,2);% 第一层神经元,与数据列数相等 [m,n]=size(train_x);%m表示train_x有多少行,n表示有多少列。 %%%定义模型 generator=nnsetup([Neuron1]);%[30,30]第一个30代表第一层有30个神经元,这是要与train_x的维度相同的,最后一个30也是要与train_x的维度相同。 discriminator=nnsetup([Neuron1 1]);%[30,1]第一个30要与生成器的最后一层的神经元个数相同,最后一层是1个神经元,输出的是每个样本来自于真实数据的概率。 %%参数设置 batch_size=m; %batchsize表示一次输入多少样本进行训练,因为我的数据量少,直接全部输入进去就行了。 iteration=1000;%迭代多少次,或者说走多少次正向传播。 images_num=m; batch_num=floor(images_num / batch_size); learning_rate=0.0001; %% 8.第八部分, 上正餐,开始训练GAN。 for i=1:iteration kk=randperm(images_num); images_real=train_x; noise=unifrnd(0,1,m,Neuron1); generator=nnff(generator,noise); images_fake=generator.layers{generator.layers_count}.a; discriminator=nnff(discriminator,images_fake); logits_fake=discriminator.layers{discriminator.layers_count}.z; discriminator=nnbp_d(discriminator, logits_fake, ones(batch_size,1)); generator= nnbp_g(generator, discriminator); generator=nnbp_g(generator, discriminator); generator=nnapplygrade(generator,learning_rate); %%%%%%%开始更新判别器 generator=nnff(generator,noise); images_fake=generator.layers{generator.layers_count}.a; images=[images_fake;images_real]; discriminator=nnff(discriminator,images); logits=discriminator.layers{discriminator.layers_count}.z; logits = discriminator.layers{discriminator.layers_count}.z; labels = [zeros(batch_size,1); ones(batch_size,1)];%预定义一个标签,前面的数据是0,后面的是1,也进行了拼接。 discriminator = nnbp_d(discriminator, logits, labels);%logits与真实的标签进行对比, discriminator = nnapplygrade(discriminator, learning_rate);%更新了辨别器网络的权重。 %----输出loss损失 c_loss(i,:) = sigmoid_cross_entropy(logits(1:batch_size), ones(batch_size,1));%这是生成器的损失 d_loss (i,:)= sigmoid_cross_entropy(logits, labels);%判别器的损失 end figure() plot(images_real) hold on plot(images_fake) legend('实际值','GAN生成值')
二、运行效果
三、获取方式
后台私信回复“27”即可获得下载链接 ,源码分享,放心使用。