机器学习--张量
机器学习的数据结构--张量
张量是机器学习程序中的数字容器,本质上就是各种不同维度的数组,如下图所示。
张量的维度称为轴(axis),轴的个数称为阶(rank)
标量--0D张量
py
import numpy as np #导入NumPy
X = np.array(5) # 创建0D张量,也就是标量
print("X的值",X)
print("X的阶",X.ndim) #ndim属性显示张量轴的个数
print("X的数据类型",X.dtype) # dtype属性显示张量数据类型
print("X的形状",X.shape) # shape属性显示张量形状
向量--1D张量
由一组数字组成的数组叫作向量(vector),也就是一阶张量
py
X = np.array([5,6,7,8,9]) #创建1D张量,也就是向量
print("X的值",X)
print("X的阶",X.ndim) #ndim属性显示张量轴的个数
print("X的形状",X.shape) # shape属性显示张量形状
(5,)表示一个1D张量,元素数量是5,也就是5维向量。
矩阵--2D张量
矩阵是2D张量,形状为 (样本,特征)。第一个轴是样本轴,第二个轴是特征轴。
序列数据--3D张量
时序数据集的形状为3D张量:(样本,时戳,标签)
图像数据--4D张量
图像数据集其形状为(样本,图像高,图像宽度,颜色深度),如MNIST特征数据集的形状为 (60000,28,28,1)。
比如指定批量大小为64。此时每批的100px×100px的彩色图像张量形状为(64, 100,100,3),如果是灰度图像,则为(64,100,100,1)
视频数据--5D张量
其形状为(样本,帧,高度,宽度,颜色深度)
张量的创建和访问
py
array_04=np.arange(1,5,1) # 通过arange函数生成数组
array_05=np.linspace(1,5,5) # 通过linspace函数生成数组
print (array_04)
print (array_05)
arange(a,b,c)函数产生a~b(不包括b),间隔为c;
linspace(a,b, c)函数是把a~b(包括b),平均分成c份。
索引(indexing)和切片(slicing)这两种方式访问张量
py
array_06 = np.arange(10)
print (array_06)
index_01 = array_06[3] # 索引-第4个元素
print ('第4个元素', index_01)
index_02 = array_06[-1] # 索引-最后一个元素
print ('第-1个元素', index_02)
slice_01 = array_06[:4] # 从0到4切片
print ('从0到4切片', slice_01)
slice_02 = array_06[0:12:4] # 从0到12切片,步长为2
print ('从0到12切片,步长为4', slice_02)