Numpy从入门到精通——Numpy运算符|批处理

news2024/12/23 9:56:37

这个专栏名为《Numpy从入门到精通》,顾名思义,是记录自己学习numpy的学习过程,也方便自己之后复盘!为深度学习的进一步学习奠定基础!希望能给大家带来帮助,爱睡觉的咋祝您生活愉快! 这一篇介绍《Numpy从入门到精通—— Numpy运算符|批处理》

在前面几次分享中,我们学习了Numpy的矩阵生成,数据读存、获取、广播机制等,这一次我们进一步学习Numpy的算数运算符以及批处理

文章目录

  • 一.星乘(*)
  • 二. 点乘(.)
  • 三.批处理

一.星乘(*)

星乘也称为对应元素相乘、逐元素相乘,对应的函数为np.multiply(),输出的大小与相乘数组或者矩阵的大小一致:

  • numpy.multiply(x1,x2,/,out=None,*,where=True,casting=“same_kind”,order=“k”,dtype=None,subok=True[,signature,extobj])

下面用程序进行说明:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :numpy学习 
@File    :task_14.py
@IDE     :PyCharm 
@Author  :咋
@Date    :2023/4/21 20:41 
"""
import numpy as np
A = np.array([[1, 2], [-1, 4]])
B = np.array([[2, 0], [3, 4]])
print(A * B)
#或另一种表示方法
print(np.multiply(A, B))

输出为:

[[ 2  0]
 [-3 16]]
[[ 2  0]
 [-3 16]]

可以看到,np.multiply()与*效果是一样的,numpy不仅可以对数组进行对应的元素相乘,也可以与单一的数值进行运算。运算时,numpy数组的每一个元素与标量进行运算,这也是广播机制的应用。下面通过代码进行说明:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :numpy学习 
@File    :task_15.py
@IDE     :PyCharm 
@Author  :咋
@Date    :2023/4/21 20:51 
"""
import numpy as np
A = np.array([1,2,3,4,5,6])
print(A*2.0)
print(A/2.0)

输出为下:

[ 2.  4.  6.  8. 10. 12.]
[0.5 1.  1.5 2.  2.5 3. ]

推而广之,一些激活函数也是可以基于np的广播机制特性的。

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :numpy学习 
@File    :task_16.py
@IDE     :PyCharm 
@Author  :咋
@Date    :2023/4/21 20:56 
"""
import numpy as np
X = np.random.rand(2, 3)


def sigmoid(x):
    return 1 / (1 + np.exp(-x))


def relu(x):
    return np.maximum(0, x)


def softmax(x):
    return np.exp(x) / np.sum(np.exp(x))


print("输入参数X的形状:", X.shape)
print("激活函数sigmoid输出形状:", sigmoid(X).shape)
print("激活函数relu输出形状:", relu(X).shape)
print("激活函数softmax输出形状:", softmax(X).shape)

输出为:

输入参数X的形状: (2, 3)
激活函数sigmoid输出形状: (2, 3)
激活函数relu输出形状: (2, 3)
激活函数softmax输出形状: (2, 3)

二. 点乘(.)

点积运算又被称为内积运算,一般格式为:

  • np.dot(a,b,None)

我们直接通过程序来看dot的具体用法:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :numpy学习 
@File    :task_17.py
@IDE     :PyCharm 
@Author  :咋
@Date    :2023/4/21 21:04 
"""
import numpy as np
X1=np.array([[1,2],[3,4]])
X2=np.array([[5,6,7],[8,9,10]])
X3=np.dot(X1,X2)
print(X3)

输出为:

[[21 24 27]
 [47 54 61]]

和线性代数计算过程是一样的,具体计算过程可以看下面这张图:
在这里插入图片描述
从上面这个图我们也能看出来,如果X1与X2进行点积运算,X1的第二维度与X2的第一维度要是一样的。点积运算在神经网络中的使用是非常频繁的,在神经网络中输入I与权重矩阵W之间的运算就是点积运算:
在这里插入图片描述
这里的sigmoid就是激活函数,对应的公式上面已经写过,这里就不再赘述。

三.批处理

数据是深度学习的基础,在深度学习中,数据量往往是比较大的。所有我们通常要采用批处理的方式,比如说随机梯度方法(SGD),就是选用一批数据求模型的损失。如何把大数据分成多个批次呢?可以采用如下步骤:

  • 得到数据集
  • 随机打乱数据
  • 定义批大小
  • 批处理数据集

我们依然是直接通过代码来进行说明:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :numpy学习 
@File    :task_18.py
@IDE     :PyCharm 
@Author  :咋
@Date    :2023/4/21 21:21 
"""
import numpy as np
#生成10000个形状为2X3的矩阵
data_train = np.random.randn(10000,2,3)
#这是一个3维矩阵,第一个维度为样本数,后两个是数据形状
print(data_train.shape)
#(10000,2,3)
#打乱这10000条数据
np.random.shuffle(data_train)
#定义批量大小
batch_size=100
#进行批处理
# print(np.sum(data_train))
# x_batch_sum =0
for i in range(0,len(data_train),batch_size):
    x_batch_sum=np.sum(data_train[i:i+batch_size])
print("第{}批次,该批次的数据之和:{}".format(i,x_batch_sum))

输出:

(10000, 2, 3)9900批次,该批次的数据之和:21.031025152935968

分批次输出,可以防止内存直接爆满,batch-size也是深度学习优化模型的一个重要参数!
在这里插入图片描述

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

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

相关文章

Android 项目编译 Gradle 配置说明

前言 Android 的Gradle版本更新换代还是很快的,更新换代除了功能上变得强大之外,还会出现很多意料之外的Bug,而很多开发者会被折磨的死去活来,下面我们来看有哪些编译配置。 正文 首先要知道什么时候会进行编译,有以下…

Efficient Attention: Attention with Linear Complexities

paper: https://arxiv.org/pdf/1812.01243.pdf 这里写目录标题 一、引言二、方法实现高效注意力的解释效率优势 三、实验消融插入层键的维度骨干架构 一、引言 注意机制在计算机视觉和自然语言处理中有着广泛的应用。最近的工作开发了点积注意力机制,并将其应用于…

MobileBERT模型简单介绍

目录 一、概要 二、深入扩展 2.1 知识蒸馏方法 2.2 渐进式知识迁移 一、概要 MobileBERT 可以看作一个“瘦身”后的BERT-large模型,其使用了瓶颈结构(Bottleneck Structure),并且在自注意力和前馈神经网络的设计上也有一定的改…

图形化之家谱遗传系统

1:废话不多说先看成果。 QQ录屏20230418163603 QQ录屏20230418163732 2:解析: 1:不知道会有多少个孩子,所以我们用二叉树的孩子兄弟结构 typedef struct treeNode {char name[100];//名字int generation;//辈分char g…

Pytorch深度学习笔记(五)反向传播算法

推荐课程:04.反向传播_哔哩哔哩_bilibili 1.为什么要使用反向传播算法 简单模型可以使用解析式更新w 复杂模型,如图,输入矩阵为5*1矩阵,等一层权重矩阵H1为6*5矩阵,则需要30个解析式,第二层权重矩阵H2为6…

1685_Excel的几种脚本处理方式

全部学习汇总: GreyZhang/python_basic: My learning notes about python. (github.com) 做个小结,实际上是写的我自己学习的过程。 关于Excel的处理方式很多,我也不会那么多,在这里我只想写一下我自己接触过的。大致是三种方式&a…

Pikachu靶场(Cross-Site Scripting)

Cross-Site Scripting 反射型xss(get)源代码修改限制地址栏 反射性xss(post)存储型xssDOM型xss-xxss盲打xss之过滤xss之htmlspecialcharsxss之href输出xss之js输出 Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突&#xff0c…

《花雕学AI》25:用文字画出你的非凡想象力,微软新Bing带你体验DALL-E的神奇

你有没有想过用文字来画画?这听起来可能很不可思议,但是现在,你可以通过微软新Bing来实现这个想法。微软新Bing支持AI绘画功能,只要输入一句话,就能生成一幅图像。这个功能是由DALL-E驱动的,DALL-E是一个能…

mybatis03-多表查询、延迟加载、逆向工程

mybatis03 mybatis 多表联查 背景产生:开发过程中单表查询 不能满足项目需求分析功能。对于复杂业务来说,关联的表有几张,甚至几十张 并且表与表之间的关系相当复杂。目的:实现复杂业务功能,必须进行多表查询&#x…

开发插件JFormDesigner(可视化GUI编程)的使用与注册-简单几步即可完成

开发插件JFormDesigner(可视化GUI编程)的使用与注册 获取链接:1.JFormDesigner获取2.记录插件下载路径3.使用zcj注册4.生成license5.打开idea进行注册 获取链接: https://pan.baidu.com/s/1N9ua2p3BpiMIARCEewRxIw?pwd4e9a 提取…

WebSocket 通信 —— 浏览器原生支持

在上一篇内容中讲到使用Node中的Net核心模块完成socket通信,那么本篇就继续来讲关于浏览器原生支持的 WebSocket ,实现通信。那么什么是 WebSocket ? 它是HTML5开始提供的一种浏览器与服务器间进行全双工(全双工:同时进行双向传输…

激活函数(Activation Function)及十大常见激活函数

目录 1 激活函数的概念和作用 1.1 激活函数的概念 1.2 激活函数的作用 1.3 通俗地理解一下激活函数(图文结合) 1.3.1 无激活函数的神经网络 1.3.2 带激活函数的神经网络 2 神经网络梯度消失与梯度爆炸 2.1 简介梯度消失与梯度爆炸 2.2 梯度不稳…

asp.net+C#房地产销售系统文献综述和开题报告+Lw

本系统使用了B/S模式,使用ASP.NET语言和SQL Server来设计开发的。首先把所有人分为了用户和管理员2个部分,一般的用户可以对系统的前台进行访问,对一般的信息进行查看,而注册用户就可以通过登录来完成对房屋信息的查看和对房屋的…

动态通讯录——C语言【详解+全部码源】

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏:进阶C语言,本专栏主要讲解数据存储,进阶指针,动态内存管理&a…

企业数据安全能力建设思路

在现代社会,企业数据安全已经成为一个非常重要的话题。企业数据安全能力的建设是每个企业都必须面对和解决的问题。企业数据安全能力建设思路包括以下几个方面: 1. 建立完善的安全管理制度 企业要建立完善的安全管理制度,包括信息安全政策、…

[入门必看]数据结构5.1:树的基本概念

[入门必看]数据结构5.1:树的基本概念 第五章 树与二叉树5.1 树的基本概念知识总览5.1.15.1.2 树的定义和基本术语5.1.3 树的性质 5.1.15.1.2 树的定义和基本术语树的基本概念树形逻辑结构的应用结点之间的关系描述结点、树的属性描述有序树 V.S 无序树树 V.S 森林 5…

软考 软件设计师上午题uml

UML uml事物依赖关系关联聚合组合关系泛化关系实现关系关联多重度UML类图UML 类图的概念对象图用例图包含关系扩展关系泛化关系用例图概念交互图通信图![在这里插入图片描述](https://img-blog.csdnimg.cn/d62c6f00d57a48949e3306461f3fbe25.png)通信图例子状态图状态图的状态和…

# 生成器

生成器 生成器是什么? 生成器(generator)是一种用来生成数据的对象。它们是普通函数的一种特殊形式,可以用来控制数据的生成过程。 生成器有什么优势? 使用生成器的优势在于它们可以在生成数据的同时控制数据的生成过程…

android ContentObserver实时监测媒体图片增删改,java(1)

android ContentObserver实时监测媒体图片增删改,java&#xff08;1&#xff09; <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name"android.permission.READ_MEDIA_IMAGES" /> impl…

七、JS07使用 jQuery 操作 DOM

七、使用 jQuery 操作 DOM 7.1 DOM 操作 7.1.1 DOM 操作分类 使用 JavaScript 操作 DOM 时分为三类——DOM Core(核心)、HTML-DOM 和 CSS-DOMjQuery 操作也同样分为这三类下面主要回顾以下 JavaScript 中的 DOM 操作 JavaScript 中的 getElementById()、getElementByTagName…