PyTorch 是一个流行的开源机器学习库,广泛用于计算机视觉和自然语言处理等应用。以下是使用 PyTorch 进行简单线性回归的入门代码示例:
import torch
import torch.nn as nn
# 假设我们有一些数据点
x_train = torch.tensor([[1.0], [2.0], [3.0], [4.0]], dtype=torch.float32)
y_train = torch.tensor([[2.0], [4.0], [6.0], [8.0]], dtype=torch.float32)
# 定义一个简单的线性模型
class LinearRegressionModel(nn.Module):
def __init__(self):
super(LinearRegressionModel, self).__init__()
self.linear = nn.Linear(1, 1) # 1个输入特征,1个输出特征
def forward(self, x):
return self.linear(x)
# 实例化模型
model = LinearRegressionModel()
# 定义损失函数(均方误差)
criterion = nn.MSELoss()
# 定义优化器
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# 训练模型
num_epochs = 100
for epoch in range(num_epochs):
# 前向传播
outputs = model(x_train)
loss = criterion(outputs, y_train)
# 反向传播和优化
optimizer.zero_grad() # 清除之前的梯度
loss.backward() # 反向传播,计算当前梯度
optimizer.step() # 根据梯度更新参数
if (epoch+1) % 10 == 0:
print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')
# 测试模型
with torch.no_grad(): # 测试时不需要计算梯度
predicted = model(x_train)
print(f'Predictions: {predicted}')
# 打印最终参数
print(f'Final learned weights: {model.linear.weight}')
print(f'Final learned bias: {model.linear.bias}')
这段代码首先导入了必要的 PyTorch 模块,然后创建了一些简单的输入数据 x_train
和对应的目标输出 y_train
。接着定义了一个线性回归模型 LinearRegressionModel
,该模型包含一个线性层 nn.Linear(1, 1)
。然后定义了损失函数 MSELoss
和优化器 SGD
。
在训练循环中,我们执行了前向传播、计算损失、执行反向传播并更新模型参数的步骤。每训练10个周期,我们打印一次当前的损失值。训练完成后,我们使用 with torch.no_grad()
语句测试模型的预测结果,并打印出模型学到的权重和偏置。
这是一个非常基础的 PyTorch 入门示例,适合初学者理解 PyTorch 的基本概念和操作流程。
译者:Miranda,课程原网址https://microsoft.github.io/AI-For-Beginners/通过微软为期12周、共24课时的课程,一起来探索人工智能(AI)的世界!在本课程中,你将深入学习符号人工智能(Symbolic AI)、神经网络(Neural Networks)、计算机视觉(Computer Vision)、自然语言处理(Natural Language Processing)等内容。如果想提升学习效果,可以亲身实践课程内容、做随堂小测试或根据课程内容开展实验。这套课程是由专家设计的人工智能综合指南,它非常适合初学者,覆盖了TensorFlow、PyTorch及人工智能伦理原则。今天就开始你的人工智能之旅吧!在本课程中,你将学到:实现人工智能的不同方法,包括使用了知识表示和推理的符号人工智能,它是一种“有效的老式人工智能”([GOFAI](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence))。神经网络和深度学习,它们是现代人工智能的核心,我们将使用两个最流行的框架([TensorFlow](https://www.tensorflow.org/)和[PyTorch](https://pytorch.org/))中的代码来说明这两个主题背后的重要概念。处理图像和文本的神经架构,我们将介绍最新的模型,但在最前沿的信息上可能会有所欠缺。