深度学习【向量化(array)】

为什么要向量化

在深度学习安全领域、深度学习练习中,你经常发现在训练大量数据时,深度学习算法表现才更加优越,所以你的代码运行的非常快至关重要,否则,你将要等待非常长的时间去得到结果。所以在深度学习领域向量化是一个关键技巧。

正常虽然可以通过for循环完成一些基本的操作,但是这样会导致运行效率大打折扣,这时候运用矩阵运算,引入Numpy,可以一定程度上提高代码的运行效率。

要记住,经验法则是当你编写新的网络时,或者你做的只是回归,那么一定要尽量避免for循环,能不用就不用。如果你可以使用内置函数,或者找出其他方法去计算循环,通常会比直接用for循环更快。

what is Numpy?

1.一个开源的Python科学计算库
2.使用Numpy可以方便的使用数组,矩阵进行计算
3.包含线性代数,傅里叶变换,随机数生成等大量函数

Numpy 的优点

代码更简洁:Numpy直接以数组,矩阵为粒度(一个单元)计算并且支持大量的数学函数,而python需要用for循环从底层实现
性能更高效:Numpy的数组存储效率和输入输出计算性能,比python使用list或者嵌套list好很多注:Numpy的数据存储和python原生的list是不一样的注:Numpy的大部分代码都是c语言实现的,这是Numpy比纯python代码高效的原因

这里主要介绍一下array

array一维数组

一般来说,array基本是所有程序语言都有的一种基础线性结构,元素以特定的顺序存储在一段连续的内存中。Python的array只能存储数值和字符。

要使用array之前需要先引入,操作如下

    #从numpy中引用arrayimport numpy as npnp.array()

创建方式如下

    # 需要提供一个类型代码字符来指示存储何种元素# 以及一个可迭代对象来填充元素array.array(typecode[, initializer])# array所有的类型代码字符print(array.typecodes)bBuhHiIlLqQfd# 创建一个存储整型的arrayarr = array('i', [1,2,3,4,5,6])

类型码(typecode)有以下几种

array二维数组

使用python的list和嵌套list创建一维的array和二维的array

创建方式如下

# 创建一个一维的数组,也就是python的单元素list
x=np.array([1,2,3,4,5,6,7,8])
# 创建一个二维的数组,也就是python的嵌套list
X=np.array([[1,2,3,4],[5,6,7,8]])

关于array的便捷函数

<1>.使用arange创建数字序列

arange([起始值(取得到)],[终止值(取不到)],[步长],dtype=None)

print(np.arange(10))#创建一个0-10的一维数组(取不到10)
print(np.arange(2,10,2))#创建一个2-10,步长为2的一维数组(取不到10)

运行结果

<2>使用ones创建单位数组

np.ones(shape,dtype=None,order=‘C’)
shape:int or tuple of ints Shape of the new array . eg:(2,3) or 2
dtype:数据类型,默认的是自己从输入的数据自动获得
order:有"C"和"F"两个选项,分别代表,行优先和列优先,在计算机内存中的存储元素的顺序print(np.ones(10))#创建一个一行十列的单位数组
print(np.ones((2,3)))#创建一个二行三列的单位数组

运行结果

<3>使用ones_like创建与某个数组形状相同的单位数组

print(np.ones_like(x))#创建一个和x相同形状的单位数组
print(np.ones_like(X))#创建一个和X相同形状的单位数组
print(np.ones_like([2,3]))#创建一个和[2,3]数组形状相同的单位数组
print(np.ones_like([[1,2,3],[4,5,6]]))#创建一个和[[1,2,3],[4,5,6]]数组形状相同的单位数组

运行结果

<4>使用zeros创建全是0的数组

print(np.zeros(3))#创建一个一行三列的零数组
print(np.zeros((2,4)))#创建一个二行四列的零数组

运行结果

<5>使用full创建指定值的数组

print(np.full(4,9))#创建一个一行四列,元素为9的数组
print(np.full((2,3),9))#创建一个二行三列,元素为9的数组

运行结果

<6>使用random模块生成随机数的数组

print(np.random.randn())#生成一个随机数
print(np.random.randn(3))#随机生成一个一行三列的数组,这也生成的秩为1的数组,既不是行向量也不是列向量。尽量不用这种数据结构
print(np.random.randn(3,1))print(np.random.randn(2,3))#随机生成一个二行三列的数组
print(np.random.randn(2,3,4))#随机生成一个三维的数组,有两块三行四列的数组组成

运行结果

np.random.rand():

该函数旨在输出0~1的正态分布随机数

其参数可以是1个,也可以是多个。

函数内部可以不写参数,默认为1,输出1个随机数。

np.random.rand(d0,d1,d2……dn) 
注:使用方法与np.random.randn()函数相同 
作用: 
通过本函数可以返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1),不包括1。 

还有许多函数,本文无法完全涉及,用到再查即可。

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

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

相关文章

C/S医学检验LIS实验室信息管理系统源码 医院LIS源码

LIS系统即实验室信息管理系统。LIS系统能实现临床检验信息化&#xff0c;检验科信息管理自动化。其主要功能是将检验科的实验仪器传出的检验数据经数据分析后&#xff0c;自动生成打印报告&#xff0c;通过网络存储在数据库中&#xff0c;使医生能够通过医生工作站方便、及时地…

如何卸载干净 IDEA(图文讲解)

更新时间 2022-12-20 11:一则或许对你有用的小广告 星球 内第一个项目&#xff1a;全栈前后端分离博客项目&#xff0c;演示地址&#xff1a;Weblog 前后端分离博客, 1.0 版本已经更新完毕&#xff0c;正在更新 2.0 版本。采用技术栈 Spring Boot Mybatis Plus Vue 3.x Vit…

Android开发基础:对话框,Toast,Notification的使用 选项菜单,上下文菜单,弹出式菜单的使用

目录 一&#xff0c;Android提示消息 1.提示消息的形式 2.对话框 &#xff08;1&#xff09;默认对话框的创建步骤 &#xff08;2&#xff09; 自定义对话框的创建步骤 3.Toast 4.Notification 二&#xff0c;菜单 1.选项菜单 OptionsMenu 2.上下文菜单 ContextMenu …

【python】在pycharm创建一个新的项目

双击打开pycharm,选择create new project 选择create,后进入项目 右键项目根目录,选择new一个新的python file 随意命名一下 输入p 然后后面就会出现智能补全提示,此时轻敲一下tab,代码就写好了,非常的方便 右键执行一下代码,下面两个直接运行和debug运行都是可以的 小结 …

Leetcode - 周赛392

目录 一&#xff0c;3105. 最长的严格递增或递减子数组 二&#xff0c;3106. 满足距离约束且字典序最小的字符串 三&#xff0c;3107. 使数组中位数等于 K 的最少操作数 四&#xff0c;3108. 带权图里旅途的最小代价 一&#xff0c;3105. 最长的严格递增或递减子数组 本题求…

基于Whisper语音识别的实时视频字幕生成 (二): 在线实时字幕

Whisream Whistream&#xff08;微流&#xff09;是基于Whisper语音识别的的在线字幕生成工具&#xff0c;支持rtsp/rtmp/mp4等视频流在线语音识别 1. whistream介绍 whistream将在whishow基础上引入whisper进行在线语音识别生成视频字幕 2. 使用 python&#xff1a; pyth…

Python爬取链家数据

技术&#xff1a;requests、BeautifulSoup、SQLite 解析页面&#xff0c;存数据到SQLite数据库&#xff0c;到时候你用navicat导出成csv什么的就行 1、确定城市 以天津为例&#xff0c;网页是https://tj.lianjia.com/ershoufang/rs/ 把上面这些地区名字复制 2、爬取数据内容…

题目 2694: 蓝桥杯2022年第十三届决赛真题-最大数字【暴力解法】

最大数字 原题链接 &#x1f970;提交结果 思路 对于每一位&#xff0c;我我们都要尽力到达 9 所以我们去遍历每一位, 如果是 9 直接跳过这一位 如果可以上调到 9 我们将这一位上调到 9 &#xff0c;并且在a 中减去对应的次数 同样的&#xff0c;如果可以下调到 9&#xff0c;我…

MongoDB的安装和使用

1.MongoDB 安装 1.1 基于Docker安装 docker run --restartalways -d --name mongo -v /opt/mongodb/data:/data/db -p 27017:27017 mongo:4.0.6 1.2 客户端工具使用 MongoDB Compass | MongoDB 2.MongoDB 使用 2.1 引用依赖包 <dependency><groupId>org.sprin…

YOLOV5 分类:利用yolov5进行图像分类

1、前言 之前介绍了yolov5的目标检测示例,这次将介绍yolov5的分类展示 目标检测:YOLOv5 项目:训练代码和参数详细介绍(train)_yolov5训练代码的详解-CSDN博客 yolov5和其他网络的性能对比 yolov5分类的代码部分在这 2、数据集准备 yolov5分类的数据集就是常规的摆放方式…

TypeScript 中文错误消息

TypeScript 本身支持多语言显示错误消息&#xff0c;默认会追随操作系统或开发工具选择一个显示错误消息的语言。如果我们想强制让其显示某种语言可以如下设置&#xff0c;例如强制显示中文 命令行输入如下 npx tsc --locale zh-CN 对于 vsCode 中的错误消息可如下设置 设置…

[C++][算法基础]模拟散列表(哈希表)

维护一个集合&#xff0c;支持如下几种操作&#xff1a; I x&#xff0c;插入一个整数 x&#xff1b;Q x&#xff0c;询问整数 x 是否在集合中出现过&#xff1b; 现在要进行 N 次操作&#xff0c;对于每个询问操作输出对应的结果。 输入格式 第一行包含整数 N&#xff0c;…

macU盘在电脑上读不出来 u盘mac读不出来怎么办 macu盘不能写入 Tuxera NTFS for Mac免费下载

对于Mac用户来说&#xff0c;使用U盘是很常见的操作&#xff0c;但有时候可能会遇到Mac电脑无法读取U盘的情况&#xff0c;这时候就需要使用一些特定的工具软件来帮助我们解决问题。本文就来告诉大家macU盘在电脑上读不出来是怎么回事&#xff0c;u盘mac读不出来怎么办。 一、m…

结构型模式--2.桥接模式【大海贼时代】

1. 组建海贼团 哥尔D罗杰是罗杰海贼团船长。他最终征服了伟大航路&#xff0c;完成了伟大航路的航行&#xff0c;被人们成为海贼王。后来得了绝症&#xff0c;得知自己命不久矣&#xff0c;主动自首并在东海罗格镇被处刑。临死前罗杰的一句话“想要我的宝藏吗&#xff1f;想要…

期货量化交易软件:MQL5 中的范畴论 (第 15 部分)函子与图论

概述 在上一篇文章中&#xff0c;我们目睹了前期文章中涵盖的概念&#xff08;如线性序&#xff09;如何视作范畴&#xff0c;以及为什么它们的“态射”在与其它范畴相关时即构成函子。在本文中&#xff0c;我们赫兹量化软件将阐述来自前期文章中的概括&#xff0c;即通过查看…

【示例】MySQL-SQL语句优化

前言 本文主要讲述不同SQL语句的优化策略。 SQL | DML语句 insert语句 插入数据的时候&#xff0c;改为批量插入 插入数据的时候&#xff0c;按照主键顺序插入 大批量插入数据的时候&#xff08;百万&#xff09;&#xff0c;用load指令&#xff0c;从本地文件载入&#x…

实现鼠标在页面点击出现焦点及大十字星

近段时间&#xff0c;在完成项目进度情况显示时候&#xff0c;用户在操作鼠标时候&#xff0c;显示当鼠标所在位置对应时间如下图所示 代码实现步骤如下&#xff1a; 1.首先引用 jquery.1.7.js 2.再次引用raphael.js 3.然后引用graphics.js 4.最后引用mfocus.js 其中mfocu…

【UE Niagara】让粒子发出声音

步骤 首先新建一个Niagara发射器&#xff0c;使用Empty模板。打开后先添加一个“Spawn Burst Instantaneous”模块&#xff0c;设置发射数量为3 可以添加一个“Shape Location”使得每个粒子的初始位置不同 添加一个“Play Audio”模块&#xff0c;然后设置一个播放的音效 对N…

一个比 Celery 轻量好用的异步任务工具

文章目录 1、RQ安装2、RQ基本概念2.1、Queue2.2、Job2.3、Worker 3、RQ 高级用法3.1、自定义任务失败处理3.2、任务依赖关系3.3、定时任务 4、RQ web 界面5、查看任务结果6、RQ 与 celery 对比7、总结 Python RQ&#xff08;Redis Queue&#xff09;是一个轻量级的异步任务队列…

电脑文件名乱码,数据恢复有高招!

在日常使用电脑的过程中&#xff0c;突然遭遇文件名乱码的情况&#xff0c;确实让人头疼不已。原本井井有条的文件目录&#xff0c;一下子变得杂乱无章&#xff0c;文件名变成了一堆无意义的乱码字符。这种情况不仅影响了文件的正常使用&#xff0c;还可能导致重要数据的丢失。…