机器学习的数据结构——张量(详细介绍及Python中对张量的操作)

本文详细介绍了张量在机器学习中的作用,包括张量的轴、阶和形状,从标量、向量、矩阵到更高阶的张量。通过Python的Numpy库展示了如何创建和操作张量,特别讨论了向量和矩阵的点积。最后,提到了张量在处理不同数据类型(如序列、图像和视频)时的应用。
摘要由CSDN通过智能技术生成

张量

一、张量的轴、阶和形状

张量是机器学习程序中的数字容器,本质上就是各种不同维度的数组,我们把张量的维度称为轴(axis),轴的个数称为阶(rank)(也就是俗称的维度,但是为了把张量的维度和每个阶的具体维度区分开,这里统一把张量的维度称为正脸那个的阶,Numpy中把它叫做数组的秩)

张量的形状(shape)就是张量的阶,加上每个阶的维度(每个阶的元素数目)

张量都可以通过Numpy来定义、操作。因此把Numpy数学函数库里面的数组用好,就可以搞定机器学习里面的数据结构。

二、标量——0D(阶)张量

仅包含一个数字的张量叫做标量(scalar),既0阶张量或0D张量。

标量的功能主要在于程序流程控制、设置参数值等。

下面创建一个NumPy标量:

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属性显示张量形状

在这里插入图片描述
此处标量的形状为(),既标量的阶为0.

Numpy中,不管是阶的索引,还是数组的索引,永远是从0开始的。

三、向量——1D(阶)张量

由一组数字组成的数组叫做向量(vector),也就是一阶张量,或称1D张量。一阶张量只有一个轴。

下面创建一个NumPy向量:

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维向量。千万不要把5维向量和5阶向量混淆。

创建一个一维向量:

X = np.array([5]) # 1维的向量,就是1D数组里面只有一个元素

1.机器学习中的向量数据

向量非常的重要。在机器学习中,普通的连续数值数据集中的每一个独立样本都是一个向量,因此普通的连续数值数据集也可以叫做向量数据集。而数据集中的标签列也可以视为一个向量。

向量数据集是说数据集中的每一行或每一列,都可以视为向量,但是数据集整体是一个矩阵。

载入波士顿房价数据集查看:

from keras.datasets import boston_housing # 波士顿房价数据集
(X_train, y_train), (X_test, y_test) = boston_housing.load_data()
print("X_train的形状:", X_train.shape)
print("X_train中第一个样本的形状:", X_train[0].shape)
print("y_train的形状:", y_train.shape)

在这里插入图片描述
这个是Keras内置的波士顿房价数据集,是一个2D的普通数值数据集。

X_train是一个2D矩阵,是404个样本数据的集合。
X_train[0]代表的是X_train训练集的第一行数据,是一个13维向量(也是1D张量)。也就是说,训练集的每行数据都包含13个特征。

2.向量的点积

两个向量之间可以进行乘法运算,而且不止一种,有点积和叉积,其运算法则不同。

点积运算法则:就是两个相同维度的向量对应元素先相乘,后相加。
用代码展示:

python
weight = np.array([1,-1.8,1,1,2]) # 权重向量(也就是多项式的参数)
X = np.array([1,6,7,8,9]) # 特征向量(也就是一个特定样本中的特征值)
y_hat = np.dot(X,weight) # 通过点积运算构建预测函数
print('函数返回结果:', y_hat) # 输出预测结果

在这里插入图片描述

下面语句也可以实现相同的功能:

y_hat = weight.dot(X) # X.dot(weight)也可以实现同样结果

注意向量点积的结果是一个值,也就是一个标量,而不是一个向量。

四、矩阵——2D(阶)张量

矩阵是一组一组向量的集合。矩阵中的个元素横着、竖着、斜着都能构成不同的向量。而矩阵,也就是二阶张量,或称2D张量,其形状维(m,n)
矩阵里面横向的元素称为“行”,纵向的元素称为“列”。

1.机器学习中的矩阵数据

矩阵式2D张量,形状维(样本,特征)。第一个轴式样本轴,第二个式特征轴。

print("X_train的内容:", X_train) #X_train是2D张
  • 34
    点赞
  • 161
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黎明之道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值