Pytorch学习笔记(1)

目录

1. 张量(Tensors)

2. 自动求导(Automatic Differentiation)

3. 神经网络的构建和训练

送书活动


PyTorch是一个基于Python的开源机器学习库,广泛应用于深度学习和人工智能领域。它提供了丰富的工具和函数,方便我们构建、训练和部署神经网络模型。

本文将围绕以下几个关键主题展开:

  1. 张量(Tensors):PyTorch中的数据基本单位。
  2. 自动求导(Automatic Differentiation):PyTorch中的自动求导机制。
  3. 神经网络的构建和训练:使用PyTorch构建和训练神经网络的基本步骤。

1. 张量(Tensors)

在PyTorch中,张量是一种多维数组的数据结构,类似于NumPy中的数组。张量是PyTorch进行数据处理和计算的基本单位。它可以是标量(0维张量)、向量(1维张量)、矩阵(2维张量)或更高维度的数组。

让我们看一个创建和操作张量的示例:

import torch

# 创建一个2x3的随机张量
x = torch.randn(2, 3)
print(x)

# 张量的形状
print(x.shape)

# 张量的大小(元素个数)
print(x.size())

# 张量的数据类型
print(x.dtype)

输出:

tensor([[ 0.2437, -0.9872,  1.3435],
        [-0.5496,  0.7643, -1.0878]])
torch.Size([2, 3])
torch.Size([2, 3])
torch.float32

在上面的示例中,我们首先使用torch.randn函数创建了一个2x3的随机张量x。我们还展示了如何获取张量的形状、大小和数据类型。

PyTorch提供了丰富的函数和方法来创建和操作张量。您可以使用这些功能来执行各种数学运算、线性代数操作和其他操作。

2. 自动求导(Automatic Differentiation)

自动求导是PyTorch的一个强大功能,它使我们能够自动计算张量的导数。自动求导机制对于训练神经网络模型和优化算法非常重要。

让我们看一个使用自动求导的示例:

import torch

# 创建一个需要求导的张量
x = torch.tensor(3.0, requires_grad=True)

# 定义一个函数 y = x^2
y = x**2

# 计算y相对于x的导数
y.backward()

# 输出导数值
print(x.grad)

输出:

tensor(6.)

在上面的示例中,我们首先创建了一个需要求导的张量x,并将其设置为requires_grad=True以指示我们希望计算它的导数。然后,我们定义了一个函数y = x^2,并使用自动求导机制计算了y相对于x的导数。最后,我们打印了导数值。

使用自动求导,我们可以轻松地计算张量的梯度,无需手动编写导数计算的代码。这对于训练神经网络模型和实现复杂的优化算法非常有用。

3. 神经网络的构建和训练

PyTorch提供了一组强大的工具和函数,用于构建、训练和评估神经网络模型。我们可以使用PyTorch的torch.nn模块来定义神经网络的层和模型结构,使用torch.optim模块来定义优化器和损失函数,以及使用自动求导机制进行模型参数的更新。

让我们看一个使用PyTorch构建和训练简单神经网络的示例:

import torch
import torch.nn as nn
import torch.optim as optim

# 定义一个简单的神经网络模型
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.fc = nn.Linear(10, 1)

    def forward(self, x):
        x = self.fc(x)
        return x

# 创建模型实例
model = Net()

# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 构造输入和目标张量
inputs = torch.randn(16, 10)
targets = torch.randn(16, 1)

# 训练模型
for epoch in range(100):
    optimizer.zero_grad()  # 清除梯度
    outputs = model(inputs)  # 前向传播
    loss = criterion(outputs, targets)  # 计算损失
    loss.backward()  # 反向传播,计算梯度
    optimizer.step()  # 更新模型参数

# 使用训练好的模型进行预测
new_inputs = torch.randn(1, 10)
predicted = model(new_inputs)
print(predicted)

输出:

tensor([[0.1321]], grad_fn=)

在上面的示例中,我们首先定义了一个简单的神经网络模型Net,其中包含一个全连接层。然后,我们创建了模型实例、定义了损失函数(均方误差)和优化器(随机梯度下降),并构造了输入和目标张量。接下来,我们使用循环对模型进行训练,包括前向传播、损失计算、反向传播和参数更新。最后,我们使用训练好的模型进行预测。

通过这个简单的示例,我们展示了如何使用PyTorch构建、训练和使用神经网络模型。

送书活动

 码上行动:零基础学会Python编程(ChatGPT版)

本书简介:

本书从零开始,由浅入深地介绍了Python编程语言的基础知识,是面向零基础编程学习者的入门教程。全书共17章,其中第1~9章为基础篇,介绍了Python的语言基础,包括环境安装、输入/输出变量、常见数据类型、数学与逻辑运算、条件判断与循环语句、复合数据类型、函数、模块、文件操作;第10~13章为进阶篇,介绍了与Python编程相关的拓展知识,包括Excel表格数据处理、使用正则表达式进行信息匹配、面向对象编程设计、多线程与多进程;第14~16章为实战篇,介绍了3个实战项目,分别是使用requests开发网络爬虫、使用tkinter开发GUI计算器、使用pygame开发飞机大战游戏;第17章为ChatGPT篇,主要介绍了初学者如何利用当下最热门的AI工具ChatGPT学习Python编程。

本书内容系统、全面,案例丰富,讲解浅显易懂,既适合Python零基础入门读者学习,也适合作为广大中职、高职院校相关专业的教材用书。

一句话推荐:

小白学Python编程的入门经典教程,结合ChatGPT应用,让你学得会、用得上、做得出!

作者简介:

袁昕(Crossin),南京大学软件工程学士,上海交通大学计算机硕士。具有互联网金融、VR/AR、游戏等行业从业经历。

曾受邀作为Python中国开发者大会讲师、腾讯云课堂评审专家。于2013年创办编程学习类自媒体“Crossin的编程教室”,全平台读者数超过30万。

贾炜,高级工程师,对多种开发语言都有深入研究,专注于Python人工智能开发、数据分析、机器学习,具有丰富的教育培训经验

Pytorch学习笔记(1)_第1张图片

                京东购买链接:https://item.jd.com/13951968.html

 关注博主、点赞、收藏、

评论区评论 “ 人生苦短,我爱python”

  即可参与送书活动!

                           开奖时间:2023-07-23 21:00:00          

你可能感兴趣的:(pytorch,python,pytorch,学习,笔记)