吴恩达机器学习课后作业-04神经网络

2024-08-24 09:28

本文主要是介绍吴恩达机器学习课后作业-04神经网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

神经网络

  • 对y进行独立热编码处理(one-hot处理)
  • 序列化权重参数
  • 前向传播
  • 代价函数
  • 反向传播
  • 神经网络优化
  • 可视化隐藏层

在这里插入图片描述

对y进行独立热编码处理(one-hot处理)

在这里插入图片描述

def one_hot_encoder(raw_y):result=[]for i in raw_y:#1-10y_temp=np.zeros(10)#1100向量y_temp[i-1]=1result.append(y_temp)#一行一行写入,每一行都仅有一个1,循环写入5000return np.array(result)结果[[0. 0. 0. ... 0. 0. 1.][0. 0. 0. ... 0. 0. 1.][0. 0. 0. ... 0. 0. 1.]...[0. 0. 0. ... 0. 1. 0.][0. 0. 0. ... 0. 1. 0.][0. 0. 0. ... 0. 1. 0.]]

序列化权重参数

"""
序列化权重参数函数
"""
def seriallize(a,b):return np.append(a.flatten(),b.flatten())
"""
解序列化
"""
def deserialize(theta_serialize):theta1=theta_serialize[:25*401].reshape(25,401)theta2=theta_serialize[25*401].reshape(10,26)return theta1,theta2

theta_serialize=seriallize(theta1,theta2)#序列化
theta1,theta2=deserialize(theta_serialize)#解序列化

前向传播

"""
前向传播函数
"""
def sigmoid(z):return 1/(1+np.exp(-z))
def feed_forward(theta_serialize,x):theta1,theta2=deserialize(theta_serialize)a1 = xz2 = x @ theta1.Ta2 = sigmoid(z2)a2 = np.insert(a2, 0, 1, axis=1)z3 = a2 @ theta2.Th = sigmoid(z3)return a1,z2,a2,z3,h

代价函数

在这里插入图片描述

在这里插入图片描述

"""
代价函数(不带正则化)"""
def cost(theta_serialize,x,y):a1, z2, a2, z3, h=feed_forward(theta_serialize,x)J=-np.sum(y*np.log(h)+(1-y)*np.log(1-h))/len(x)return J
"""
代价函数(正则化)
"""
def reg_cost(theta_serialize,x,y,lamda):sum1=np.sum(np.power(theta1[:,1:],2))sum2 = np.sum(np.power(theta2[:, 1:], 2))reg=(sum1+sum2)*lamda /(2*len(x))return reg+cost(theta_serialize,x,y)

反向传播

在这里插入图片描述


"""
反向传播
无正则化"""
def sigmoid_gradient(z):return sigmoid(z)*(1-sigmoid(z))def gridient(theta_serialize,x,y):theta1,theta2=deserialize(theta_serialize)a1, z2, a2, z3, h=feed_forward(theta_serialize,x)d3=h-yd2=d3@theta2[:,1:]*sigmoid_gradient(z2)D2=(d3.T@a2)/len(x)D1=(d2.T@a1)/len(x)return seriallize(D1,D2)
"""
反向传播
带正正则化"""
def reg_gradient(theta_serialize,x,y,lamda):D=gridient(theta_serialize,x,y)D1,D2=deserialize(D)theta1, theta2 = deserialize(theta_serialize)D1[:,1:]=D1[:,1:]+theta1[:,1:]*lamda/len(x)return seriallize(D1,D2)

神经网络优化


"""
神经网络优化
"""def nn_training(x,y):init_theta = np.random.uniform(-0.5,0.5,10285)res = minimize(fun =reg_cost,x0=init_theta,args= (x,y,lamda),method='TNC',jac = reg_gradient,options = {'maxiter':300})return reslamda=10# print(cost(theta_serialize,x,y))
# print(reg_cost(theta_serialize,x,y,lamda))
#
res = nn_training(x,y)
raw_y = data['y'].reshape(5000,)
_,_,_,_,h = feed_forward(res.x,x)
y_pred = np.argmax(h,axis=1)+1
acc = np.mean(y_pred == raw_y)
print(acc)

可视化隐藏层

"""
可视化隐藏层
"""
def plot_hidden_layer(theta):theta1,_=deserialize(theta)hidden_layer=theta1[:,1:]fig, ax = plt.subplots(figsize=(8, 8), nrows=5, ncols=5, sharey=True, sharex=True)plt.xticks([])plt.yticks([])for r in range(5):for c in range(5):ax[r, c].imshow(hidden_layer[5 * r + c].reshape(20, 20).T, cmap="gray_r")plt.show()

在这里插入图片描述

这篇关于吴恩达机器学习课后作业-04神经网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102090

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识