当前位置: 首页 > wzjs >正文

大学精神文明建设专题网站深圳seo网站设计

大学精神文明建设专题网站,深圳seo网站设计,大连企业网站制作,如何申请公众号Pytorch 是目前常用的深度学习框架之一,比起 TF 的框架环境配置不兼容,和 Keras 由于高度封装造成的不灵活,PyTorch 无论是在学术圈还是工业界,都相当占优势。 不夸张地说,掌握了 PyTorch ,就相当于走上了…

Pytorch 是目前常用的深度学习框架之一,比起 TF 的框架环境配置不兼容,和 Keras 由于高度封装造成的不灵活,PyTorch 无论是在学术圈还是工业界,都相当占优势。

不夸张地说,掌握了 PyTorch ,就相当于走上了深度学习、机器学习、大模型的快车道。

它凭借着对初学者的友好性、灵活性,发展迅猛,也深受学生党的喜爱。

但是目前市面上的Pytorch学习资料并不系统,且很多资源都非中文版,从业者的学习门槛比较高。

整体概览

图片

部分内容

下面是在 PyTorch 中创建张量和进行基本操作的详细介绍。

1. 张量的创建

从 Python 列表或 NumPy 数组创建张量:

import torch
import numpy as np# 从列表创建张量
tensor_from_list = torch.tensor([1, 2, 3])# 从 NumPy 数组创建张量
numpy_array = np.array([4, 5, 6])
tensor_from_numpy = torch.tensor(numpy_array)

使用特定值创建张量:

# 创建全零张量
zeros_tensor = torch.zeros((3, 4))# 创建全一张量
ones_tensor = torch.ones((2, 2))# 创建指定范围的张量
range_tensor = torch.arange(0, 10, 2)# 创建均匀分布的张量
uniform_tensor = torch.rand((3, 3))# 创建正态分布的张量
normal_tensor = torch.randn((2, 2))

使用特定形状的张量:

# 创建未初始化的张量
uninitialized_tensor = torch.empty((2, 2))# 创建与现有张量相同形状的张量
like_tensor = torch.ones_like(zeros_tensor)

2. 张量的基本操作

索引和切片:

# 获取张量中的特定元素
element = tensor_from_list[1]# 切片操作
sliced_tensor = tensor_from_list[1:3]

张量的形状操作:

# 获取张量的形状
shape = tensor_from_list.shape# 改变张量的形状
reshaped_tensor = tensor_from_list.view(1, 3)# 转置张量
transposed_tensor = tensor_from_list.t()

数学运算:

# 加法
sum_tensor = tensor_from_list + tensor_from_numpy# 乘法
product_tensor = torch.matmul(zeros_tensor, ones_tensor)# 广播操作
broadcasted_tensor = tensor_from_list * 2

这些功能使得 PyTorch 成为深度学习领域的一流选择,因为它提供了方便、灵活且高效的工具来处理张量和构建神经网络模型。

自动求导

PyTorch中的自动求导(Autograd)允许用户自动计算张量的梯度,而无需手动编写反向传播算法。

Autograd的核心是计算图(computational graph),它记录了计算张量的操作,并在需要时能够生成梯度。

1. 张量的requires_grad属性

在创建张量时,可以通过设置requires_grad属性为True来指示PyTorch跟踪对该张量的操作,从而构建计算图。

import torch# 创建一个需要梯度的张量
x = torch.tensor([1.0, 2.0], requires_grad=True)

2. 张量操作和计算图

一旦设置了requires_grad=True,PyTorch将自动追踪对该张量的所有操作,构建一个计算图。这个计算图记录了张量之间的关系和操作。

y = x + 2
z = y * y * 3
out = z.mean()

上述例子中,yzout 都是通过对 x 进行操作得到的新张量,这些操作构成了计算图。

3. 计算梯度

一旦有了计算图,可以调用 backward() 方法计算梯度。梯度计算完成后,可以通过张量的 grad 属性获取梯度值。

out.backward()  # 计算梯度# 获取梯度
print(x.grad)

4. 阻止梯度追踪

在某些情况下,可能需要阻止PyTorch对某些操作的梯度追踪,可以使用 torch.no_grad() 上下文管理器或者在张量上使用 .detach() 方法。

with torch.no_grad():# 不追踪梯度的操作y = x + 2# 或者
z = y.detach()

5. 使用with torch.autograd.set_grad_enabled(False):控制梯度计算

在某些情况下,可能需要在一段代码中关闭梯度计算,可以使用上下文管理器 torch.autograd.set_grad_enabled

with torch.autograd.set_grad_enabled(False):# 在此处的操作不会被追踪,也不会计算梯度y = x + 2

6. 示例:使用自动求导进行优化

import torch.optim as optim# 定义一个变量并设置需要梯度
x = torch.tensor([1.0, 2.0], requires_grad=True)# 定义一个优化器(例如梯度下降)
optimizer = optim.SGD([x], lr=0.01)# 在循环中执行优化步骤
for _ in range(100):y = x + 2loss = y[0] * y[1]  # 这里定义了一个简单的损失函数optimizer.zero_grad()  # 清零梯度loss.backward()  # 计算梯度optimizer.step()  # 更新参数# 查看优化后的结果
print(x)

这个例子演示了如何使用自动求导来执行优化步骤,通过反向传播计算梯度并使用优化器更新参数。

总体而言,PyTorch中的自动求导提供了一个方便的工具,使得深度学习的模型训练变得更加简单和高效。

神经网络层

在 PyTorch 中,nn.Module 是构建神经网络模型的基础类。nn.Module 提供了一个模块化和灵活的方式来组织复杂的神经网络结构。通过继承 nn.Module 类,可以创建自定义的神经网络层、模型或整个神经网络。

1. 创建一个简单的神经网络层

import torch
import torch.nn as nnclass SimpleLayer(nn.Module):def __init__(self, input_size, output_size):super(SimpleLayer, self).__init__()self.linear = nn.Linear(input_size, output_size)self.relu = nn.ReLU()def forward(self, x):x = self.linear(x)x = self.relu(x)return x

上面的例子中,SimpleLayer 继承自 nn.Module,并定义了一个包含线性层(nn.Linear)和激活函数 ReLU 的简单神经网络层。forward 方法定义了前向传播的计算过程。

2. 构建更复杂的模型

可以通过将多个神经网络层组合在一起构建更复杂的模型。下面是一个简单的多层感知机 (MLP) 的例子:

class MLP(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(MLP, self).__init__()self.layer1 = SimpleLayer(input_size, hidden_size)self.layer2 = SimpleLayer(hidden_size, output_size)def forward(self, x):x = self.layer1(x)x = self.layer2(x)return x

3. 模块的嵌套和子模块

nn.Module 支持嵌套和包含其他 nn.Module 实例,这有助于构建更复杂的神经网络。子模块会自动跟踪其参数和梯度。

class ComplexModel(nn.Module):def __init__(self):super(ComplexModel, self).__init__()self.layer1 = SimpleLayer(10, 20)self.layer2 = MLP(20, 30, 5)def forward(self, x):x = self.layer1(x)x = self.layer2(x)return x

4. 访问模块的参数

通过 named_parameters()parameters() 方法可以访问模块中的所有参数。

model = ComplexModel()
for name, param in model.named_parameters():print(f"{name}: {param.size()}")

5. 模型的保存和加载

可以使用 torch.save 保存模型的状态字典,并使用 torch.load 加载模型。

# 保存模型
torch.save(model.state_dict(), 'model.pth')# 加载模型
loaded_model = ComplexModel()
loaded_model.load_state_dict(torch.load('model.pth'))

获取方式

技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

成立了 PyTorch 算法技术交流群,相关资料、技术交流&答疑,均可加我们的交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、微信搜索公众号:机器学习社区,后台回复:PyTorch 实战宝典
方式②、添加微信号:mlc2040,备注:来自CSDN + PyTorch 实战宝典

通俗易懂讲解大模型系列

  • 《大模型面试宝典》(2024版) 正式发布!
  • 《大模型实战宝典》(2024版) 正式发布!

精彩项目

CV八大项目

包括图像分类、图像分割、目标检测、目标跟踪、GAN生成、Diffusion生成、图像描述和图像检索八大任务。

图片

NLP

包括RNN、LSTM、Transformer、BERT和GPT模型详解与应用,应用的任务有文本分类、机器翻译、命名体识别、QA问答和文章生成五大任务。

图片

LLM部分

包括4个LLM部署与代码分析和一个LLM行业应用——GPT Academic(GPT 学术优化),LLM包括国内开源的四大主流模型,Qwen、ChatGLM、Baichuan和Yi。

图片

http://www.dtcms.com/wzjs/817452.html

相关文章:

  • 贵州省住房与城乡建设厅门户网站潇湘书院网站建设的目标
  • 专注江苏网站建设织梦如何做淘宝客网站
  • 网站伪静态苏州百度推广分公司电话
  • 龙岩北京网站建设网站静态化 好处
  • 一个做网站的软件校园网站建设申请报告
  • 平阳手机网站制作南宁的公司有哪些
  • 传奇手游新开服网站网站链接跳转怎么做
  • 兰溪好品质高端网站设计网站建设主要考虑哪些因素
  • 网站建设招标文件技术部分不规则网站模板
  • 网站建设分销协议河南网站优化公司
  • 网站备案注销找哪个部门品牌型网站开发
  • 如果查询网站内页的收录情况移动互联网推广
  • 郴州吧河源seo
  • 自助微信网站梦创义网站建设
  • 大连网站哪家做的好?html仿淘宝首页电子商务网站首页
  • 深圳网站建设知名公司网站开发人员薪酬
  • 郑州网站技术顾问莱州网站建设效果
  • 保卫处网站建设网站界面版式
  • 东莞网页模板建站阳萎早谢吃什么药最好
  • 2017做哪些网站能致富网站开发及维护合同
  • 建新建设集团有限公司网站装修价格
  • 中学生制作网站怎么做手机主题wordpress
  • 海口模板建站定制网站企业网站不被百度收录
  • 陕西省住房和建设厅网站上海模板网站建站
  • 餐饮环境评估在哪个网站做dede网站地图模板下载
  • 建立网站的流程的合理顺序中国人做外贸网站都卖什么手续
  • 天津市做公司网站的公司网站建设都需要哪些材料
  • 苏州公司网站建设公司杭州网站建设方案
  • wordpress外贸建站教程手机wap网站模板
  • 生活家装饰官方网站广告公司名称取名