吴恩达机器学习练习4:神经网络学习(损失函数和正则化)

这篇博客介绍了如何使用反向传播算法训练神经网络,特别是在手写数字识别中的应用。内容包括数据可视化、神经网络模型的构建、未正则化的损失函数计算以及正则化损失函数的修正。通过示例展示了损失函数的求解过程,从for循环到向量化表达,最后呈现了完整代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BP神经网络其信号是前向传播的,而在其计算其误差时是反向传播的。
本练习小节是执行反向传播算法并且将其应用到手写数字的识别当中。
1、神经网路
在前面的训练中,可以根据提供了权重值来预测手写数字。在本练习中将使用反向传播算法来为神经网络学习权重参数。
(1)数据的可视化

load('ex4data1.mat');
m = size(X, 1);
% Randomly select 100 data points to display
sel = randperm(size(X, 1));
sel = sel(1:100);
displayData(X(sel, :));

导入手写字体数字,可以得到矩形X和矢量y,其中矩阵X的维度为5000×400,其中5000表示为5000个样本,400表示为每个样本的像素为20×20,矢量y为X中每个样本对应的标签值(y = 1-10)。
在这里插入图片描述
m = size(X, 1)为样本的个数;
sel = randperm(size(X, 1))将数据1-m随机进行排序,返回为矢量;
sel = sel(1:100)选取随机序列中的前100的值;
displayData(X(sel, ?)显示样本中第sel个样本图像。
在这里插入图片描述
(2)神经网络模型
本小节使用的神经网络如下:

在这里插入图片描述

input_layer_size  = 400;  % 20x20 Input Images of Digits
hidden_layer_size = 25;   % 25 hidden units
num_labels = 10;          % 10 labels, from 1 to 10   
                          % (note that we have mapped "0" to label 10)

由于每个样本有400个特征参数,则神经网路的输入层神经个数为400,其输入分类为10个,则设置其输出神经个数为10。

设置其隐藏层神经元个数为25。
(3)损失函数
在没有进行正则化前,神经网络的损失函数为:
在这里插入图片描述

function [J grad] = nnCostFunction(nn_params, .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值