NumPy批量处理
在深度学习中,由于源数据都比较大,所以通常需要用到批处理,如利用批量来计算梯度的随机梯度法(SGD)就是一个典型应用。深度学习的计算一般比较复杂,并且数据量一般比较大,如果一次处理整个数据,较大概率会出现资源瓶颈。为了更有效地计算,一般将整个数据集分批次处理。
与处理整个数据集相反的另一个极端是每次只处理一条记录,这种方法也不科学,一次处理一条记录无法充分发挥 GPU 和 NumPy 的平行处理优势。
因此,在实际使用中往往采用批量处理(Mini-Batch)的方法。
如何把大数据拆分成多个批次呢?可采用如下步骤:
下面我们通过一个示例来具体说明:
与处理整个数据集相反的另一个极端是每次只处理一条记录,这种方法也不科学,一次处理一条记录无法充分发挥 GPU 和 NumPy 的平行处理优势。
因此,在实际使用中往往采用批量处理(Mini-Batch)的方法。
如何把大数据拆分成多个批次呢?可采用如下步骤:
- 得到数据集
- 随机打乱数据
- 定义批大小
- 批处理数据集
下面我们通过一个示例来具体说明:
import numpy as np #生成10000个形状为2X3的矩阵 data_train = np.random.randn(2000, 2, 3) #这是一个3维矩阵, 第1个维度为样本数, 后两个是数据形状 print(data_train.shape) #(10000,2,3) #打乱这10000条数据 np.random.shuffle(data_train) #定义批量大小 batch_size=100 #进行批处理 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))运行结果:
(2000, 2, 3)
第0批次,该批次的数据之和:-9.308741645955498
第100批次,该批次的数据之和:32.35559294218453
第200批次,该批次的数据之和:-11.861583953891046
第300批次,该批次的数据之和:17.96593793982428
第400批次,该批次的数据之和:-42.80131768606121
第500批次,该批次的数据之和:-9.716756691902336
第600批次,该批次的数据之和:-19.48607669927781
第700批次,该批次的数据之和:3.486042861593658
第800批次,该批次的数据之和:-14.28531351734479
第900批次,该批次的数据之和:-32.96999579309573
第1000批次,该批次的数据之和:-0.7251674142801512
第1100批次,该批次的数据之和:7.5213947548894575
第1200批次,该批次的数据之和:-10.215508100326279
第1300批次,该批次的数据之和:-12.18791584939293
第1400批次,该批次的数据之和:-29.792363766913127
第1500批次,该批次的数据之和:8.767114966381298
第1600批次,该批次的数据之和:-4.908531806928961
第1700批次,该批次的数据之和:-7.523182605046644
第1800批次,该批次的数据之和:5.147548514201093
第1900批次,该批次的数据之和:41.036640967932996
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算