stanford coursera 机器学习编程作业 exercise 3(使用神经网络 识别手写的阿拉伯数字(0-9))

简介:

本作业使用神经网络(neural networks)识别手写的阿拉伯数字(0-9)

关于使用逻辑回归实现多分类问题:识别手写的阿拉伯数字(0-9),请参考:http://www.cnblogs.com/hapjin/p/6085278.html

 

由于逻辑回归是线性分类(它的假设函数是一个线性函数,就是划一条直线,把数据分成了两类。可参考这篇文章中的:②使用逻辑回归来实现多分类问题(one-vs-all) 部分 的图片)

对于一些复杂的类别,逻辑回归就解决不了了。比如下面这个图片中的分类。(无法通过 划直线 将 叉叉 和 圆圈 分开)

 

而神经网络,则能够实现很复杂的非线性分类问题。

对于神经网络而言,同样有一个训练样本矩阵 X,同时还有一个模型参数 Theta 矩阵,通过某种算法将 模型参数矩阵 训练好之后(求出 Theta 矩阵),再使用前向传播算法( feedforward propagation algorithm)(感觉就像是矩阵相乘嘛), 就可以对输入的测试样本进行预测了。

本作业中, 模型参数 Theta 矩阵是已经训练好了的,直接 load 到Matlab中即可。

 

 

整个Matlab实现代码如下:predict.m

 

复制代码
function p = predict(Theta1, Theta2, X)
%PREDICT Predict the label of an input given a trained neural network
%   p = PREDICT(Theta1, Theta2, X) outputs the predicted label of X given the
%   trained weights of a neural network (Theta1, Theta2)

% Useful values
m = size(X, 1);
num_labels = size(Theta2, 1);

% You need to return the following variables correctly 
p = zeros(size(X, 1), 1);% p 是 5000*1向量

% ====================== YOUR CODE HERE ======================
% Instructions: Complete the following code to make predictions using
%               your learned neural network. You should set p to a 
%               vector containing labels between 1 to num_labels.
%
% Hint: The max function might come in useful. In particular, the max
%       function can also return the index of the max element, for more
%       information see 'help max'. If your examples are in rows, then, you
%       can use max(A, [], 2) to obtain the max for each row.
%
% 模拟实现前向传播算法
X = [ones(m, 1) X];
a_super_2 = sigmoid(Theta1 * X');
a_super_2 = [ones(1,m); a_super_2];% add bias unit
a_super_3 = sigmoid(Theta2 * a_super_2);
%==================================
[~,p] = max( a_super_3' ,[], 2 ); % 对样本的结果进行预测,与逻辑回归的预测类似,选取输出的最大值 作为最终的预测结果

% =========================================================================

end
复制代码

 注意:我们正是通过Matlab 的 max 函数,求得矩阵 a_super3 每一行的最大值。将每一行的中的最大值 的索引 赋值给向量p。其中,a_super3 是一个5000行乘10列的矩阵 

向量p就是预测的结果向量。而由于 a_super3 有10列,故 p 中每个元素的取值范围为[1,10],即分别代表了数字 0-9(其中10 表示 0)

 

Matlab 实现结果:

Loading Saved Neural Network Parameters ...

Training Set Accuracy: 97.520000

 

比如对于下面的输入:数字 9

 

Neural NetWork的预测结果如下:


本文转自hapjin博客园博客,原文链接:http://www.cnblogs.com/hapjin/,如需转载请自行联系原作者

相关文章
|
14天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
22天前
|
机器学习/深度学习 数据采集 人工智能
Machine Learning机器学习之贝叶斯网络(BayesianNetwork)
Machine Learning机器学习之贝叶斯网络(BayesianNetwork)
|
1月前
|
机器学习/深度学习 安全 算法
利用机器学习优化网络安全防御机制
【2月更文挑战第23天】 在数字化时代,网络安全已成为维护信息完整性、保障用户隐私的关键挑战。随着攻击手段的日益复杂化,传统的防御策略逐渐显得力不从心。本文通过引入机器学习技术,探索其在网络安全防御中的应用及优化路径。首先,概述了当前网络安全面临的主要威胁和机器学习的基本概念;其次,分析了机器学习在识别恶意行为、自动化响应等方面的潜力;最后,提出了一个基于机器学习的网络安全防御框架,并通过案例分析展示了其有效性。本研究旨在为网络安全领域提供一种创新的防御思路,以适应不断演变的网络威胁。
31 2
|
1月前
|
机器学习/深度学习 自然语言处理 运维
基于机器学习的网络安全威胁检测系统
【2月更文挑战第20天】 在数字化时代,网络安全已成为全球关注的焦点。随着攻击手段的日益复杂化,传统的安全防御措施已不足以应对新型的网络威胁。本文提出了一种基于机器学习的网络安全威胁检测系统,旨在通过智能算法提升威胁识别的准确性和效率。系统结合了多种机器学习技术,包括深度学习、异常检测和自然语言处理,以适应不同类型的网络攻击。经过严格的测试与验证,该系统显示出较传统方法更高的检出率及更低的误报率,为网络安全管理提供了一种新的解决方案。
|
1月前
|
数据采集 机器学习/深度学习 存储
【机器学习】数据清洗之识别缺失点
【机器学习】数据清洗之识别缺失点
23 1
|
10天前
|
SQL 安全 Java
Java安全编程:防范网络攻击与漏洞
【4月更文挑战第15天】本文强调了Java安全编程的重要性,包括提高系统安全性、降低维护成本和提升用户体验。针对网络攻击和漏洞,提出了防范措施:使用PreparedStatement防SQL注入,过滤和转义用户输入抵御XSS攻击,添加令牌对抗CSRF,限制文件上传类型和大小以防止恶意文件,避免原生序列化并确保数据完整性。及时更新和修复漏洞是关键。程序员应遵循安全编程规范,保障系统安全。
|
17天前
|
Python
Python网络编程基础(Socket编程)UDP服务器编程
【4月更文挑战第8天】Python UDP服务器编程使用socket库创建UDP套接字,绑定到特定地址(如localhost:8000),通过`recvfrom`接收客户端数据报,显示数据长度、地址和内容。无连接的UDP协议使得服务器无法主动发送数据,通常需应用层实现请求-响应机制。当完成时,用`close`关闭套接字。
|
27天前
|
缓存 网络协议 数据库连接
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
【底层服务/编程功底系列】「网络通信体系」深入探索和分析TCP协议的运输连接管理的核心原理和技术要点
23 0
|
1月前
|
机器学习/深度学习 算法 流计算
机器学习PAI常见问题之编译包下载不了如何解决
PAI(平台为智能,Platform for Artificial Intelligence)是阿里云提供的一个全面的人工智能开发平台,旨在为开发者提供机器学习、深度学习等人工智能技术的模型训练、优化和部署服务。以下是PAI平台使用中的一些常见问题及其答案汇总,帮助用户解决在使用过程中遇到的问题。
|
1月前
|
机器学习/深度学习 数据采集 安全
基于机器学习的网络安全威胁检测系统
【2月更文挑战第30天】 随着网络技术的迅猛发展,网络安全问题日益凸显,传统的安全防御机制面临新型攻击手段的挑战。本文提出一种基于机器学习的网络安全威胁检测系统,通过构建智能算法模型,实现对异常流量和潜在攻击行为的实时监测与分析。系统融合了深度学习与行为分析技术,旨在提高威胁识别的准确性与响应速度,为网络环境提供更为坚固的安全防线。

热门文章

最新文章