深度学习篇---张量数据流动处理

devtools/2025/2/5 0:44:50/

文章目录

  • 前言
  • 第一部分:张量
    • 张量的基本概念
      • 1.维度
        • 标量(0维)
        • 向量(1维)
        • 矩阵(2维)
        • 三维张量
      • 2.形状
    • 张量运算
      • 1.基本运算
        • 加法
        • 减法
        • 乘法
        • 除法
      • 2.广播
      • 3.变形
      • 4.转置
      • 5.切片
      • 6.拼接
      • 7.矩阵分解
      • 8.梯度运算:
    • 深度学习框架中的张量运算
      • 1.自动求导
      • 2.硬件加速
      • 3.高度优化
  • 第二部分:数据流动与处理
    • 1. 磁盘(硬盘或固态硬盘)
      • 读取数据
      • 写入数据
    • 2. 内存(RAM)
      • 加载程序和数据
      • 数据交换
    • 3. 缓存
      • CPU缓存
      • 磁盘缓存
    • 4.数据流动的具体过程
      • 程序执行
      • 数据读写
      • 缓存一致性
      • 内存管理
      • 磁盘I/O
  • 总结


前言

以上就是今天要讲的内容,本文仅仅简单介绍了深度学习中的张量以及数据在计算机中的流动处理过程。


第一部分:张量

深度学习中,张量(Tensor)是一种多维数组,它是深度学习框架中的基本数据结构张量运算是指在这些多维数组上进行的各种数学运算。以下是张量运算的详细介绍:

张量的基本概念

1.维度

维度(Rank):张量的维度指的是它的阶数,即张量具有的维度的数量。例如:

标量(0维)

标量(0维张量):一个数字,如5。

向量(1维)

向量(1维张量):一维数组,如[1, 2, 3]。

矩阵(2维)

矩阵(2维张量):二维数组,如[[1, 2], [3, 4]]。

三维张量

3维张量:可以理解为立方体数组,如 [[[1], [2]], [[3], [4]]]。
以此类推,可以有更高维的张量

2.形状

形状(Shape):张量的形状是指每个维度的大小。例如,一个形状为(2, 3)的矩阵有两行三列。

张量运算

1.基本运算

加法

加法(Addition):两个形状相同的张量可以进行逐元素加法。

减法

减法(Subtraction):两个形状相同的张量可以进行逐元素减法。

乘法

乘法(Multiplication):分为逐元素乘法(Hadamard乘法)矩阵乘法(点积)

除法

除法(Division):两个形状相同的张量可以进行逐元素除法

2.广播

广播(Broadcasting):
广播是一种特殊的运算规则,它允许形状不同的张量进行运算。在运算过程中,较小的张量会自动扩展到较大的张量的形状。

3.变形

变形(Reshape):
变形操作可以改变张量的形状,但保持其元素的总数不变。例如,将一个形状为(2, 3)的矩阵变形为(6,)的向量。

4.转置

转置(Transpose):
转置操作用于交换张量的两个维度。例如,将一个形状为(2, 3)的矩阵转置为(3, 2)。

5.切片

切片(Slicing):
切片操作用于获取张量的一个子集。例如,从矩阵中提取某一行或某一列。

6.拼接

拼接(Concatenation):
拼接操作将多个张量沿某个维度连接起来。例如,将两个形状为(2, 3)的矩阵沿第一个维度拼接,得到一个形状为(4, 3)的矩阵。

7.矩阵分解

矩阵分解(Decomposition):
奇异值分解(SVD)、特征分解等,用于提取矩阵的特征

8.梯度运算:

深度学习中,梯度运算是非常重要的。它用于计算损失函数关于模型参数的导数,以便进行参数更新。

深度学习框架中的张量运算

深度学习框架(如TensorFlow、PyTorch等)中,张量运算通常具有以下特点:

1.自动求导

自动求导:框架会自动计算张量运算的梯度,方便进行反向传播

2.硬件加速

硬件加速:张量运算通常可以在GPU或TPU上运行,以加速计算。

3.高度优化

高度优化:框架对张量运算进行了高度优化,以提高计算效率。
通过这些张量运算,深度学习模型能够在训练过程中高效地处理大量数据,实现复杂的计算任务。

第二部分:数据流动与处理

计算机系统中,数据的流动和处理涉及到多个层次和组件,包括**磁盘、内存(RAM)、缓存(包括CPU缓存和磁盘缓存)**等。以下是详细的数据流动过程:

1. 磁盘(硬盘或固态硬盘)

磁盘是计算机系统中用于长期存储数据的设备。数据在磁盘上的流动过程如下:

读取数据

  1. 当计算机需要读取数据时,操作系统会向磁盘发送读取请求。
  2. 磁盘控制器定位到数据所在的磁道和扇区
  3. 磁盘旋转到正确的位置,磁头读取数据。
  4. 读取的数据通过磁盘控制器发送到内存。

写入数据

  1. 写入过程与读取类似,但方向相反。
  2. 操作系统将数据发送到磁盘控制器。
  3. 磁盘控制器将数据写入磁盘的空闲扇区。

2. 内存(RAM)

内存是计算机中用于临时存储数据和指令的高速存储设备。数据在内存中的流动过程如下:

加载程序和数据

  1. 操作系统将磁盘上的程序和数据加载到内存中,以便CPU快速访问
  2. 内存中的数据按照地址进行管理

数据交换

当内存空间不足时,操作系统可能会将不常用的数据暂时交换到磁盘上的交换空间(swap space)。

3. 缓存

缓存是位于内存和CPU之间的小容量但非常快速的存储器,用于减少CPU访问内存所需的时间

CPU缓存

  1. L1缓存:速度最快,容量最小,通常集成在CPU核心内部
  2. L2缓存:速度较快,容量比L1大,通常也集成在CPU内部或非常靠近CPU
  3. L3缓存:速度较L2慢,但容量更大,通常集成在CPU芯片上
    当CPU需要数据时,首先检查L1缓存,如果没有找到,再检查L2,然后是L3,最后才访问内存。

磁盘缓存

磁盘缓存位于磁盘和内存之间,用于存储最近从磁盘读取或写入的数据
当进行磁盘操作时,数据首先写入磁盘缓存,然后由缓存管理器定期将数据刷新到磁盘上

4.数据流动的具体过程

程序执行

  1. 操作系统从磁盘加载程序到内存
  2. CPU从内存中读取指令和数据到CPU缓存
  3. CPU执行指令,处理数据。

数据读写

当CPU需要读取数据时,首先检查CPU缓存
如果数据不在缓存中(缓存未命中),CPU从内存中读取数据,并将其存储在缓存中以供将来使用
如果数据需要写入,CPU首先写入缓存,并可能标记为“脏”数据(表示缓存中的数据与内存或磁盘上的数据不一致)。
缓存管理器负责将脏数据定期刷新到内存,然后由内存管理器将数据写入磁盘。

缓存一致性

在多核心CPU系统中,需要维护缓存一致性,确保所有核心看到的内存数据是一致的

内存管理

操作系统负责内存管理,包括分配和回收内存,以及处理内存页的换入换出。

磁盘I/O

当内存中的数据需要持久化时,操作系统会将数据写入磁盘。
磁盘缓存可以减少磁盘I/O操作的次数,提高系统性能。
整个数据流动过程是由操作系统和硬件协同工作来管理的,以确保数据能够高效、准确地流动和处理。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了深度学习中的张量以及数据在计算机中的流动处理过程。


http://www.ppmy.cn/devtools/156130.html

相关文章

零基础学习书生.浦语大模型-入门岛

第一关:Linux基础知识 任务一:Cursor连接SSH运行代码 使用Remote - SSH插件即可 运行指令 python hello_world.py端口映射 ssh -p 46561 rootssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyCheckingno 注:46561&a…

《HelloGitHub》第 106 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…

用Python替代OpenMV IDE显示openmv USB 图像

原理是利用openmv的usb模仿串口,然后用Python代码打开串口接收 能替代openmv ide 跑48帧图像 Python端需要的依赖: 需要的是: from ultralytics import YOLO import cv2 import numpy as np from serial import Serial import time from co…

Immutable设计 SimpleDateFormat DateTimeFormatter

专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 理解不可变设计模式,时间format有线程安全要求的注意使用DateTimeFormatter 目录 ImmutableSimpleDateFormat 非线程安全可以synchronized解决&a…

人机交互系统实验三 多通道用户界面

实验目的和要求 1)了解常见的多通道用户界面 2)查找资料,熟悉一种多通道用户界面并写出综述 实验环境 Windows10 实验内容与过程 (一) 实验内容: 要求上网查找资料,熟悉一种多通道用户界面并写出综述,可以是眼动跟踪、手势识别、 三维…

论文阅读(七):贝叶斯因果表型网络解释遗传变异和生物学知识

1.论文链接:Bayesian Causal Phenotype Network Incorporating Genetic Variation and Biological Knowledge 摘要: 在分离群体中,数量性状基因座(QTL)定位可以确定对表型有因果效应的QTL。这些方法的一个共同特点是Q…

初始Linux(7):认识进程(下)

1. 进程优先级 cpu 资源分配的先后顺序,就是指进程的优先权( priority )。 优先权高的进程有优先执行权利。配置进程优先权对多任务环境的 linux 很有用,可以改善系统性能。 还可以把进程运行到指定的CPU 上,这样一来…

Spring Boot基本项目结构

要写一个Spring Boot 项目对于新手小白来说,首先要了解Spring Boot 的基本架构,学会如何创建一个简单的spring boot项目。 springboot 基于maven做的(前提保证maven是装好并且IDEA配置好的)(面向接口编程)…