PyTorch 是个牛哄哄的深度学习库,它是用 Python 写的。咱们今儿个就来唠唠这个 PyTorch,看看它有啥厉害的地方,怎么用它搞点深度学习的花样出来。
1.
PyTorch 是个啥玩意儿
PyTorch 说白了就是个工具箱,里面装满了搞深度学习的家伙什。它最拽的地方就是能让你轻轻松松地建立神经网络模型,还能自动帮你算梯度。啥是梯度?就是告诉你模型该往哪个方向改进,让它变得更聪明。
import torch# 创建一个简单的张量x = torch.tensor([1, 2, 3])print(x)
看到没?这就是 PyTorch 里最基本的东西,叫 张量 。你可以把它想象成一个装数字的盒子。
2.
动态计算图:PyTorch 的独门绝技
PyTorch 最牛逼的地方就是它的动态计算图。啥意思呢?就是你可以边写代码边构建模型,想改就改,特别灵活。
import torchdef crazy_function(x): if x.sum() > 0: return x * x else: return x + 1x = torch.randn(5)y = crazy_function(x)print(y)
瞧见没?这个 crazy_function 函数根据输入的不同,做的操作也不一样。PyTorch 就是这么任性,想怎么玩就怎么玩。
3.
自动求导:懒人的福音
PyTorch 还有个特别牛的功能,叫 自动求导 。啥意思呢?就是你不用自己去算那些复杂的导数了,PyTorch 全帮你搞定。
import torchx = torch.tensor([2.0], requires_grad=True)y = x ** 2 + 3*x + 1y.backward()print(x.grad)
这段代码里,y.backward() 就是在告诉 PyTorch:“嘿,帮我算算 y 对 x 的导数呗!” 然后 PyTorch 二话不说就给你算出来了。
温馨提示:记得设置 requires_grad=True,不然 PyTorch 就不知道你要求导了,白忙活一场。
4.
神经网络:PyTorch 的主场
说到 PyTorch,不提神经网络那可就太对不起它了。PyTorch 里有个 nn 模块,专门用来搭建神经网络的。
import torchimport torch.nn as nnclass MyCoolNet(nn.Module): def __init__(self): super().__init__() self.layer1 = nn.Linear(10, 5) self.layer2 = nn.Linear(5, 1) def forward(self, x): x = torch.relu(self.layer1(x)) return self.layer2(x)model = MyCoolNet()print(model)
这就是个简单的神经网络模型。它有两层,中间用 ReLU 激活函数。看起来挺复杂?其实就是一堆数学运算堆在一起。
5.
优化器:让模型变得更聪明
光有模型不行,还得让它学习。这时候就需要 优化器 出场了。PyTorch 里有不少优化器,最常用的是 Adam。
import torch.optim as optimmodel = MyCoolNet()optimizer = optim.Adam(model.parameters(), lr=0.01)# 训练循环for epoch in range(100): optimizer.zero_grad() output = model(input_data) loss = loss_function(output, target) loss.backward() optimizer.step()
这段代码就是在训练模型。每次迭代,都计算损失,然后让优化器调整模型参数,让模型变得更聪明。
6.
数据加载:训练模型的燃料
模型训练离不开数据,PyTorch 提供了 DataLoader 来帮咱们处理数据。
这样,你就可以轻松地批量加载数据了。shuffle=True 还能帮你打乱数据顺序,让模型学得更均匀。
PyTorch 还有很多厉害的功能,比如 GPU 加速、分布式训练啥的。不过今天就聊到这吧,再聊下去我怕你们脑壳疼。总之呢,PyTorch 就是个特别好使的深度学习工具,用它来搞人工智能,简直不要太爽。
领取专属 10元无门槛券
私享最新 技术干货