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

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

第3章 初识JAX

JAX是Google开发的高性能数值计算和自动微分库,提供自动微分
即时编译和矢量并行化三大功能。JAX选择将函数编程的思想贯穿
始终。
简单来说,JAX库是GPU加速,支持自动微分的NumPy,NumPy则是
Python之下的基础数值运算库。

3.1 数组的创建

数组的创建是程序书写的开始,在NumPy中,数组的类型是ndarray,
而在JAX中,数组则名为DeviceArray,二者除了名称不同,其使用
方式具有极大的相似之处。

3.1.1 数组的性质

我们可以把标量视为零维数组,将向量视为一维数组,将矩阵视为
二维数组。
数组的性质包括且不仅限于如下的内容:
类型,维度,形状,元素个数,元素的数据类型。

3.1.2 数组的创建函数

zeros(shape[,dtype]) 生成填满0的多维数组

3.1.3 随机数组的创建

exponential(key[,shape,dtype])  从指数分布中采样指定
形状的随机数组。

3.2 数组的修改

在完成数组的创建后,绝大多数数组的形状的修改都将由数组的重
排、扩展、及索引来完成.

3.2.1 多维数组的重排

reshape(arr,newshape[,order]) 在不改变数组的数据情况下,
改变数组的形状。

3.2.2 多维数组的扩展

repeat(a,repeats[,axis,total_length]) 以重复每个元素
的方式扩展数组。

3.2.3 多维数组的索引

我们可以用方括号[]在数组中索引一个元素,可以用正整数或者是
负整数。还可以用切片操作获得数组的一个部分,语法为[start:end:step]
我们还可以用数组作为索引,来索引多维数组。

3.2.4 越界的行为的处理

在索引元素之前,需要对代码进行必要的检查。

3.2.5 异地更新

原地更新是指直接修改原数组。
异地更新是指修改原数组的副本。

3.3 数组的运算

语义广播在数组的运算中处于基础的地位。

3.3.1 语义的广播

广播描述了在运算的过程中,程序对不同的形状的数组的处理规则。
语义广播的使用条件,当两个数组进行运算时,程序由右向左比较
它们的形状,如果在一个维度上,两个数组的长度相等或者是其中一个
的长度为1,我们认为这两个数组在这个维度上是兼容的。如果两个数组
(从右向左)在每一个维度上都是兼容的,则认为它们之间可以进行
语义广播。在两个数组的维度不同时,将维度小的数组进行向左扩展。


3.3.2 数组的运算

数组的运算的最基础的运算是逐元素进行运算。逐元素运算是一元函
数接受数组作为参数,返回一个新数组。等价于将原本的一元函数作用
于数组中的每个元素。
同理,二元标量运算符同样可以应用于两个数组上,得到一个新的数组。

3.3.3 线性代数的运算

线性代数的运算包括且不仅限于如下的函数:
det(a) 计算方阵a的行列式
eig(a) 计算方阵a的特征值和(右)特征向量
inv(a) 计算方阵a的逆

3.3.5 爱因斯坦的求和约定

对张量的某些维度进行求和操作,也被称为张量的缩并。
例如,两个一维张量的缩并相当于两个矢量的点乘,一个
二阶张量的两个维度之间的缩并相当于矩阵的求迹。
所谓的爱因斯坦求和约定,是一种用于化简数学符号的约定。
这个约定是指在等号的同侧,相同的指标代表求和;在等号
的异侧相同的指标用于标记不同的等式,不作求和处理。

3.4 使用蒙特卡罗的方法估计圆周率

蒙特卡罗方法也称为统计模拟方法,是一种以概率统计理论为指导
的数值计算方法,由美国洛斯阿拉莫斯国家实验室的三位科学家
约翰冯诺依曼,斯坦乌拉姆,尼克梅特罗波利斯共同发明。在20世纪
40年代的曼哈顿计划中,出于保密的需要,冯诺依曼建议将这种方法
以摩纳哥的蒙特卡罗赌场命名。

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

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

相关文章

android pdf框架-4,分析barteksc/PdfiumAndroid源码1

关于barteksc/PdfiumAndroid barteksc/PdfiumAndroid 这个源码被,引用的次数是比较高的,flutter的几个pdf库也是引用它.它使用福昕的开源sdk.福昕阅读器我早期的时候用,交互一般,渲染也不如mupdf,有些pdf中文显示不了,体积小点. barteksc/PdfiumAndroid已经是一个完善的sdk了,…

微信小程序开发(实战案例):本地生活 - 列表页面开发(动态渲染处理)、节流防抖(节流阀应用)

文章目录 本地生活 - 列表页面开发一、将九宫格分类换成navigator组件二、动态设置商品列表页的 title三、动态渲染商品列表页面四、上拉触底加载数据五、添加Loading加载效果六、数据加载节流防抖处理 本地生活 - 列表页面开发 导入我们上次写的 本地生活 - 首页开发的项目 运…

leetcode 50. Pow(x, n)

目录 函数定义: 2. 处理特殊情况: 3. 处理负指数: 4. 处理偶数指数: 5. 处理奇数指数: 时间复杂度 空间复杂度 class Solution { public:double myPow(double x, int n) {if(n 0){return 1;}if(n 1) return x…

C#设计模式---工厂方法模式

24种常用设计模式 创建型模式:抽象工厂、生成器、工厂方法、原型、单例; 结构型模式:适配器、桥接、组合、装饰、外观、享元、代理; 行为模式:责任链、命令、迭代器、中介者、备忘录、观察者、状态、策略、模板方法…

二分算法(c++版)

二分的本质是什么? 很多人会认为单调性是二分的本质,但其实其本质并非单调性,只是说,有单调性的可以进行二分,但是有些题目没有单调性我们也可以进行二分。其本质其实是一个边界问题,给定一个条件&#xf…

golang的map是如何扩容的【重点】

具体内容参考链接 https://zhuanlan.zhihu.com/p/616979764 Golang的map就是使用哈希表作为底层实现,map 实际上就是一个指针,指向hmap结构体。 Go 语言中的 map 在扩容时,会重新分配更大的内存空间,并将原有的键值对重新哈希到新…

【机器学习基础】一元线性回归(适合初学者的保姆级文章)

🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习 欢迎订阅!后面的内容会越来越有意思~ 💡往期推荐: 【机器学习基础】机器学习入门(1) 【机器学习基…

python 函数-03-参数

入参不需要指定类型,只需要参数名称即可 【特殊性,区别于java c#等】传参两种方式: 位置参数 如 cube_volume(1, 2, 3) 关键字参数 如 cube_volume(width 1, height 2, length 3)参数为可变对象,如当参数为列表时,在…

趣学贝叶斯统计:条件概率(1)

前言 到目前为止,我们只讨论了独立事件的概率。当一个事件的结果不影响另一个事件的结果时,这两个事件就是独立事件。例如,掷硬币时出现正面并不影响掷骰子是否会掷出6点。计算独立事件的概率要比计算非独立事件的概率容易得多,但…

ES6 字符串面试题

如何判断字符串 “Hello, World!” 是否以 “Hello” 开头? 答案: const str "Hello, World!"; const startsWithHello str.startsWith("Hello"); console.log(startsWithHello); // 输出 true如何判断字符串 “Hello, World!” …

C 标准库 - <stdlib.h>

简介 <stdlib.h> 头文件定义了四个变量类型、一些宏和各种通用工具函数。 库变量 下面是头文件 stdlib.h 中定义的变量类型&#xff1a; 序号变量 & 描述1size_t2wchar_t3div_t4ldiv_t 库宏 下面是头文件 stdlib.h 中定义的宏&#xff1a; 序号宏 & 描述1…

conntrack-tools 内核依赖,

1 内核依赖 You require a Linux kernel version > 2.6.18. Connection Tracking System. CONFIG_NF_CONNTRACKm CONFIG_NF_CONNTRACK_IPV4m CONFIG_NF_CONNTRACK_IPV6m (if your setup supports IPv6) nfnetlink: the generic messaging interface for Netfilter. CONF…

【深度学习:标记数据】为医生标记数据缓解疼痛

【深度学习&#xff1a;标记数据】为医生标记数据缓解疼痛 问题实验结果结论 我开始在物理学方面进行学术研究&#xff0c;但在第一年就退学了&#xff08;抱歉&#xff0c;休学了&#xff09;我的博士学位&#xff0c;并在定量金融领域做了很长一段时间。因此&#xff0c;在我…

宝塔面板安装了mysql5.7和phpMyadmin,但是访问phpMyadmin时提示502 Bad Gateway

操作流程截图如下&#xff1a; 原因是没有选择php版本 选择php版本 下一页找到phpMyAdmin&#xff0c;选择设置 目前只有纯净态&#xff0c;说明没有php环境&#xff0c;前去安装php环境 点击安装&#xff0c;选择版本&#xff0c;这里选择的是7.4版本&#xff0c;编译安…

创建者模式(Builder Pattern):构造复杂对象的通用解决方案

文章目录 **一、技术背景与应用场景****为何使用创建者模式&#xff1f;****典型应用场景包括但不限于&#xff1a;** **二、创建者模式定义与结构****三、使用步骤举例**四、优缺点分析总结 一、技术背景与应用场景 创建者模式是一种对象创建型设计模式&#xff0c;它通过将复…

Apache Doris 发展历程、技术特性及云原生时代的未来规划

文章目录 每日一句正能量前言作者介绍Apache Doris 特性极简架构高效自运维高并发场景支持MPP 执行引擎明细与聚合模型的统一便捷数据接入Apache Doris 极速 1.0 时代极速列式内存布局向量化的计算框架Cache 亲和度虚函数调用SIMD 指令集 稳定多源基于云原生向量数据库Milvus 的…

基于ZYNQ的PCIE高速数据采集卡的设计(三)硬件设计

采集卡硬件设计 3.1 引言 采集卡的硬件设计是实现采集功能的基础&#xff0c;良好的硬件设计可以使采集功能更容 易实现&#xff0c;方便软件开发。本章基于第二章的硬件设计方案来详细介绍采集卡硬件设计。 包括载卡和子卡的芯片的选型、配置和具体电路的设计。载卡和子卡…

蓝桥杯《修剪灌木》

题目描述 爱丽丝要完成一项修剪灌木的工作。有 N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晚会修剪一棵灌木&#xff0c;让灌木的高度变为 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始&#xff0c;每天向右修剪一棵灌木。当修剪了最右侧的灌木后&#xff0c;她会…

【程序员必备技能】Git入门

目录 &#x1f308;前言&#x1f308; &#x1f4c1; Git的概念 &#x1f4c2; 版本控制 &#x1f4c2; 集中式 和 分布式 ​ &#x1f4c1; 创建和配置本地仓库 &#x1f4c1; 理解工作区&#xff0c;暂存区&#xff0c;版本库 &#x1f4c1; Git的基本操作 &#x1f4c2;…

JMeter实现接口自动化测试

一、JMETER的环境搭建 参考&#xff1a;https://www.cnblogs.com/qmfsun/p/4902534.html 二、JMETER的汉化 临时汉化方法&#xff1a;打开jmeter&#xff0c;options-->choose language-->选择语言 可以根据自己的需要选择简体中文或者繁体中文&#xff0c;如图&#xf…