张量、框架

5 篇文章 0 订阅

PyTorch 和 TensorFlow 都是张量库,核心功能对张量进行高效数学运算,尤其是大规模并行计算。

1.张量

张量 Tensor 是一种通用的数学对象,可以看做是多维数组概念的扩展
标量(0阶张量):单个数字,如 5;
向量(1阶张量):一维数组,如 [1,2,3];
矩阵(2阶张量):二维数组,如[[1,2],[3,4]]
高阶张量(3阶及以上):如三维数组、四维数组等

神经网络中的计算操作(如矩阵乘法、卷积、激活函数等)都涉及到对多维数据的处理。PyTorch 和 TensorFlow 作为张量库,提供了张量操作接口,能利用硬件加速(如GPU、TPU)进行大规模并行计算

2.张量库

作为张量库的功能:
基本张量运算:加减乘除、矩阵乘法、转置、索引、切片等常见的线性代数运算
自动微分:能够计算张量操作的梯度
硬件加速:利用GPU或PTU对张量运算加速,将CPU转移到GPU上,提高模型训练和推理速度

3. 示例

创建

在PyTorch中可以这样创建张量:

import torch
x = torch.tensor([[1,2],[3,4]])
y = torch.ones_like(x)
z = x+y

torch.tensor 是 PyTorch 中创建张量的函数。
[[1, 2], [3, 4]] 是一个嵌套的列表,表示一个二维矩阵(2x2)
x 是一个 2x2 的整型张量,表示为:

[[1, 2],
 [3, 4]]

torch.ones_like(x) 会创建一个和张量 x 形状相同的新张量,但其所有元素都是 1
由于 x 是一个 2x2 的矩阵,y 也会是一个 2x2 的矩阵,且每个元素都等于 1

[[1, 1],
 [1, 1]]

z = x + y
张量的逐元素加法。即,张量 x 和 y 的每个对应元素相加

[[1+1, 2+1],
 [3+1, 4+1]]

因此,z为:

[[2, 3],
 [4, 5]]

在TensorFlow中类似:

import tensorflow as tf
x = tf.constant([[1, 2], [3, 4]])
y = tf.ones_like(x)
z = x + y

自动微分和梯度计算

自动微分可以帮助计算损失函数对模型参数的梯度,这是更新模型参数的关键

PyTorch通过autograd模块,动态计算张量的梯度

x = torch.tensor([2.0], requires_grad=True)
y = x ** 2
y.backward()
print(x.grad)  # 输出 x 的梯度

TensorFlow通过GradientTape上下文来跟踪计算,并计算梯度

x = tf.Variable(2.0)
with tf.GradientTape() as tape:
    y = x ** 2
grad = tape.gradient(y, x)
print(grad)  # 输出 x 的梯度

张量在GPU上的加速

GPU对并行运算非常高效,尤其是像矩阵乘法、卷积等操作
在PyTorch中通过.to(‘cuda’)方法将张量移动到GPU

x = torch.tensor([1.0, 2.0])
x = x.to('cuda')  # 移动到GPU

在TensorFlow中,张量默认支持GPU加速,只要检测到GPU设备,计算会自动利用它

with tf.device('/GPU:0'):
    x = tf.constant([1.0, 2.0])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dotdotyy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值