Pytorch学习笔记(1)

news2024/11/28 2:51:25

目录

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=<AddmmBackward>)

在上面的示例中,我们首先定义了一个简单的神经网络模型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人工智能开发、数据分析、机器学习,具有丰富的教育培训经验

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

 关注博主、点赞、收藏、

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

  即可参与送书活动!

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/764010.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是域服务(NETBASE第十一课)

域服务(NETBASE第十一课) web虚拟主机(一台服务器运行多个WEB站点) Web虚拟主机的实现方法&#xff1a; 1&#xff09;同IP不同端口&#xff08;基于端口的虚拟主机&#xff09; 2&#xff09;同端不同IP&#xff08;基于IP的虚拟主机&#xff09; 3&#xff09;同端口同I…

使用typora+PicGo+Gitee简单实现图片上传功能

本文通过配置PicGoGitee来实现typora图片上传功能&#xff0c;系统是window 注意下载的清单有&#xff1a;PicGo&#xff0c;node.js&#xff0c;配置有&#xff1a;PicGo&#xff0c;node.js&#xff0c;gitee&#xff0c;typora 看着复杂实际上并不难&#xff0c;只是繁琐&am…

OLLVM虚假控制流源码分析

文章目录 runOnFunction函数bogus函数目前源码&#xff1a;addBogusFlow函数1createAlteredBasicBlock函数原基本块&#xff1a;copy的基本块&#xff1a; addBogusFlow函数2 runOnFunction函数 if (ObfTimes < 0) {errs()<<"BogusControlFlow application numb…

缓存淘汰策略

LRU 与 LFU 缓存策略及其实现。 应用层缓存 鉴于磁盘和内存读写的差异性&#xff0c;DB 中低频写、高频读的数据适合放入内存中&#xff0c;直接供应用层读写。在项目中读取用户资料时就使用到了 LRU&#xff0c;而非放到 Redis 中。 缓存的 2 个基本实现 Set(key string, v…

RandLA-Net 复现

GPU3090 CUDA12 1、代码 [github地址] git clone --depth1 https://github.com/QingyongHu/RandLA-Net && cd RandLA-Net 2、虚拟环境中配置&#xff1a; 在跑代码的时候出现错误&#xff1a;open3d.so文件中函数报错。查看open3d版本发现不是要求的0.3版本&#xff…

基于PyQt5的UI界面开发——信号与槽

信号与槽的机制 PyQt5采用了一种被称为“信号与槽”机制的编程模式&#xff0c;用于处理对象间的通信和事件处理。在PyQt5中&#xff0c;信号&#xff08;signal&#xff09;是对象发出的特定事件&#xff0c;例如按钮被点击、文本被修改等。而槽&#xff08;slot&#xff09;…

攻不下dfs不参加比赛(十七)

标题 为什么练dfs题目为什么练dfs 相信学过数据结构的朋友都知道dfs(深度优先搜索)是里面相当重要的一种搜索算法,可能直接说大家感受不到有条件的大家可以去看看一些算法比赛。这些比赛中每一届或多或少都会牵扯到dfs,可能提到dfs大家都知道但是我们为了避免眼高手低有的东…

WooCommerce企业级电子商务需要了解的事情

建立成功的企业业务变得比以往任何时候都容易得多。借助各种可用的平台&#xff0c;将您的想法付诸实践是绝对可行的。 “WooCommerce 是最知名的 WordPress 网站电子商务平台之一。” 它于 2011 年推出&#xff0c;自此受到大型和小型企业的欢迎。它的流行主要归功于其各种免费…

【接口流程分析】唯品会WEB端

唯品会WEB端 来看看唯品会是怎么回事&#xff0c; 地址&#xff1a;aHR0cHM6Ly93d3cudmlwLmNvbS8 https://github.com/Guapisansan/gpss_learn_reverse 代码在这里&#xff0c;会持续更新逆向案例 免责声明&#xff1a; 此文档&#xff0c;以及脚本&#xff0c;仅用来对技术的…

七年老程序员的五六月总结:十一件有意义的事

你好&#xff0c;我是拭心&#xff0c;一名工作七年的安卓开发。 每两个月我会做一次总结&#xff0c;记下这段时间里有意义的事和值得反复看的内容&#xff0c;为的是留一些回忆、评估自己的行为、沉淀有价值的信息。 最近两周的我一直处于“战斗“状态&#xff0c;同时做好…

未来驾驶新标配;CarLuncher车载开发塑造智能娱乐导航系统

车载开发在新能源汽车的快速市场占有率增长背景下具有广阔的前景。随着环境保护意识的增强和政府对清洁能源的支持&#xff0c;新能源汽车&#xff08;如电动汽车&#xff09;在全球范围内呈现出快速增长的趋势。这种趋势为车载开发提供了许多机会和潜在市场。 新能源汽车的普…

一文搞定 Postman 接口自动化测试(全网最全版)

0 前言 本文适合已经掌握 Postman 基本用法的读者&#xff0c;即对接口相关概念有一定了解、已经会使用 Postman 进行模拟请求等基本操作。 工作环境与版本&#xff1a; Window 7&#xff08;64位&#xff09;Postman &#xff08;Chrome App v5.5.3&#xff09; P.S. 不同…

数据结构day3(2023.7.17)

一、Xmind整理&#xff1a; 二、课上练习&#xff1a; 练习1&#xff1a;时间复杂度 时间复杂度&#xff1a;只保留最高阶f(n)3*n^2n^2100nT(n)O(3*n^3n^2100n)O(3*n^3)O(n^3)1>O(1):常数阶int ta; 1ab; 1at; 1f(n)3T(n)O(3)O(3*n^0)O(n^0)O(1)2>O(n): 线性阶for…

selenium:鼠标模拟操作ActionChains

ActionChains 1.导入ActionChains包 from selenium.webdriver import ActionChains 2. 执行原理 调用ActionChains的方法时&#xff0c;不会立即执行&#xff0c;而是将所有的操作,按顺序存放在一个队列里&#xff0c;当你调用perform()方法时&#xff0c;队列中的事件…

EMC学习笔记(十五)射频PCB的EMC设计(二)

射频PCB的EMC设计&#xff08;二&#xff09; 1.滤波1.1 电源和控制线的滤波1.2 频率合成器数据线、时钟线、使能线的滤波 2.接地2.1 接地分类2.2 大面积接地2.3 分组就近接地2.4 射频器件接地2.5 接地时应该注意的问题2.6 接地平面的分布 1.滤波 1.1 电源和控制线的滤波 随着…

项目经理如何处理项目依赖性?

项目不是凭空产生的&#xff0c;项目管理中的依赖性涉及管理和安排项目任务&#xff0c;同时牢记其顺序和要求。如果开始任务B需要先完成任务A&#xff0c;那么可以说任务B依赖于任务A。 这现在听起来可能很简单&#xff0c;但在具有多个相互依赖的任务的复杂项目中&#xff0…

duilib绝对定位与相对定位

文章目录 前言1、绝对位置&#xff08;floattrue&#xff09;2、窗口3、布局及控件4、相对位置&#xff08;floatfalse&#xff09;5、窗口6、布局与控件7、嵌套在布局与控件之中的布局与控件 前言 duilib中窗口&#xff0c;布局&#xff0c;控件等在屏幕上的显示位置都是按照…

Selenium自动化测试-设置元素等待

selenium中有三种时间等待&#xff1a; 强制等待&#xff1a;sleep隐式等待&#xff1a;implicitly_wait显示等待&#xff1a;WebDriverWait 1.sleep 让程序暂停运行一定时间&#xff0c;等待时间到达后继续运行。 使用sleep&#xff0c;需先导入time模块&#xff0c;impor…

一.《某三国》人物属性及其相关属性

人物属性 1.找一个可以操控变化的属性来找 比如血量.坐标或者五铢(绑定金币),这里我们用五铢找 五铢只要打一个怪就会加一点 2.我们直接搜变化即可搜到 五铢地址0AD64EAC 3.我们CE给地址下访问 4.这里我们最后找第一条访问 因为他是被改变的 或者你CE给地址下写入 5.然后我…

BUFG/BUFGCE/BUFH/BUFHCE

对BUFG/BUFGCE/BUFH/BUFHCE简单了解。 下图为 7 系列 FPGA 时钟架构图&#xff1a; BUFG 全局时钟缓冲器。它的输入是IBUFG的输出&#xff0c;BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。BUFG连接的是芯片中的专用时钟资源&#xff0c;能减少信号…