jax可微分编程的笔记(4)

jax可微分编程的笔记(4)

第四章 JAX的微分运算

我们从最小二乘法说起,构建出深度学习的轮廓,并最终基于
MINST手写数据集训练了一个简单的全连接的神经网络.

4.1 微分操作的语法

本节给出复杂积分的运算和隐函数求导这两个例子.

4.1.1 JAX中的梯度操作

from jax imprt grad
def f(x,y):
  return (x+y)**2

df1=grad(f,argnums=0)
x,y=1.0,2.0
print(f(x,y))
print(df1(x,y))

4.1.2 JAX中的雅可比矩阵

在JAX中,雅可比—矢量乘法对应的函数是jvp,它接受一个函数
fun,输入变量的主值primals以及输入变量的切值tangents,
返回函数作用后的输出变量的主值和切值。

4.1.3 JAX中的黑塞矩阵

例如,在截断牛顿CG算法中,我们可以利用黑塞矩阵寻找
凸函数的极小值,抑或是探索神经网络在某点处的曲率。

黑塞矩阵的获得的示例代码如下:
from jax import jacfwd,jacrev

def hessian1(f): return jacfwd(jacfwd(f))
def hessian2(f): return jacfwd(jacrev(f))
def hessian3(f): return jacrev(jacfwd(f))
def hessian4(f): return jacrev(jacrev(f))

上述代码中4个函数的结果相同,但是性能上第2个最好。

4.1.4 自定义算符及隐函数求导

例如 f(x)=ln(1+exp(x)) 它的导函数是f'(x)=exp(x)/(1+exp(x)),
在x的值比较大时,我们期待函数的导函数趋于1,但是由于这里存在
大数相除的情况,程序容易由于数值上溢或者是数值不稳定而产生
错误,为此,我们把导函数变形为 f'(x)=1-1/(1+exp(x))

4.2 梯度下降

梯度下降算法是自动微分在实际问题中最为成功的应用之一。
它在深度学习中的地位是本质性的。

4.2.1 从最小二乘法说开去

最小二乘法的本质,是通过待定函数中的参量以撑开一个函数的空
间,并在这个计算机可以表示的狭窄空间中,寻找并确定一组最优
的参数。全连接神经网络是最小二乘法在高维问题上的推广。
最小二乘法通常用于数据的线性拟合。

4.2.2 寻找极小值

假设有一个标量的函数f(x),函数在某点增长最快的方向由
delta f给出。我们找极小值,只要按公式 更新x即可。
公式为  第n+1 个 x = 第 n 个 x + a delta f(第n 个 x)

上述公式是梯度下降算法最简单的版本,参数a也称为学习率,
也称为步长,一个公式的重要性往往与它的长度成反比,
这个公式道出了几乎是一切优化算法的核心所在。

在实际的程序设计中,像学习率a这种参数的选取,往往更多
依赖程序调试者的经验。区别模型参数x,像学习率a这样在优化
过程开始前预先设定的参数,也被称为模型的超参数。从本质上
说,模型参数决定了模型本身的状态,而模型的超参数则确定了
选取的模型。

除了依赖经验,人们也针对超参数的优化问题发展了一系列的算法
例如,网络搜索,随机搜索,贝叶斯优化等。

4.2.3 训练及误差

由于待定的参数过少,无法准确地描述原本数据的规律,这种情况
称为欠拟合。当拟合出的多项式只是准确地经过了每一个数据点,
却没有理解数据背后的规律,这样得到的模型,在训练数据集表现
很好,在测试数据集上表现很差,这种情况被称为过拟合。

参数数目小于数据数目被称为参数化不足,参数数目大于数据数目
的情况被称为过参数化。

参数化程度仅仅描述了模型中参数的数目,而拟合与过拟合则描述了
模型的泛化能力。

过拟合函数,在数据点的边缘处出现了猛烈的震荡行为,在数值分析中
这也称为龙格现象。

4.2.4 全连接神经网络

我们通过softmax函数将矢量的分量值映射到[0,1]之间。
在损失函数中,使用交叉熵作为距离函数的定义,来加快
梯度更新速度。每一次更新选取的样本数目称为批大小,也是超参数。

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

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

相关文章

WSL2配置Linux、Docker、VS Code、zsh、oh my zsh(附Docker开机自启设置)

0. 写在前面 本篇笔记来自于UP主麦兜搞IT的合集视频Windows10开发环境搭建中的部分内容 1. 安装WSL2 按照微软官方文档进行操作,当然也可以直接wsl --install 也可以按照 旧版手动安装的步骤 来进行操作 选择安装的是Ubuntu 20.04 LTS 注:WSL默认安装…

抖音视频提取软件使用功能|抖音视频下载工具

我们的抖音视频提取软件是一款功能强大、易于操作的工具,旨在解决用户在获取抖音视频时需要逐个复制链接、下载的繁琐问题。我们的软件支持通过关键词搜索和分享链接两种方式获取抖音视频,方便用户快速找到自己感兴趣的内容。 主要功能模块:…

计算机设计大赛 深度学习图像风格迁移

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习图像风格迁移 - opencv python 该项目较为新颖,适合作为竞赛课题…

pytorch -- CIFAR10 完整的模型训练套路

网络结构 代码 # CIFAR 10完整的模型训练套路: import torch.optim import torchvision from torch import nn from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriterfrom model import *# 1. 准备数据集 train_data torch…

【数据库】mybatis使用总结

文章目录 1. 批量插入、检索<foreach> 1. 批量插入、检索<foreach> <insert id"insertSystemService" >insert into SYSTEMINFO_SERVICE (system_code, service_id, add_user, add_time)values<foreach collection"serviceList" ite…

SSM框架学习笔记07 | Spring MVC入门

文章目录 1. HTTP协议2. Spring MVC2.1. 三层架构2.2. MVC&#xff08;解决表现层的问题&#xff09;2.3. 核心组件 3. Thymeleaf3.1. 模板引擎3.2. Thymeleaf3.3. 常用语法 代码 1. HTTP协议 网址&#xff1a;https://www.ietf.org/ &#xff08;官网网址&#xff09; https:…

C++标准头文件汇总及功能说明

文章目录 algorithmbitsetcctypecerrnoclocalecmathcstdioctimedequeiostreamexceptionfstreamfunctionallimitslistmapiosiosfwdsetsstreamstackstdexceptstreambufcstringutilityvectorcwcharcwctype algorithm algorithm头文件是C的标准算法库&#xff0c;它主要用在容器上。…

dolphinscheduler单机版部署教程

文章目录 前言一、安装准备1. 安装条件2. 安装jdk3. 安装MySQL 二、安装dolphinscheduler1. 下载并解压dolphinscheduler2. 修改配置文件2.1 修改 dolphinscheduler_env.sh 文件2.2 修改 application.yaml 文件 3. 配置mysql数据源3.1 修改MySQL安全策略3.2 查看数据库3.3 创建…

算法训练 安慰奶牛

问题描述&#xff08;题目链接&#xff09; Farmer John变得非常懒&#xff0c;他不想再继续维护供奶牛之间供通行的道路。道路被用来连接N个牧场&#xff0c;牧场被连续地编号为1到N。每一个牧场都是一个奶牛的家。FJ计划除去P条道路中尽可能多的道路&#xff0c;但是还要保持…

使用Docker部署MinIO并结合内网穿透实现远程访问本地数据

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

Pytest教程:一种利用 Python Pytest Hook 机制的软件自动化测试网络数据抓包方法

随着计算机技术的发展&#xff0c;使得网络应用的数量不断增加&#xff0c;因此网络数据抓包成为了网络应用开发和测试中非常重要的一部分。目前&#xff0c;已有许多网络数据抓包工具可供使用&#xff0c;例如 Wireshark、Tcpdump、Fiddler 等&#xff0c;但这些工具需要手动配…

快速排序 quicksort

参考视频&#xff1a; 快速排序算法_哔哩哔哩_bilibili #include <stdio.h>void QuickSort(int *arr,int L,int R); int main() {int arr[3] {1000,2,3};QuickSort(arr,0,2);for(int i 0 ; i < 3 ; i){printf("%d ",arr[i]);}return 0; } void QuickSor…

进程的学习

进程基本概念: 1.进程: 程序&#xff1a;存放在外存中的一段数据组成的文件 进程&#xff1a;是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡 2.进程相关命令: 1.top 动态查看当前系统中的所有进程信息&#xff08;根据CPU占用率排序&#xf…

PHY6222系统级SOC蓝牙芯片低功耗高性能蓝牙MESH组网智能家居

简介 PHY6222是一款支持BLE 5.2功能和IEEE 802.15.4通信协议的系统级芯片&#xff08;SoC&#xff09;&#xff0c;集成了超低功耗的高性能多模射频收发机&#xff0c;搭载32-bit ARM?Cortex?-M0处理器&#xff0c;提供64K retention SRAM、可选128K-8M Flash、96KB ROM以及2…

基于单片机的多关节机械臂抓取系统

摘 要:在农业发展过程中,果实采摘是极度耗费人力的工作。为了减少农业生产过程中的人工成本,将人工智能应用于农业领域将是一种有效手段。基于单片机的控制设计出一款智能抓取系统,拥有六关节高自由度机械臂;爪子采用柔性材料,在加强爪子和果实贴合度的情况下减少对果实的…

微信小程序-人脸检测

微信小程序的人脸检测功能&#xff0c;配合蓝牙&#xff0c;配合ESP32 可以实现一些有趣的玩具 本文先只说微信小程序的人脸检测功能 1、人脸检测使用了摄像头&#xff0c;就必须在用户隐私权限里面声明。 修改用户隐私声明后&#xff0c;还需要等待审核&#xff0c;大概一天 …

十、线性代数二-线性相关

目录 1、线性相关的概念&#xff1a; 2、线性相关的代数表示&#xff1a; 3、线性相关的判断方法&#xff1a; 理解&#xff1a;线性相关指的是 向量组&#xff08;α1&#xff0c;α2&#xff0c;α3&#xff0c;...&#xff09;的 秩是 小于 k 的元数的&#xff0c;即齐次…

重磅福利!攻击面管理平台免费试用

活动时间&#xff1a;2024 年 2 月 26 日至 2024 年 6 月 1 日 活动内容&#xff1a;所有新注册的长亭云图极速版用户&#xff0c;即可享受 1 个月专业版试用&#xff0c;价值 2000 元&#xff01; 活动详情&#xff1a; ● 专业版试用期间&#xff0c;用户可享受以下权益&…

第二节:Vben Admin 登录逻辑梳理和对接后端准备

系列文章目录 上一节&#xff1a;第一节&#xff1a;Vben Admin介绍和初次运行 文章目录 系列文章目录前言项目路径的概述一、登录逻辑梳理loginApi接口查看Mock 二、后端程序对接准备关闭Mock 总结 前言 第一节&#xff0c;我们已经配置了前端环境&#xff0c;运行起来了我们…

文献速递:深度学习--深度学习方法用于帕金森病的脑电图诊断

文献速递&#xff1a;深度学习–深度学习方法用于帕金森病的脑电图诊断 01 文献速递介绍 人类大脑在出生时含有最多的神经细胞&#xff0c;也称为神经元。这些神经细胞无法像我们身体的其他细胞那样自我修复。随着年龄的增长&#xff0c;神经元逐渐死亡&#xff0c;因此变得…