专业做酒的网站有哪些,建设官网的网站首页,wordpress后台美化插件,tplink域名申请目录 深度学习中的基础数据结构1. N维数组定义特点访问元素 2. 机器学习中常用的数据结构N维数组示例 3. 数学中的访问操作带跳转的子区域访问示例 4. 数学中的访问操作4.1 一维数组#xff08;向量#xff09;访问一个区间带步长的区间访问 4.2 二维数组#xff08;矩阵向量访问一个区间带步长的区间访问 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]]