【MATLAB】BP神经网络玩耍

【MATLAB】BP神经网络玩耍

尝试训练一个简单的加法器

% 加法器
clear;
clc;

N = 300;
X=1:1:N;

Y1=zeros(2,N);
T = zeros(1,N);
for i = 1:N
    Y1(:,i) = [rand , rand];
    T(i) = Y1(1,i) + Y1(2,i) ;
    %T(i) = rand;
end

net=newff(Y1,T,[5,2]);

net.trainParam.epochs=100000;
net.trainParam.goal=0.000001;
LP.lr=0.1;

net=train(net,Y1,T);%开始训练

% 创建测试集
for i = 1:N
    Y1(:,i) = [rand , rand];
    T(i) = Y1(1,i) + Y1(2,i) ;
    %T(i) = rand;
end
Y2=sim(net,Y1);%获取实际输出
scatter(X,T,'fill');
hold on
scatter(X,Y2,'r','fill');

加法器

测试效果好

尝试诱骗神经网络

让训练集的输入和输出无关

% 骗子
clear;
clc;

N = 300;
X=1:1:N;

Y1=zeros(2,N);
T = zeros(1,N);
for i = 1:N
    Y1(:,i) = [rand , rand];
    % T(i) = Y1(1,i) + Y1(2,i) ;
    T(i) = rand;
end

net=newff(Y1,T,[5,2]);

net.trainParam.epochs=100000;
net.trainParam.goal=0.000001;
LP.lr=0.1;

net=train(net,Y1,T);%开始训练

Y2=sim(net,Y1);% 这里换做训练集获取实际输出

scatter(X,T,'fill');
hold on
scatter(X,Y2,'r','fill');

在这里插入图片描述

发现骗子数据无法进行学习。或许这体现了该算法的一定“智能”。

尝试手写数字识别

数据的来源与读取

这里使用经典的 MNIST 数据集:http://yann.lecun.com/exdb/mnist/

参照 https://blog.csdn.net/u010936286/article/details/80667138 读取数据

训练

因为电脑性能限制,故只选取少量数据进行训练。

参照 https://www.bilibili.com/video/BV1bx411M7Zx 选取16 16的隐含层

clear;
clc;
load('test_x.mat')
load('train_y.mat')
test_x = test_x';
train_y = train_y';
net=newff(test_x,train_y,[16,16]);

net.trainParam.epochs=100;
net.trainParam.goal=0.01;
LP.lr=0.1;
N = 5000 % 使用数据集的个数,最大60000
net=train(net,test_x(:,1:N),train_y(:,1:N));%开始训练

输出

检验

通过画图的形式简单地探索影响准确性的因素

s = 28291; % 0~60000随便选
t = test_x(:,s);
Y=sim(net,t);%获取实际输出
[~,I] = max(Y,[],1);
I = I-1
[~,I_true] = max(train_y(:,s),[],1);
I_true = I_true - 1
% 画图
s_image = zeros(28,28);
for i = 1:28
    s_image(i,:) = t((i-1)*28+1:i*28);
end
imshow(s_image,[0,255])
  • 识别正确的一个例子:

识别正确的一个例子

  • 识别错误的一个例子:

识别错误的一个例子

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

框架主义者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值