【MATLAB第27期】源码分享 | 基于MATLAB的生成对抗网络GAN回归预测模型

【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”即可获得下载链接 ,源码分享,放心使用。

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
当然可以!以下是一个使用生成对抗网络GAN)对二维数据进行回归预测的简单示例的MATLAB代码: ```matlab % 生成数据 x = linspace(-10, 10, 100)'; y = 2 * x + 5 + randn(size(x)); % 定义生成器网络 generator = [ imageInputLayer([1, 1, 100], 'Normalization', 'none') fullyConnectedLayer(100) leakyReluLayer() fullyConnectedLayer(100) leakyReluLayer() fullyConnectedLayer(2) ]; % 定义判别器网络 discriminator = [ imageInputLayer([1, 1, 2], 'Normalization', 'none') fullyConnectedLayer(100) leakyReluLayer() fullyConnectedLayer(100) leakyReluLayer() fullyConnectedLayer(1) sigmoidLayer() ]; % 定义GAN网络 gan = [ generator discriminator ]; % 设置训练参数 options = trainingOptions('adam', ... 'MaxEpochs', 100, ... 'MiniBatchSize', 64, ... 'Plots', 'training-progress'); % 训练GAN网络 xTrain = reshape(x, [1, 1, numel(x)]); yTrain = reshape(y, [1, 1, numel(y)]); trainNetwork(xTrain, yTrain, gan, options); ``` 这个示例中,我们首先生成了一些带有噪声的二维数据。然后,我们定义了一个简单的生成器网络和一个判别器网络。最后,我们将生成器和判别器组合成一个GAN网络,并使用训练数据对其进行训练。 请注意,这只是一个简单的示例,实际应用中可能需要更复杂的网络结构和调整参数来获得更好的预测效果。此外,还要注意数据的预处理和后处理步骤,以及评估生成器的性能等其他方面。 希望这个示例能对你有所帮助!如果有任何疑问,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风飘摇的土木狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值