收录网站是什么意思,南京高端网站开发,深圳做兼职的网站设计,程序员必备软件文章目录 1.张量形状与维度1.1标量#xff08;0维张量#xff09;#xff1a;1.2 向量#xff08;1维张量#xff09;#xff1a;1.3矩阵#xff08;2维张量#xff09;#xff1a;1.4高维张量#xff1a; 2. 张量其他创建方式2.1 创建全零或全一张量#xff1a;2.2… 文章目录 1.张量形状与维度1.1标量0维张量1.2 向量1维张量1.3矩阵2维张量1.4高维张量 2. 张量其他创建方式2.1 创建全零或全一张量2.2 创建随机张量2.3 创建单位矩阵2.4 创建序列张量 3. 张量元素3.1 查看元素类型3.2 张量元素类型转换 4. 张量运算4.1 张量的基本运算p.2 张量间乘法点积运算4.3 张量元素运算函数4.3.1逐元素运算函数4.3.2 统计汇总运算函数 5.张量的拼接 切片 扩展 重塑 改变形状等操作5.1 张量拼接Concatenation5.2 张量切片Slicing5.3 张量转置Transpose5.4 张量形状重塑 6.广播机制6.1 张量标量6.2 张量张量 Tensor张量是一种多维数组通常是数字数据类型是深度学习和机器学习中最基本的数据结构之一。 PyTorch提供了一种直观的方式来创建和操作张量而且它还支持GPU加速这对于深度学习任务非常重要。我们可以使用PyTorch来定义神经网络模型、进行前向传播和反向传播以及许多其他深度学习任务因而了解张量是了解这些任务的基础。
1.张量形状与维度
维度Rank张量的维度也称为秩rank表示张量中轴或维度的数量。标量是0维张量向量是1维张量矩阵是2维张量以此类推。
我们使用**.shape** 查看形状.ndim属性查看维度
当使用PyTorch库时我们可以轻松地创建和操作张量。下面是使用PyTorch创建不同秩的张量的示例代码
1.1标量0维张量
import torchscalar torch.tensor(5) # 创建一个标量
print(Scalar:, scalar)
print(Scalar的秩Rank:, scalar.ndim) # 输出0表示秩为0
print(Scalar的形状, scalar.shape) #输出torch.Size([]) #输出torch.Size([])此时形状向量输出为空1.2 向量1维张量
import torchvector torch.tensor([1, 2, 3, 4]) # 创建一个向量
print(Vector:, vector)
print(Vector的秩Rank:, vector.ndim ) # 输出1表示秩为1
print(vector的形状, vector.shape) #输出torch.Size([4])1.3矩阵2维张量
import torchmatrix torch.tensor([[1, 2, 3], [4, 5, 6]]) # 创建一个2x3的矩阵
print(Matrix:)
print(matrix)
print(Matrix的秩Rank:, matrix.ndim # 输出2表示秩为2
print(Matrix的形状:, matrix.shape # 输出torch.Size([2,3]) 2x3的矩阵1.4高维张量
import torch
tensor_3d torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) # 创建一个2x2x2的3维张量
print(3D Tensor:)
print(tensor_3d)
print(3D Tensor的秩Rank:, tensor_3d.ndim) # 输出3表示秩为3
print(3D Tensor的形状:, tensor_3d.shape ) # 输出torch.Size([2,2,2]) 2x2x2的3维张量2. 张量其他创建方式
以上我们实际上是通过torch.tensor函数把列表转换为tensor张量
除此之外还有一些其他torch内置函数的创建方式
2.1 创建全零或全一张量
# 创建特定形状的全零张量
zeros_tensor torch.zeros(3, 2) #创建形状(3,2)的全零张量# 创建特定形状的全一张量
ones_tensor torch.ones(2, 3)#创建形状(2,3)的全一张量2.2 创建随机张量
# 创建特定形状的随机均匀分布的张量 每个元素都会随机生成取值范围是大于等于0且小于1的浮点数。
uniform_random torch.rand(2, 2) #形状(2,2)# 创建随机正态分布的张量
normal_random torch.randn(3, 3) #形状(3,3)2.3 创建单位矩阵
# 创建单位矩阵
identity_matrix torch.eye(4)输出 tensor([[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]]) 2.4 创建序列张量
# 创建从0到4的张量
sequence_tensor torch.arange(5)# 创建从2到10的张量步长为2
sequence_with_step torch.arange(2, 11, step2)3. 张量元素
张量中的每个值称为元素。根据张量的维度和形状可以有不同数量的元素。例如一个形状为(3, 4)的张量将包含12个元素。
每个元素可以有不同的类型
张量可以包含不同的数据类型如整数、浮点数、布尔值等。常见的数据类型包括int32、float32、bool等
3.1 查看元素类型
使用 .dtype 属性可以查看张量的数据类型。例如
pythonCopy codeimport torch# 创建一个张量
tensor torch.tensor([1, 2, 3, 4], dtypetorch.float32)# 查看张量的数据类型
print(tensor.dtype)输出将显示张量的数据类型例如 torch.float32
注意python其他数据类型查看是通过type函数()注意区分距离如下
# 定义不同类型的变量
integer_variable 42
float_variable 3.14
string_variable Hello, World!
list_variable [1, 2, 3]
dictionary_variable {name: John, age: 30}# 使用 type() 函数查看数据类型
print(type(integer_variable)) # class int
print(type(float_variable)) # class float
print(type(string_variable)) # class str
print(type(list_variable)) # class list
print(type(dictionary_variable)) # class dict3.2 张量元素类型转换
通过to函数() 或者用type()函数
注意这里的type函数是tensor张量自己带的不是上面讲到3.1讲到的python内的type函数
import torch
# 创建一个整数类型的张量
int_tensor torch.tensor([1, 2, 3, 4],dtypetorch.int32)# 将整数类型的张量转换为浮点数类型 或者 float_tensor int_tensor.type(torch.float32)
float_tensor int_tensor.to(torch.float32)# 查看新的张量的数据类型
print(float_tensor.dtype)输出为 torch.float32
注意 执行to函数之后必须进行赋值操作否则该操作就丢失了查看下面的代码
import torch
# 创建一个整数类型的张量
int_tensor torch.tensor([1, 2, 3, 4],dtypetorch.int32)
# 将整数类型的张量转换为浮点数类型
int_tensor.to(torch.float32)
# 查看新的张量的数据类型
print(int_tensor.dtype)最开始我觉得会输出torch.float32 实际输出torch.int32
4. 张量运算
4.1 张量的基本运算
加法和减法可以使用 和 - 运算符执行张量的逐元素加法和减法。乘法和除法可以使用 * 和 / 运算符执行逐元素的乘法和除法。幂运算使用 ** 运算符进行幂运算。取负值使用 - 运算符取张量的负值。
import torch# 创建两个示例张量
tensor1 torch.tensor([1.0, 2.0, 3.0])
tensor2 torch.tensor([4.0, 5.0, 6.0])# 加法和减法
result_addition tensor1 tensor2 # 逐元素加法
result_subtraction tensor1 - tensor2 # 逐元素减法# 乘法和除法
result_multiplication tensor1 * tensor2 # 逐元素乘法
result_division tensor1 / tensor2 # 逐元素除法# 幂运算
exponent 2
result_power tensor1 ** exponent # 每个元素求平方# 取负值
result_negation -tensor1 # 每个元素取负值print(Addition:, result_addition)
print(Subtraction:, result_subtraction)
print(Multiplication:, result_multiplication)
print(Division:, result_division)
print(Power:, result_power)
print(Negation:, result_negation)
输出
p.2 张量间乘法点积运算 矩阵相乘 使用 torch.matmul() 函数或 运算符 或**torch.mm()** 可以执行两个张量矩阵的矩阵相乘。矩阵相乘要求左边矩阵的列数等于右边矩阵的行数。 import torch# 创建两个示例矩阵
matrix1 torch.tensor([[1, 2], [3, 4]])
matrix2 torch.tensor([[5, 6], [7, 8]])# 矩阵相乘 matmul
result_matrix_mul_1 torch.matmul(matrix1, matrix2)
# 或者使用 运算符
result_matrix_mul_2 matrix1 matrix2
# 矩阵相乘 mm
result_matrix_mul_3torch.mm(matrix1, matrix2)print(Matrix Multiplication:)
print(result_matrix_mul_1)
print(result_matrix_mul_2)
print(result_matrix_mul_3)输出将是两个矩阵相乘的结果 Matrix Multiplication: tensor([[19, 22], [43, 50]]) tensor([[19, 22], [43, 50]]) tensor([[19, 22], [43, 50]]) 批量矩阵相乘 使用 torch.matmul() 函数和**运算符可以执行两个张量的批量矩阵相乘。这对于同时处理多个矩阵非常有用但要求最后两个维度必须是矩阵的维度**。而mm只能用于单个矩阵乘法 import torch# 创建两个批量矩阵3个2x2矩阵
batch_matrix1 torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]])
batch_matrix2 torch.tensor([[[2, 0], [1, 2]], [[-1, -2], [-3, -4]], [[0, 1], [-1, 0]]])# 执行批量矩阵相乘
result_batch_matrix_mul_1 batch_matrix1 batch_matrix2
result_batch_matrix_mul_2 torch.matmul(batch_matrix1,batch_matrix2)
# 或者使用 运算符
# result_batch_matrix_mul batch_matrix1 batch_matrix2print(Batch Matrix Multiplication:)
print(result_batch_matrix_mul_1)
print(result_batch_matrix_mul_2) 输出将是批量矩阵相乘的结果 输出 Batch Matrix Multiplication: tensor([[[ 4, 4], [ 10, 8]], [[-23, -34], [-31, -46]], [[-10, 9],[-12, 11]]])tensor([[[ 4, 4], [ 10, 8]], [[-23, -34],[-31, -46]], [[-10, 9], [-12, 11]]]) 点积 点积是两个向量的内积也可以视为两个矩阵的逐元素乘法后的和。在 PyTorch 中可以使用 torch.dot() 函数来计算两个一维张量的点积。 import torch# 创建两个一维示例张量
vector1 torch.tensor([1, 2, 3])
vector2 torch.tensor([4, 5, 6])# 计算点积
dot_product torch.dot(vector1, vector2)print(Dot Product:)
print(dot_product)输出将是两个向量的点积结果 Dot Product: tensor(32) 4.3 张量元素运算函数
tensor张量还会自带很多的运算函数方便我们的操作
4.3.1逐元素运算函数
这些运算将分别应用于张量的每个元素结果将生成一个与原始张量相同形状的新张量。
torch.abs(tensor)计算张量中每个元素的绝对值。torch.sqrt(tensor)计算张量中每个元素的平方根。torch.exp(tensor)计算张量中每个元素的指数值。torch.log(tensor)计算张量中每个元素的自然对数。
4.3.2 统计汇总运算函数
这些运算将返回张量的单个标量值通常用于统计和汇总。
torch.sum(tensor)计算张量中所有元素的和。torch.mean(tensor)计算张量中所有元素的平均值。torch.max(tensor) 和 torch.min(tensor)计算张量中的最大值和最小值。torch.argmax(tensor) 和 torch.argmin(tensor)返回张量中最大值和最小值的索引。torch.unique(tensor)返回张量中的唯一元素。torch.histc(tensor, bins10, min0, max1)计算张量的直方图。
5.张量的拼接 切片 扩展 重塑 改变形状等操作
PyTorch 提供了一系列用于处理和操作张量的运算包括拼接、切片、转置、扩展和重塑等。以下是这些运算的详细介绍
5.1 张量拼接Concatenation torch.cat(tensors, dim0)将多个张量沿指定维度 dim 进行拼接生成一个新的张量。这在将多个张量连接在一起时非常有用。 import torch# 创建两个示例张量
tensor1 torch.tensor([[1, 2,3], [4, 5,6]]) #2×3
tensor2 torch.tensor([[7, 8,9], [10, 11,12]]) #2×3# 沿行维度进行拼接
result_concatenation_row torch.cat((tensor1, tensor2), dim0) #行维度对应相加最后拼接后的形状(4×3)
result_concatenation_columntorch.cat((tensor1, tensor2), dim1)#列维度对应相加最后拼接后的形状(2×6)print(Concatenation:)
print(result_concatenation_row)
print(result_concatenation_column) Concatenation: tensor([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [10, 11, 12]]) tensor([[ 1, 2, 3, 7, 8, 9], [ 4, 5, 6, 10, 11, 12]]) 5.2 张量切片Slicing 使用索引和切片运算符 [] 对张量进行切片。可以指定要提取的元素的索引或范围。这对于获取部分数据非常有用。 import torch# 创建一个示例张量
tensor torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 提取特定元素
element tensor[0, 1] # 获取第一行第二列的元素# 提取特定行或列
row tensor[1, :] # 获取第二行的所有元素
column tensor[:, 2] # 获取第三列的所有元素print(Element:, element)
print(Row:, row)
print(Column:, column)Element: tensor(2) Row: tensor([4, 5, 6]) Column: tensor([3, 6, 9]) 5.3 张量转置Transpose torch.transpose(tensor, dim0, dim1)将张量的指定维度进行转置生成一个新的张量。这对于调整张量的维度顺序非常有用。 import torch# 创建一个示例张量
tensor torch.tensor([[1, 2, 3], [4, 5, 6]])# 转置张量
transposed_tensor torch.transpose(tensor, dim00, dim11) # 交换行和列print(Transposed Tensor:)
print(transposed_tensor)输出 Transposed Tensor: tensor([[1, 4], [2, 5], [3, 6]]) 5.4 张量形状重塑 tensor.view(new_shape)或者函数tensor.reshape(new_shape)将张量的形状重塑为新的形状生成一个新的张量。这对于改变张量的形状非常有用但要确保新形状与原始形状兼容。 pythonCopy codeimport torch# 创建一个示例张量
tensor torch.tensor([[1, 2, 3], [4, 5, 6]])# 重塑张量的形状
reshaped_tensor tensor.view(3, 2) # 将2x3矩阵重塑为3x2矩阵print(Reshaped Tensor:)
print(reshaped_tensor)这些张量操作非常有用可用于处理和操作 PyTorch 张量适应不同的任务和需求。请根据您的具体情况选择适当的操作。
6.广播机制
广播Broadcasting是一种在 PyTorch 中执行元素级运算的机制它允许在不同形状的张量之间进行运算而无需显式地扩展重复复制其中一个张量。广播使得在不同形状的张量上执行操作更加方便因为它自动调整张量的形状以使其兼容。
6.1 张量标量
import torch# 创建示例张量
tensor torch.tensor([[1, 2], [3, 4]])# 使用广播将标量加到矩阵的每个元素上
scalar 2
result_broadcasting tensor scalarprint(Broadcasting:)
print(result_broadcasting)输出 Broadcasting: tensor([[3, 4], [5, 6]]) 6.2 张量张量
广播规则如下
不要求两个张量维度数相等但要求从右向左逐一比较张量的维度直到维度低的向量比较完毕满足以下两个条件之一即可
(1)两个张量该维度相等
(2)其中一个张量该维度是1
如果在某一维度的比较上两者都不满足则会引发广播错误。
tensor_1torch.ones(2,3,4) #2*3*4tensor_2torch.ones(3,1) #3*1tensortensor_2tensor_1
print(tensor)如上从右向左 第一维4和1 虽然不相等但tensor_2为1 满足条件2
继续从右向左第二维(3,3 )相等满足条件1
此时低维向量比较完毕所以上述两者可以广播
tensor_1torch.ones(2,3,3)#2*3*2tensor_2torch.ones(2,1) #2*3tensortensor_2tensor_1
print(tensor)而这个例子从右向左 第一维3和1 虽然不相等但tensor_2为1 满足条件2
继续从右向左第二维(3,2 )不相等不满足条件1也不满足条件2引发广播失败 文章转载自: http://www.morning.dbrdg.cn.gov.cn.dbrdg.cn http://www.morning.dpgdj.cn.gov.cn.dpgdj.cn http://www.morning.rfmzs.cn.gov.cn.rfmzs.cn http://www.morning.kdnrp.cn.gov.cn.kdnrp.cn http://www.morning.ntqnt.cn.gov.cn.ntqnt.cn http://www.morning.gmztd.cn.gov.cn.gmztd.cn http://www.morning.nccqs.cn.gov.cn.nccqs.cn http://www.morning.wgtr.cn.gov.cn.wgtr.cn http://www.morning.grtwn.cn.gov.cn.grtwn.cn http://www.morning.mlhfr.cn.gov.cn.mlhfr.cn http://www.morning.pxlql.cn.gov.cn.pxlql.cn http://www.morning.jtdrz.cn.gov.cn.jtdrz.cn http://www.morning.nggry.cn.gov.cn.nggry.cn http://www.morning.lfbsd.cn.gov.cn.lfbsd.cn http://www.morning.bhjyh.cn.gov.cn.bhjyh.cn http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn http://www.morning.cwrnr.cn.gov.cn.cwrnr.cn http://www.morning.lmhh.cn.gov.cn.lmhh.cn http://www.morning.jfbpf.cn.gov.cn.jfbpf.cn http://www.morning.zyrp.cn.gov.cn.zyrp.cn http://www.morning.gzxnj.cn.gov.cn.gzxnj.cn http://www.morning.bwmm.cn.gov.cn.bwmm.cn http://www.morning.jwskq.cn.gov.cn.jwskq.cn http://www.morning.rqqn.cn.gov.cn.rqqn.cn http://www.morning.rcklc.cn.gov.cn.rcklc.cn http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn http://www.morning.ttdbr.cn.gov.cn.ttdbr.cn http://www.morning.lokext.com.gov.cn.lokext.com http://www.morning.ykmg.cn.gov.cn.ykmg.cn http://www.morning.amonr.com.gov.cn.amonr.com http://www.morning.qfbzj.cn.gov.cn.qfbzj.cn http://www.morning.zqfjn.cn.gov.cn.zqfjn.cn http://www.morning.rxhs.cn.gov.cn.rxhs.cn http://www.morning.wdply.cn.gov.cn.wdply.cn http://www.morning.byjwl.cn.gov.cn.byjwl.cn http://www.morning.redhoma.com.gov.cn.redhoma.com http://www.morning.ntgjm.cn.gov.cn.ntgjm.cn http://www.morning.nswcw.cn.gov.cn.nswcw.cn http://www.morning.brmbm.cn.gov.cn.brmbm.cn http://www.morning.ccffs.cn.gov.cn.ccffs.cn http://www.morning.gwjqq.cn.gov.cn.gwjqq.cn http://www.morning.pbbzn.cn.gov.cn.pbbzn.cn http://www.morning.rmyqj.cn.gov.cn.rmyqj.cn http://www.morning.tkzrh.cn.gov.cn.tkzrh.cn http://www.morning.mspkz.cn.gov.cn.mspkz.cn http://www.morning.txltb.cn.gov.cn.txltb.cn http://www.morning.dpnhs.cn.gov.cn.dpnhs.cn http://www.morning.fcrw.cn.gov.cn.fcrw.cn http://www.morning.ttshf.cn.gov.cn.ttshf.cn http://www.morning.wbfg.cn.gov.cn.wbfg.cn http://www.morning.ryspp.cn.gov.cn.ryspp.cn http://www.morning.fhrt.cn.gov.cn.fhrt.cn http://www.morning.czgtt.cn.gov.cn.czgtt.cn http://www.morning.fyglr.cn.gov.cn.fyglr.cn http://www.morning.fzlk.cn.gov.cn.fzlk.cn http://www.morning.lpbrp.cn.gov.cn.lpbrp.cn http://www.morning.qcztm.cn.gov.cn.qcztm.cn http://www.morning.vjdofuj.cn.gov.cn.vjdofuj.cn http://www.morning.ymmjx.cn.gov.cn.ymmjx.cn http://www.morning.fyglg.cn.gov.cn.fyglg.cn http://www.morning.fwwkr.cn.gov.cn.fwwkr.cn http://www.morning.rkdw.cn.gov.cn.rkdw.cn http://www.morning.nzlsm.cn.gov.cn.nzlsm.cn http://www.morning.mhpkz.cn.gov.cn.mhpkz.cn http://www.morning.qxycf.cn.gov.cn.qxycf.cn http://www.morning.ssqwr.cn.gov.cn.ssqwr.cn http://www.morning.epeij.cn.gov.cn.epeij.cn http://www.morning.jrhcp.cn.gov.cn.jrhcp.cn http://www.morning.lcplz.cn.gov.cn.lcplz.cn http://www.morning.kbqqn.cn.gov.cn.kbqqn.cn http://www.morning.tnfyj.cn.gov.cn.tnfyj.cn http://www.morning.gwkwt.cn.gov.cn.gwkwt.cn http://www.morning.lwtfr.cn.gov.cn.lwtfr.cn http://www.morning.kqwsy.cn.gov.cn.kqwsy.cn http://www.morning.dpfr.cn.gov.cn.dpfr.cn http://www.morning.jwlmm.cn.gov.cn.jwlmm.cn http://www.morning.tssmk.cn.gov.cn.tssmk.cn http://www.morning.nywrm.cn.gov.cn.nywrm.cn http://www.morning.tyjnr.cn.gov.cn.tyjnr.cn http://www.morning.byrlg.cn.gov.cn.byrlg.cn