当前位置: 首页 > news >正文

【深度学习】基础数据结构+访问

目录

  • 深度学习中的基础数据结构
    • 1. N维数组
      • 定义
      • 特点
      • 访问元素
    • 2. 机器学习中常用的数据结构
      • N维数组
      • 示例
    • 3. 数学中的访问操作
      • 带跳转的子区域
      • 访问示例
    • 4. 数学中的访问操作
        • 4.1 一维数组(向量)
          • 访问一个区间
          • 带步长的区间访问
        • 4.2 二维数组(矩阵)
          • 访问某一行或某一列
          • 访问子矩阵
        • 4.3 三维数组(张量)
          • 访问某个二维切片
          • 带步长的子区域访问


深度学习中的基础数据结构

在深度学习中,理解和操作数据的基础结构至关重要,主要包括以下几种:

1. N维数组

定义

  • N维数组(Tensor)是深度学习中最常用的数据结构。
  • 包括标量(0维数组)、向量(1维数组)、矩阵(2维数组)、3D数组(张量,3维数组)和更高维度的数组。

特点

  • 标量:只有一个值,例如5。
  • 向量:一维数组,例如[1, 2, 3]。
  • 矩阵:二维数组,例如[[1, 2], [3, 4]]。
  • 3D数组:例如一个包含多张图片的数据结构。
  • 4D数组:常用于批量处理多个3D数组。
  • 5D数组:常用于视频处理,表示多段视频的批量。

访问元素

  • 可以使用索引访问N维数组中的元素。
  • 索引的数量等于数组的维度。

2. 机器学习中常用的数据结构

N维数组

  • 包括标量、向量、矩阵、批量等。
  • 访问和创建这些数组的方法对于深度学习至关重要。

示例

  • 2D数组:如一张图片,可以表示为一个矩阵。
  • 3D数组:如一批图片,可以表示为一堆矩阵。
  • 4D数组:视频的帧数据,可以表示为多个3D数组。
  • 5D数组:批量的视频数据,可以表示为多个4D数组。

3. 数学中的访问操作

带跳转的子区域

  • 访问一个数组的子区域时,可以指定跳跃的步长(stride)。
  • 例如,访问矩阵的子矩阵时,可以通过步长来跳过某些行或列。

访问示例

  • 访问一个向量中的一个区间:array[start:end]
  • 访问一个矩阵中的某一行或某一列:matrix[row, :]matrix[:, column]
  • 通过步长访问带跳跃的子区域:array[start:end:step]

4. 数学中的访问操作

在处理高维数组(如张量)时,访问和操作其子区域是常见的需求。以下是一些具体的访问操作及其示例:

4.1 一维数组(向量)
访问一个区间

通过指定起始位置和结束位置来访问一个区间的元素:

import numpy as np# 创建一个一维数组
vector = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])# 访问从索引2到索引5的元素(不包括索引5)
sub_vector = vector[2:5]
print(sub_vector)  # 输出: [2 3 4]
带步长的区间访问

通过步长来访问带跳跃的元素:

# 访问从索引1到索引8的元素,步长为2
sub_vector_with_stride = vector[1:8:2]
print(sub_vector_with_stride)  # 输出: [1 3 5 7]
4.2 二维数组(矩阵)
访问某一行或某一列

通过指定行或列索引来访问:

# 创建一个二维数组
matrix = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])# 访问第二行(索引从0开始)
second_row = matrix[1, :]
print(second_row)  # 输出: [3 4 5]# 访问第三列
third_column = matrix[:, 2]
print(third_column)  # 输出: [2 5 8]
访问子矩阵

通过指定行和列的范围来访问子矩阵:

# 访问从第一行到第二行,从第一列到第二列的子矩阵
sub_matrix = matrix[0:2, 1:3]
print(sub_matrix)  
# 输出:
# [[1 2]
#  [4 5]]
4.3 三维数组(张量)
访问某个二维切片

通过指定切片索引来访问某个二维切片:

# 创建一个三维数组
tensor = np.array([[[ 0,  1,  2],[ 3,  4,  5],[ 6,  7,  8]],[[ 9, 10, 11],[12, 13, 14],[15, 16, 17]]])# 访问第一个二维切片
first_slice = tensor[0, :, :]
print(first_slice)  
# 输出:
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]
带步长的子区域访问

通过步长来访问三维数组的子区域:

# 访问第一个二维切片的子区域,步长为2
sub_tensor_with_stride = tensor[0, 0:3:2, 0:3:2]
print(sub_tensor_with_stride)  
# 输出:
# [[0 2]
#  [6 8]]
http://www.lryc.cn/news/383857.html

相关文章:

  • 一个产品需求工程师繁忙的一天
  • MD5加密接口
  • AI大模型日报#0626:首款大模型芯片挑战英伟达、面壁智能李大海专访、大模型测试题爆火LeCun点赞
  • 专业技能篇---计算机网络
  • Matlab|【免费】含氢气氨气综合能源系统优化调度
  • python的一些常用的内建函数
  • Docker部署常见应用之Oracle数据库
  • 小程序中echarts的bug
  • 项目验收测试有必要找第三方软件测试机构吗?
  • 【python入门】循环语句
  • php调用soap, 报错 failed to load external entity‘http://xxxxxxxx?wsdl‘ 解决方法
  • ts可选参数
  • day41--Redis(三)高级篇之最佳实践
  • PDF 生成(4)— 目录页
  • 黑盒测试用例的四种设计方法
  • GIT重新提交-恢复到暂存状态
  • 半藏酒商业模式解读,半藏酱酒营销案例,半藏总院分院招商模式
  • 从云原生视角看 AI 原生应用架构的实践
  • 浅学JVM
  • 算法训练营64-图论-深度优先优先搜索(dfs)-广度优先搜索(bfs)
  • kotlin函数
  • 深入理解计算机系统 CSAPP 家庭作业7.12
  • Batch脚本中的环境变量沙盒:setlocal与endlocal全解析
  • AI引领创意潮流:高效生成图片,参考图助力,一键保存到指定文件夹
  • ADOP带你了解:数据中心的高速互联解决方案
  • 使用SpringBoot整合Servlet
  • vue引入eachrts
  • c++ 智能指针实战分析
  • 3D Web轻量引擎HOOPS Web Platform赋能AEC行业数字化,高效渲染与多格式支持!
  • 学术英语写作为什么会成为留学生的压力?