【自学记录】深度学习入门——基于Python的理论与实现(第4章 神经网络的学习)

4.2 损失函数

#损失函数
#均方误差
def mean_squared_error(y,t):return 0.5*np.sum((y-t)**2)
#交叉熵误差
def _cross_entropy_error(y,t):delta=1e-7return -np.sum(t*np.log(y+delta))#交叉熵损失函数
def cross_entropy_error(y,t):if y.ndim==1:t=t.reshape(1,t.size)y=y.reshape(1,y.size)# 把one-hot-vector 转化为正确的【10000,】 索引if t.size==y.size:t=t.argmax(axis=1)batch_size=y.shape[0]#一批有多少,就是y有多少行return -np.sum(np.log(y[np.arange(batch_size),t]+1e-7))/batch_size

4.3数值微分

#数值法求导数、偏导数   
def f(x):return x**2
def f2(x):return x[0]**2+x[1]**2#数值法求导数(单个)
def numerical_diff(f,x):h=1e-4return (f(x+h)-f(x-h))/(2*h)#求f2在点(3,4)处x1的偏导的中间函数
def f22(x):return x**2+4**2 x=np.array([3.0,4.0])#数值法求y=x**2在x=3下的导数
y=numerical_diff(f,3)
print("x**2在3的导数为"+str(y))#数值法求单个y2=x1**2+x2**2在(3,4)下x1的偏导 
# f22是f(x,4),先把x2带入 
y2=numerical_diff(f22,3)
print("x1**2+x2**2在(3,4)的x1偏导数为"+str(y2))

4.4 梯度

############4.4梯度#################
#数值法求梯度 即(dx1,dx2),一起计算x0、x1的偏导
def numerical_gradient(f,x):h=1e-4#0.0001grad=np.zeros_like(x)#生成和x相同的数组for idx in range(x.size):#如X[3,4],X不一定是一个数,可能是F(x1,x2),x1,x2两点处的偏导都要求tmp_val=x[idx]# f(x+h)x[idx]=tmp_val+h#x[3+h,4]fxh1=f(x)#F(3+h,4)#f(x-h)x[idx]=tmp_val-hfxh2=f(x)grad[idx]=(fxh1-fxh2)/(2*h) #[F(3+h,4)-F(3-h,4)]/(2*h)x[idx]=tmp_val#恢复X为X【3,4return grad    
#数值法求个y2=x1**2+x2**2在(3,4)的偏导数
y2=numerical_gradient(f2,x)
print("x1**2+x2**2在(3,4)的偏导数为"+str(y2))#梯度下降
#lr 学习率  学习率过大,会发散成一个很大的值,学习率过小,基本没怎么更新就结束了
#step_num梯度法的重复次数
def gradient_descent(f,init_x,lr=0.01,step_num=100):x=init_xfor i in range(step_num):grad=numerical_gradient(f,x)#求此点的数值梯度x-=lr*grad #X每一次都在更新return x    
#求F2的最小值
init_x=np.array([-3.0,4.0])
min_x=gradient_descent(f2,init_x,lr=0.1,step_num=100)
min_y=f2(min_x)
print("F2mim=F2"+str(min_x)+"="+str(min_y))#与实际最小值(0,0)很接近

求简单神经网络的梯度

import sys, os
sys.path.append(os.pardir)  # 为了导入父目录中的文件而进行的设定
import numpy as np
from study03_NeuralNetwork import softmax
from study04_NeuralNetworkStudy import cross_entropy_error,numerical_gradientclass simpleNet:def __init__(self):self.W=np.random.randn(2,3)#初始化def predict(self,x):return np.dot(x,self.W)def loss(self,x,t):z=self.predict(x)y=softmax(z)loss=cross_entropy_error(y,t)return lossnet=simpleNet()
#print(net.W)
x=np.array([0.6,0.9])p=net.predict(x)
print("predict_p="+str(p))t=np.array([0,0,1])#正确解的标签loss=net.loss(x,t)
print("loss="+str(loss))f = lambda w: net.loss(x, t) 
dW=numerical_gradient(f,net.W)
print("dW="+str(dW))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/91510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Lua学习笔记:require非.lua拓展名的文件

前言 本篇在讲什么 Lua的require相关的内容 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 ★提高阅读体验★ 👉 ♠…

uni-app 之 短信验证码登录

uni-app 之 短信验证码登录 image.png image.png <template><view style"width: 100%; display: flex; flex-direction:column; align-items:center;"><view style"width: 300px; margin-top: 100px;"><!-- // --><!-- 1&#…

uni-app:实现密码框内容展示与隐藏

效果 代码 <template><view class"container"><view class"item_left"><view>密码</view><view class"eye_position" taptoggleShowPassword><image :srceye v-ifisShowPassword /><image :srcey…

DBRichEdit关联ClientDataSet不能保存的Bug

ClientDataSet的最大好处&#xff0c;就是建立能内存表&#xff0c;特别DataSnap三层运用中&#xff0c;主要使用ClientDataSet与运程的服务器中的数据表&#xff0c;建立读取存贮关系。 在软件的使用中&#xff0c;总有客户反映&#xff0c;一些数据不能保存。 发现都是使用DB…

Springboot中使用拦截器、过滤器、监听器

一、Servlet、Filter&#xff08;过滤器&#xff09;、 Listener&#xff08;监听器&#xff09;、Interceptor&#xff08;拦截器&#xff09; Javaweb三大组件&#xff1a;servlet、Filter&#xff08;过滤器&#xff09;、 Listener&#xff08;监听器&#xff09; Spring…

nodejs在pdf中绘制表格

需求 之前我已经了解过如何在pdf模板中填写字段了 nodejs根据pdf模板填入中文数据并生成新的pdf文件https://blog.csdn.net/ArmadaDK/article/details/132456324 但是当我具体使用的时候&#xff0c;我发现我的模板里面有表格&#xff0c;表格的长度是不固定的&#xff0c;所…

Bluespec SytemVerilog 握手协议接口转换

01、引言 由于接口控制信号上的差异&#xff0c;要实现Bluespec SystemVerilog(BSV)生成的代码和外部Verilog代码之间的正确交互是一件比较麻烦同时容易出错的事情。在BSV中, 模块之间的交互都是基于Action或ActionValue这两类method完成。下图展示了使用BSV设计的某一模块的接…

git 误删分支恢复方法

在使用git的过程中&#xff0c;因为人为因素造成分支&#xff08;commit)被删除&#xff0c;可以使用以下步骤进行恢复。 首先用以下步骤创建一个新分支&#xff0c;修改一些文件后删除&#xff0c;以便进行恢复。 1.创建分支 abc git branch abc2.查看分支列表 git branch …

深度学习在图像识别领域还有哪些应用?

深度学习在图像识别领域的应用非常广泛&#xff0c;除了之前提到的图像分类、目标检测、语义分割和图像生成&#xff0c;还有其他一些应用。 图像超分辨率重建&#xff1a;深度学习技术可以用于提高图像的分辨率&#xff0c;例如通过使用生成对抗网络&#xff08;GAN&#xff…

RK3588安装python3.11(ubuntu18.04)

1.前言 看到rknn_toolkit_lite2更新了python3.11的安装包&#xff0c;马上更新一下 2.RK3588安装python3.11 Ubuntu上编译Python 3.11&#xff0c;您可以按照以下步骤进行操作&#xff1a; (1) 准备编译环境 在开始之前&#xff0c;确保您的系统已安装必要的编译工具和依赖项…

【JavaEE】HTML

JavaWeb HTML 超文本标记语言 超文本&#xff1a;文本、声音、图片、视频、表格、连接标记&#xff1a;有许许多多的标签组成 vscode开发工具搭建 因为我使用的IDEA是社区版&#xff0c;代码高亮补全缩进都有些问题&#xff0c;使用vscode是最好的选择~ 安装 Visual Stu…

聊聊并发编程——并发容器和阻塞队列

目录 一.ConcurrentHashMap 1.为什么要使用ConcurrentHashMap&#xff1f; 2.ConcurrentHashMap的类图 3.ConcurrentHashMap的结构图 二.阻塞队列 Java中的7个阻塞队列 ArrayBlockingQueue&#xff1a;一个由数组结构组成的有界阻塞队列。 LinkedBlockingQueue&#xf…

jvm笔记

好处&#xff1a; 跨平台 内存管理机制&#xff0c;垃圾回收功能 数组下标越界检查 多态 名词解释&#xff1a; jvm java虚拟机&#xff0c;是java程序的运行环境 jre jvm基础类库 jdk jre编译工具 javase jdkide工具 javaee javase应用服务器 jvm的内存结构&#xff1a; 程序…

FPGA 图像缩放 千兆网 UDP 网络视频传输,基于RTL8211 PHY实现,提供工程和QT上位机源码加技术支持

目录 1、前言版本更新说明免责声明 2、相关方案推荐UDP视频传输--无缩放FPGA图像缩放方案我这里已有的以太网方案 3、设计思路框架视频源选择ADV7611 解码芯片配置及采集动态彩条跨时钟FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择 UDP协议栈UDP视频数据组包U…

Flink中的状态一致性

1.概念 一致性其实就是结果的正确性。对于分布式系统而言&#xff0c;从不同节点读取时总能得到相同的值&#xff1b;而对于事务而言&#xff0c;是要求提交更新操作后&#xff0c;能够读取到新的数据。 有状态的流处理&#xff0c;内部每个算子任务都可以有自己的状态。对于流…

Source Insight 工具栏图标功能介绍

这篇文章并不介绍 Source Insight 的具体使用方法&#xff0c;这类教程网上有很多&#xff0c;这里只分析 Souce Insight 工具栏图标的功能。 文章目录 Source Insight 简介Souce Insight 工具栏文件操作新建&#xff08;CtrlN&#xff09;打开&#xff08;CtrlO&#xff09;保…

Java 实现遍历一个文件夹,文件夹有100万数据,获取到修改时间在2天之内的数据

目录 1 需求2 实现1&#xff08;第一种方法&#xff09;2 实现2 &#xff08;推荐使用这个&#xff0c;快&#xff09;3 实现3&#xff08;推荐&#xff09; 1 需求 现在有一个文件夹&#xff0c;里面会一直存数据&#xff0c;动态的存数据&#xff0c;之后可能会达到100万&am…

【PyTorch实战演练】使用Cifar10数据集训练LeNet5网络并实现图像分类(附代码)

文章目录 0. 前言1. Cifar10数据集1.1 Cifar10数据集下载1.2 Cifar10数据集解析 2. LeNet5网络2.1 LeNet5的网络结构2.2 基于PyTorch的LeNet5网络编码 3. LeNet5网络训练及输出验证3.1 LeNet5网络训练3.2 LeNet5网络验证 4. 完整代码4.1 训练代码4.1 验证代码 0. 前言 按照国际…

紫光同创FPGA图像视频采集系统,基于OV7725实现,提供工程源码和技术支持

目录 1、前言免责声明 2、设计思路框架视频源选择OV7725摄像头配置及采集动态彩条HDMA图像缓存输入输出视频HDMA缓冲FIFOHDMA控制模块HDMI输出 3、PDS工程详解4、上板调试验证并演示准备工作静态演示动态演示 5、福利&#xff1a;工程源码获取 紫光同创FPGA图像视频采集系统&am…

mysql面试题7:MySQL事务原理是什么?MySQL事务的隔离级别有哪些?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL事务原理是什么? MySQL事务的原理是基于ACID(原子性、一致性、隔离性、持久性)特性来实现的,具体原理如下: Atomicity(原子性):事务…