资源简介
matlab 手动搭建一个单隐层神经网络用于识别手写数字,实现:标准化数据集,计算损失函数,梯度下降法,反向传播,加深对神经网络的理解。
代码片段和文件信息
function [J grad] = CostFunction(theta_params input_layer_size hidden_layer_size class_num X y lambda)
Theta_input = reshape(theta_params(1:hidden_layer_size * (input_layer_size + 1)) hidden_layer_size (input_layer_size + 1));
Theta_hidden = reshape(theta_params((1 + (hidden_layer_size * (input_layer_size + 1))):end) class_num (hidden_layer_size + 1));
m = size(X 1); % 获取样本长度
J = 0; % 初始化损失能量为0
input_grad = zeros(size(Theta_input)); % 初始化输入层参数
hidden_grad = zeros(size(Theta_hidden)); % 初始化隐藏层参数
%-----------------------------one-hot处理-----------------------------------
% 1 = [1 0 0 0 0 0 0 0 0 0]
% 2 = [0 1 0 0 0 0 0 0 0 0]
% 3 = [0 0 1 0 0 0 0 0 0 0]
% 4 = [0 0 0 1 0 0 0 0 0 0]
% 5 = [0 0 0 0 1 0 0 0 0 0]
% 6 = [0 0 0 0 0 1 0 0 0 0]
% 7 = [0 0 0 0 0 0 1 0 0 0]
% 8 = [0 0 0 0 0 0 0 1 0 0]
% 9 = [0 0 0 0 0 0 0 0 1 0]
% 0 = [0 0 0 0 0 0 0 0 0 1]
%--------------------------------------------------------------------------
Y=[];
E = eye(class_num);
for i=1:class_num
index = find(y==i);
Y(index:) = repmat(E(i:)size(index1)1);
end
%--------------------------------------------------------------------------
%--------------------------------计算前向传输--------------------------------
X = [ones(m 1) X];
hidden_return = sigmoid(X * Theta_input‘); % 第二层(隐藏层)激活函数输出
hidden_return = [ones(m 1) hidden_return]; %
output = sigmoid(hidden_return * Theta_hidden‘);% 输出层激活函数输出
temp1 = [zeros(size(Theta_input1)1) Theta_input(:2:end)]; % 常数项不参与正则化
temp2 = [zeros(size(Theta_hidden1)1) Theta_hidden(:2:end)]; % 常数项不参与正则化
temp1 = sum(temp1 .^2); temp2 = sum(temp2 .^2); % 计算每个参数的平方和
cost = Y .* log(output) + (1 - Y ) .* log( (1 - output)); % 计算损失成本函数值
J = -1 / m * sum(cost(:)) + lambda/(2*m) * ( sum(temp1(:))+ sum(temp2(:)) );
delta_1 = zeros(size(Theta_input));
delta_2 = zeros(size(Theta_hidden));
for t = 1:m
inputdata = X(t:)‘; % 获取像素值
hidden_input = Theta_input * inputdata; % 计算隐藏层输入值
hidden_output = sigmoid(hidden_input); % 计算隐藏层输出值
hidden_output = [1 ; hidden_output]; % 隐藏层增加常数项
output_input = Theta_hidden * hidden_output; % 计算输出层输入值
output_output = sigmoid(output_input); % 计算输出层输出值
err_output = zeros(class_num1); % 构建输出层误差
% for k = 1:class_num
% err_output(k) = output_output(k) - (y(t) == k); % 每类别输出层误差
% end
err_output=output_output-Y(t:)‘;
hidden_err = Theta_hidden‘ * err_output; % 隐藏层误差
hidden_err = hidden_err(2:end) .* sigmoidGradient(hidden_input); % 隐藏层误差
delta_2 = delta_2 + err_output * hidden_output‘;
delta_1 = delta_1 + hidden_err * inputdata‘;
end
Theta_input_temp = [zeros(size(Theta_input1)1) Theta_input(:2:end)];
Theta_hidden_temp = [zeros(size(Theta_hidden1)1) Theta_hidden(:2:end)];
in
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6148 2017-12-21 09:52 Neural Networks\.DS_Store
文件 3408 2018-01-20 15:54 Neural Networks\CostFunction.m
文件 2753 2018-01-20 23:21 Neural Networks\CostFunctionEx.m
文件 18453870 2017-12-21 09:52 Neural Networks\datas\Data.mat
文件 7511764 2017-12-21 09:52 Neural Networks\datas\MNIST.mat
文件 3727 2017-12-21 09:52 Neural Networks\fmin_theta.m
文件 1540 2018-01-20 23:23 Neural Networks\main.m
文件 943 2018-01-20 23:01 Neural Networks\mainEx.m
文件 2942 2017-12-21 09:52 Neural Networks\my-image\2.jpeg
文件 3226 2017-12-21 09:52 Neural Networks\my-image\5.jpeg
文件 2079 2017-12-21 09:52 Neural Networks\my-image\7.jpeg
文件 646 2017-12-21 09:52 Neural Networks\num2test.m
文件 423 2017-12-21 09:59 Neural Networks\online_test.m
文件 793 2017-12-21 09:52 Neural Networks\plotnumData.m
文件 585 2017-12-21 09:52 Neural Networks\predict.m
文件 114 2018-01-18 21:06 Neural Networks\randWeights.m
文件 183 2018-01-18 21:12 Neural Networks\randWeightsEx.m
文件 56 2017-12-21 09:52 Neural Networks\sigmoid.m
文件 92 2017-12-21 09:52 Neural Networks\sigmoidGradient.m
目录 0 2017-12-21 09:52 Neural Networks\datas
目录 0 2017-12-21 09:52 Neural Networks\my-image
目录 0 2018-01-20 23:30 Neural Networks
----------- --------- ---------- ----- ----
25995292 22
相关资源
- 北京大学模式识别作业&答案
- Deep Learning 经典文章与代码matlab
- 神经网络理论与matlab7实现PDF电子书
- Matlab 深度学习工具箱
- matlab 深度学习工具箱
- 卷积神经网络CNN算法实现 matlab
- 《MATLAB 神经网络43个案例分析》 含源
- 《MATLAB神经网络43个案例分析》源代码
- MATLAB神经网络43个案例分析。目录+代
- 使用神经网络中的ART算法实现对标签
- 《MATLAB机器视觉与深度学习实战》 配
- 模式识别PCA NMF LDA GMM算法代码
- 基于maltab的银行卡号识别
- Phil Kim-2017Matlab_DeepLearning电子书
- 深度学习神经网络包含CNN和DEN神经网
- 手写数字识别,基于BP神经网络,ma
- 深度学习的matlab代码
- 基于matlab BP网络车牌照识别.zip
- (周开利)神经网络模型及其MATLAB仿
- 静态手势识别系统MATLAB和DSP代码
- 深度学习模型-稀疏自编码matlab算法,
- 2 BP神经网络车牌识别.zip
- 《MATLAB 神经网络30个案例分析》程序
- 模糊神经网络MATLAB仿真程序(讨论)
- 2020研究生数学建模——大雾能见度估
- 《神经模糊预测控制及其MATLAB实现》
- matlab+BP神经网络 手写体数字识别训练
- googlenet.7z
- MNIST手写字 Matlab程序,包含BP和CNN程序
- Matlab深度学习工具箱 deep learning tool
评论
共有 条评论