1、前言
张量(Tensor)是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数。
张量是多维数组,是深度学习和机器学习中数据表示的基本单位。它可以表示标量(0维张量)、向量(1维张量)、矩阵(2维张量)以及更高维度的数组。在大模型(如神经网络)中,张量用于存储和操作数据、权重、偏置等参数。
在大模型中的地位:
数据表示: 输入数据(如图像、文本、音频等)在进入模型前通常会被转换为张量形式,以便于模型处理。
参数存储: 模型的权重和偏置也是以张量形式存储和更新的。
运算操作: 深度学习中的各种运算(如矩阵乘法、卷积操作、激活函数等)都是在张量上进行的。
梯度计算: 在反向传播过程中,张量用于存储梯度信息,以更新模型参数。
2 张量案例分析
2.1导入必要的库
import numpy as np
import mindspore
from mindspore import ops
from mindspore import Tensor, CSRTensor, COOTensor
导入NumPy库、MindSpore库以及MindSpore中的一些模块。
2.2 创建张量(Tensor)
data = [1, 0, 1, 0]
x_data = Tensor(data)
print(x_data, x_data.shape, x_data.dtype)
创建一个包含数据 [1, 0, 1, 0] 的张量 x_data 并打印其值、形状和数据类型。
2.3 从NumPy数组创建张量
np_array = np.array(data)
x_np = Tensor(np_array)
print(x_np, x_np.shape, x_np.dtype)
从NumPy数组 np_array 创建张量 x_np,并打印其值、形状和数据类型。
2.4 使用初始化器创建张量
from mindspore.common.initializer import One, Normal
tensor1 = mindspore.Tensor(shape=(2, 2), dtype=mindspore.float32, init=One())
tensor2 = mindspore.Tensor(shape=(2, 2), dtype=mindspore.float32, init=Normal())
print("tensor1:\n", tensor1)
print("tensor2:\n", tensor2)
使用 One 初始化器创建一个全为1的张量 tensor1,使用 Normal 初始化器创建一个从正态分布中抽样的张量 tensor2,并打印它们的值。
2.5 创建全1和全0张量
x_ones = ops.ones_like(x_data)
print(f"Ones Tensor: \n {
x_ones} \n")
x_zeros = ops.zeros_like