吴恩达机器学习作业五:神经网络正向传播

数据集在作业一

正向传播

正向传播(Forward Propagation)是神经网络计算过程中的核心步骤,指的是将输入数据通过神经网络的各层依次传递,最终得到输出结果的过程。

核心原理

在神经网络中,信息从输入层流入,经过一个或多个隐藏层的处理,最终从输出层流出。每一层的计算都依赖于上一层的输出,具体包括两个步骤:

  1. 加权求和:将上一层神经元的输出与当前层的权重进行加权求和,并加上偏置项(bias)。

  2. 激活函数处理:将加权求和的结果通过激活函数(如 sigmoid、ReLU 等)进行非线性变换,得到当前层神经元的输出。

我们下面要用正向传播的一个全连接神经网络来实现手写数字识别

前面我们提到了如果是处理非线性关系时,我们可以用高次特征项来进行拟合,但是神经网络(这里是全连接层),我们要使用激活函数,从而达到非线性变换的效果。可以数学推导一下,如果只是多个加权求和叠加,那么从输入到输出也还只是加权求和,无法做到非线性的,所以我们采用了非线性函数(激活函数)

代码

读取数据集

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
import scipy.io as sio
"""使用前馈神经网络来实现手写数字识别"""

# 读取数据集
data = sio.loadmat("ex3data1.mat")
X = data['X']
y = data['y']
# 权重
theta=sio.loadmat("ex3weights.mat")
# print(theta.keys())
theta1=theta['Theta1']
theta2=theta['Theta2']
# print(theta1.shape,theta2.shape)(25, 401) (10, 26)
y=y.flatten()

激活函数

python 复制代码
def sigmoid(z):
    return 1/(1+np.exp(-z))

前向传播

python 复制代码
def forward_propagate(X,theta1,theta2):
    m=X.shape[0]
    a1=np.insert(X,0,1,axis=1)
    z2=np.dot(a1,theta1.T)
    a2=sigmoid(z2)
    a2=np.insert(a2,0,1,axis=1)
    z3=np.dot(a2,theta2.T)
    a3=sigmoid(z3)
    return a3

# a3=forward_propagate(X,theta1,theta2)
# print(a3.shape)

这里a1是输入层,z2和a2是隐藏层,在隐藏层和输出层中要先进行加权求和在进行激活函数,z3和a3是输出层(这里是对应数字的各自概率)。

预测

python 复制代码
# 预测
def predict(X,theta1,theta2):
    a3=forward_propagate(X,theta1,theta2)
    return np.argmax(a3,axis=1)+1

y_pred=predict(X,theta1,theta2)

accuracy=np.mean(y_pred==y)
print(accuracy)##0.9752

总结

读取数据集------激活函数------构建模型(全连接神经网络)------运行并预测。

这里大家如果没有对应的基础,不知道这些参数是怎么得来的,在下一个作业反向传播中会进行讲解,其实和线性回归,逻辑回归中的参数训练类似。

相关推荐
minhuan1 分钟前
构建AI智能体:六十六、智能的边界:通过偏差-方差理论理解大模型的能力与局限
人工智能·方差·偏差·方差-偏差分解·方差-偏差权衡·模型调优
星期天要睡觉3 分钟前
深度学习——基于 ResNet18 的图像分类训练
pytorch·python·机器学习
润 下6 分钟前
C语言——深入解析C语言指针:从基础到实践从入门到精通(四)
c语言·开发语言·人工智能·经验分享·笔记·程序人生·其他
koo36410 分钟前
李宏毅机器学习笔记25
人工智能·笔记·机器学习
余俊晖12 分钟前
如何让多模态大模型学会“自动思考”-R-4B训练框架核心设计与训练方法
人工智能·算法·机器学习
hzp66613 分钟前
Magnus:面向大规模机器学习工作负载的综合数据管理方法
人工智能·深度学习·机器学习·大模型·llm·数据湖·大数据存储
hui梦呓の豚17 分钟前
YOLO系列目标检测算法全面解析
人工智能·计算机视觉·目标跟踪
一水鉴天25 分钟前
整体设计 逻辑系统程序 之27 拼语言整体设计 9 套程序架构优化与核心组件(CNN 改造框架 / Slave/Supervisor/ 数学工具)协同设计
人工智能·算法
Y_Chime28 分钟前
从AAAI2025中挑选出对目标检测有帮助的文献——第二期
人工智能·目标检测·计算机视觉
佛喜酱的AI实践1 小时前
Claude Code配置指南已死,这个一键安装工具才是未来
人工智能·claude