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

news/2024/9/14 1:34:52/ 标签: 机器学习, 神经网络, 人工智能

神经网络

  • 对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()

在这里插入图片描述


http://www.ppmy.cn/news/1516534.html

相关文章

62.不同路径

62.不同路径 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径&#…

适用于机器人视觉系统的LED光源

工业光源在机器视觉系统中扮演着至关重要的角色,它们直接影响到图像采集的质量以及后续图像处理的效率和准确性。 在自动化生产线上,光源用于辅助机器人进行精确的零件装配。通过提供稳定且高质量的照明,光源帮助机器人更准确地识别和定位零…

Hive SQL

一、基本数据类型 tinyint 1byte 有符号整数 smallint 2byte 有符号整数 int 4byte 有符号整数 bigint 8byte 有符号整数 boolean 布尔类型,true或者false float 单精度浮点数 double 双精度浮点数 decim…

less -- 总结 01 -(增删改查)

less的使用 // 下载插件 easy-less // 新建文件,后缀名是less,会自动生成一个后缀名为css的文件// 浏览器只认识 html css js // less css 是一种动态样式语言,属于 css预处理语言的一种,它使用类似 css的语法,为 cs…

解除 Excel 表格的文档保护全攻略

在日常工作和学习中,我们可能会遇到 Excel 表格被保护无法编辑的情况。别担心,今天就为大家分享几种解除 Excel 表格文档保护的方法。 一、导入腾讯文档 可以将受保护的 Excel 表格上传到腾讯文档。在部分情况下,腾讯文档会尝试自动解除表…

Unity3D UI Toolkit数据动态绑定详解

前言 在Unity3D中,Compute Shader是一种强大的工具,用于在GPU上执行并行计算任务,这些任务通常涉及大量的数据处理,如图像处理、物理模拟等。然而,由于GPU的并行特性,Compute Shader中的线程(也…

归并排序与其例题

一、归并排序的简述 归并排序(Merge Sort)是一种高效的排序算法,采用分治法(Divide and Conquer)的策略。它的基本思想是将一个大的问题分解成多个小问题,然后解决这些小问题,最后将结果合并起…

pnpm快速入门

pnpm快速入门 1.使用pnpm启动项目 pnpm是一个优化的包管理器,它通过锁定工作树的方式来减少依赖安装的开销。要在pnpm环境中启动项目,首先你需要确保已经全局安装了pnpm。然后按照以下步骤操作 克隆项目:如果项目还没有下载,使用…

Linux基础 - yum、rzsz、vim 使用与配置、gcc/g++的详细解说

目录 一、Linux 软件包管理器 yum A.什么是软件包? B.关于rzsz,yum的配置 1.安装 sz,rz 命令: a.执行命令sz可将linux中的文件传输到Windows中 b.执行rz命令可将Windows中的文件传输到linux 2.scp XXX.tgz 用户名另一台lin…

2024最新FL Studio24.1.1.4285破解版中文安装包百度云网盘下载地址

大家好,今天我要给大家介绍一款音乐制作神器——FL Studio 24.1.1.4285中文版。这款软件可是音乐制作界的翘楚,无论是专业人士还是音乐爱好者,都会为它的强大功能和易用性所折服。 我们来看看FL Studio的特点。 这是一款全能型的音乐工作站&…

el-form中使用v-model和prop实现动态校验

如何在Vue的el-form中使用v-model和prop实现动态校验,包括多个变量控制校验、数组循环校验和字段级条件显示。通过实例演示了如何配合rules和自定义验证函数来确保表单的完整性和有效性。 公式: 动态校验项的v-model的绑定值 el-form的属性 :model的值 …

SystemTap(stap)架构和原理介绍,以及脚本编写举例

1 SystemTap简介 SystemTap是一个诊断Linux系统性能或功能问题的开源工具。它允许开发人员和系统管理员深入研究内核甚至用户空间应用程序的行为,以便发现错误状态、性能问题,或者仅仅为了解系统是如何工作的。它使得对运行时的Linux系统进行诊断调式变…

Windows安装Tomcat10

1. 下载Tomcat Tomcat官网 https://tomcat.apache.org/download-10.cgi ​下载安装jdk17 :jdk-17_windows-x64_bin.exe 配置JAVA环境变量 JAVA_HOME:C:\Program Files\Java\jdk-17 PATH:%Java_Home%\bin;%Java_Home%\jre\bin; 2. 设置环境变…

【13.3 python中的高级文件操作】

python中的高级文件操作 在Python中,除了基本的文件读写和目录操作外,还有一些高级的文件和目录操作,如删除文件、重命名文件和目录、以及获取文件的基本信息等。这些操作通常通过os模块和pathlib模块来实现。下面我将详细介绍这些操作&#…

电脑换硬盘怎么全盘克隆?轻松实现数据迁移

随着科技的不断发展,电脑硬盘的存储容量和读写速度也在不断提升。为了获得更好的电脑使用体验,许多用户会选择更换更大容量、更高效的硬盘。然而,在更换硬盘的过程中,一个关键的问题摆在了我们面前:如何将旧硬盘中的所…

物联网---ESP32

物联网---ESP32 一、TCP/IP协议(互联网协议)二、MQTT协议(通信协议)2.1 MQTT基本原理2.2 连接MQTT服务端 三、ESP323.1 ESP介绍3.2 ESP32连接云端3.2.1 ESP32连接WIFI/MQTT3.2.2 OneNET云端 一、TCP/IP协议(互联网协议) TCP/IP是一组用于互联网及其他网络中数据传输的通信协议…

hutool工具类JSONUtil无法映射全是大写的单词,如何解决

背景 在解析第三方接口数据时,发现有的字段数据没有映射到对应的字段上,还有对于有的字段有空格或换行,也会一同存入数据库。 示例 实体类: public class Goods { private String id;private String unit;private Integer US…

HexView 刷写文件脚本处理工具-命令行介绍(八)-文件合并(/MO /MT)

介绍 /MO 和 /MT 参数:用于将一个或多个文件合并到程序的内部数据存储中。文件读取:使用第2.2.1.2.1节中描述的自动检测文件类型机制来读取文件。合并操作类型:需要选择合并操作的类型。可以选择透明模式(/MT)或不透明模式(/MO),两者不能混合使用。透明模式(/MT):加载的文…

黑神话悟空无法登录服务器怎么办

黑神话悟空游戏在登录的时候会遇到无法登录服务器的问题,玩家可以采用一些有效的方法进行解决,其中最主要的措施就是优化网络环境和减少网络干扰。Rak小编为您整理黑神话悟空无法登录服务器如何解决的步骤及注意事项。 优化网络环境 1、当游戏无法登录服…

使用notepad++将shell脚本转为UNIX格式方法(主要差别在换行符)

sh文件尽量在linux上改,因windows和linux换行符不同,在windows上改后,在linux上改可能会出现换行符错误。 windows换行符 linux换行符 windows环境改换行符方法 使用notepad点 编辑–》文档格式转换–》转换未unix格式。 注:tx…