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

做海免费素材网站北流建设局网站

做海免费素材网站,北流建设局网站,北京东直门+网站建设,wordpress 管理密码博客导读#xff1a; 《AI—工程篇》 AI智能体研发之路-工程篇#xff08;一#xff09;#xff1a;Docker助力AI智能体开发提效 AI智能体研发之路-工程篇#xff08;二#xff09;#xff1a;Dify智能体开发平台一键部署 AI智能体研发之路-工程篇#xff08;三 《AI—工程篇》 AI智能体研发之路-工程篇一Docker助力AI智能体开发提效 AI智能体研发之路-工程篇二Dify智能体开发平台一键部署 AI智能体研发之路-工程篇三大模型推理服务框架Ollama一键部署 AI智能体研发之路-工程篇四大模型推理服务框架Xinference一键部署 AI智能体研发之路-工程篇五大模型推理服务框架LocalAI一键部署 《AI—模型篇》 AI智能体研发之路-模型篇一大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用 AI智能体研发之路-模型篇二DeepSeek-V2-Chat 训练与推理实战 AI智能体研发之路-模型篇三中文大模型开、闭源之争​​​​​​​  AI智能体研发之路-模型篇四一文入门pytorch开发 目录 一、引言 二、pytorch介绍 2.1 pytorch历史 2.2 pytorch特点 2.2.1 支持GPU加速的张量计算库 2.2.2 包含自动求导系统的动态图机制 2.3 pytorch安装 三、pytorch实战 3.1 引入依赖的python库 3.2 定义三层神经网络 3.3 训练数据准备  3.4 实例化模型、定义损失函数与优化器 3.5 启动训练迭代收敛 3.6 模型评估  3.7 可以直接跑的代码  四、总结 一、引言 要深入了解大模型底层原理先要能手撸transformer模型结构在这之前pytorch、tensorflow等深度学习框架必须掌握之前做深度学习时用的tensorflow做aigc之后接触pytorch多一些今天写一篇pytorch的入门文章吧感兴趣的可以一起聊聊。 二、pytorch介绍 2.1 pytorch历史 PyTorch由facebook人工智能研究院研发2017年1月被提出是一个开源的Python机器学习库基于Torch用于自然语言处理等应用程序。PyTorch既可以看作加入了GPU支持的numpy同时也可以看成一个拥有自动求导功能的强大的深度神经网络。 ​PyTorch的前身是Torch其底层和Torch框架一样但是使用Python重新写了很多内容不仅更加灵活支持动态图而且提供了Python接口。它是由Torch7团队开发是一个以Python优先的深度学习框架不仅能够实现强大的GPU加速同时还支持动态神经网络。  2.2 pytorch特点 Pytorch是一个python包提供两个高级功能 2.2.1 支持GPU加速的张量计算库 张量tensor可以理解为多位数组是Pytorch的基本计算单元Pytorch的特性就是可以基于GPU快速完成张量的计算包括求导、切片、索引、数学运算、线性代数、归约等 ​ import torch import torch.nn.functional as F# 1. 张量的创建 x torch.tensor([[1, 2, 3], [4, 5, 6]]) y torch.tensor([[1, 2, 3], [4, 5, 6]]) print(x) #tensor([[1, 2, 3],[4, 5, 6]]) print(y) #tensor([[1, 2, 3],[4, 5, 6]])# 2. 张量的运算 zxy print(z) #tensor([[2, 4, 6],[8, 10, 12]])# 3. 张量的自动求导 x torch.tensor(3.0, requires_gradTrue) print(x.grad) #Noney x**2 y.backward() print(x.grad) #tensor(6.) 2.2.2 包含自动求导系统的动态图机制 Pytorch提供了一种独一无二的构建神经网络的方式动态图机制 不同于TensorFlow、Caffe、CNTK等静态神经网络网络构建一次反复使用如果修改了网络不得不重头开始。 在Pytorch中使用了一种“反向模式自动微分的技术reverse-mode auto-differentiation”允许在零延时或开销的情况下任意更改网络。​ 2.3 pytorch安装 这里建议大家采用conda创建环境采用pip管理pytorch包 1.建立名为pytrainpython版本为3.11的conda环境 conda create -n pytrain python3.11 conda activate pytrain ​   2.采用pip下载torch和torchvision包 pip install torch torchvision torchmetrics -i https://mirrors.cloud.tencent.com/pypi/simple ​  这里未指定版本默认下载最新版本torch-2.3.0、torchvision-0.18.0以及其他一堆依赖。  三、pytorch实战 动手实现一个三层DNN网络 3.1 引入依赖的python库 这里主要是torch、torch.nn网络、torch.optim优化器、torch.utils.data数据处理等 import torch # 导入pytorch import torch.nn as nn # 神经网络模块 import torch.optim as optim # 优化器模块 from torch.utils.data import DataLoader, TensorDataset # 数据集模块 3.2 定义三层神经网络 引入nn.Module类编写构造函数定义网络结构编写前向传播过程定义激活函数。 通过继承torch.nn.Module类对神经网络层进行构造Module类在pytorch中非常重要他是所有神经网络层和模型的基类。定义模型构造函数__init__在这里定义网络结构输入为每一层的节点数采用torch.nn.Linear这个类定义全连接线性层进行线性变换通过第一层节点输入数据*权重矩阵n * [n,k] k加偏置项再配以激活函数得到下一层的输入。定义前向传播forward过程采用relu、sigmod、tanh等激活函数对每一层计算得到的原始值归一化输出。一般建议采用relu。sigmod的导数在0、1极值附近会接近于0产生“梯度消失”的问题较长的精度会导致训练非常缓慢甚至无法收敛。relu导数一直为1更好的解决了梯度消失问题。 # 定义三层神经网络模型 class ThreeLayerDNN(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(ThreeLayerDNN, self).__init__()self.fc1 nn.Linear(input_size, hidden_size) # 第一层全连接层self.fc2 nn.Linear(hidden_size, hidden_size) # 第二层全连接层self.fc3 nn.Linear(hidden_size, output_size) # 输出层self.sigmoid nn.Sigmoid() # 二分类输出层使用Sigmoid激活函数def forward(self, x):x torch.relu(self.fc1(x)) # 使用ReLU激活函数x torch.relu(self.fc2(x)) # 中间层也使用ReLU激活函数x torch.sigmoid(self.fc3(x)) # 二分类输出层使用Sigmoid激活函数return x 3.3 训练数据准备  定义输入的特征数、隐层节点数、输出类别数样本数采用torch.randn、torch.randint函数构造训练数据采用TensorDataset、DataLoader类分别进行张量数据集构建以及数据导入 # 数据准备 input_size 1000 # 输入特征数 hidden_size 512 # 隐藏层节点数 output_size 2 # 输出类别数 num_samples 1000 # 样本数 # 示例数据实际应用中应替换为真实数据 X_train torch.randn(num_samples, input_size) y_train torch.randint(0, output_size, (num_samples,))# 数据加载 dataset TensorDataset(X_train, y_train) data_loader DataLoader(dataset, batch_size32, shuffleTrue) 3.4 实例化模型、定义损失函数与优化器 损失函数与优化器是机器学习的重要概念先看代码nn来自于torch.nnoptim来自于torch.optim均为torch封装的工具类 # 实例化模型 model ThreeLayerDNN(input_size, hidden_size, output_size)# 定义损失函数和优化器 criterion nn.CrossEntropyLoss() # 适合分类问题 optimizer optim.Adam(model.parameters(), lr0.001) 损失函数用于衡量模型预测值与真实值的差距是模型优化的目标。常见损失函数为 均方误差损失MSE用于回归问题衡量预测值与真实值之间的平方差的平均值。交叉熵损失Cross Entropy Loss用于分类问题衡量预测概率分布与真实分布之间的差距。二进制交叉熵损失Binary Cross-Entropy Loss是一种用于二分类任务的损失函数通常用于测量模型的二分类输出与实际标签之间的差距不仅仅应用于0/1两个数0-1之间也都能学习 优化器优化算法用于调整模型参数以最小化损失函数。常见的优化算法为 随机梯度下降SGD通过对每个训练样本计算梯度并更新参数计算简单但可能会陷入局部最优值。Adam结合了动量和自适应学习率调整的方法能够快速收敛且稳定性高广泛应用于各种深度学习任务。 3.5 启动训练迭代收敛 模型训练可以简单理解为一个“双层for循环” 第一层for循环迭代的轮数这里是10轮         第二层for循环针对每一条样本前、后向传播迭代一遍网络1000条样本就迭代1000次。 所以针对10轮迭代每轮1000条样本要迭代网络10*100010000次。 # 训练循环 num_epochs 10 for epoch in range(num_epochs):model.train() # 设置为训练模式running_loss 0.0for i, (inputs, labels) in enumerate(data_loader, 0):optimizer.zero_grad() # 清零梯度outputs model(inputs)loss criterion(outputs, labels)loss.backward() # 反向传播optimizer.step() # 更新权重running_loss loss.item()print(fEpoch {epoch 1}, Loss: {running_loss / (i 1)})print(Training finished.) 运行后可以看到loss逐步收敛​ 3.6 模型评估  通过引入torchmetrics库对模型效果进行评估主要分为以下几步 构造测试集数据测试集数据加载将模型切至评估模式初始化模型准确率与召回率的计算器循环测试样本更新准确率与召回率计算器打印输出 import torchmetrics # 导入torchmetricstest_num_samples 200 # 测试样本数 test_X_train torch.randn(test_num_samples, input_size) test_y_train torch.randint(0, output_size, (test_num_samples,))# 数据加载 test_dataset TensorDataset(test_X_train,test_y_train) test_data_loader DataLoader(test_dataset, batch_size32, shuffleTrue)# 在模型训练完成后进行评估 # 首先我们需要确保模型在评估模式下 model.eval()# 初始化准确率和召回率的计算器 accuracy torchmetrics.Accuracy(taskmulticlass, num_classesoutput_size) recall torchmetrics.Recall(taskmulticlass, num_classesoutput_size)with torch.no_grad(): # 确保在评估时不进行梯度计算for inputs, labels in test_data_loader:outputs model(inputs)preds torch.softmax(outputs, dim1)# 更新指标计算器accuracy.update(preds, labels)recall.update(preds, labels)# 打印准确率和召回率 print(fAccuracy: {accuracy.compute():.4f}) print(fRecall: {recall.compute():.4f})print(Evaluation finished.) 运行后可以输出模型的准确率与召回率由于采用随机生成的测试数据且迭代轮数较少具体数值不错参考可以根据自己需要丰富数据。 ​ 3.7 可以直接跑的代码  附可以直接运行的代码先跑起来再一行行研究 import torch # 导入pytorch import torch.nn as nn # 神经网络模块 import torch.optim as optim # 优化器模块 from torch.utils.data import DataLoader, TensorDataset # 数据集模块# 定义三层神经网络模型 class ThreeLayerDNN(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(ThreeLayerDNN, self).__init__()self.fc1 nn.Linear(input_size, hidden_size) # 第一层全连接层self.fc2 nn.Linear(hidden_size, hidden_size) # 第二层全连接层self.fc3 nn.Linear(hidden_size, output_size) # 输出层self.sigmoid nn.Sigmoid() # 二分类输出层使用Sigmoid激活函数def forward(self, x):x torch.relu(self.fc1(x)) # 使用ReLU激活函数x torch.relu(self.fc2(x)) # 中间层也使用ReLU激活函数x torch.sigmoid(self.fc3(x)) # 二分类输出层使用Sigmoid激活函数return x# 数据准备 input_size 1000 # 输入特征数 hidden_size 512 # 隐藏层节点数 output_size 2 # 输出类别数 num_samples 1000 # 样本数 # 示例数据实际应用中应替换为真实数据 X_train torch.randn(num_samples, input_size) y_train torch.randint(0, output_size, (num_samples,))# 数据加载 dataset TensorDataset(X_train, y_train) data_loader DataLoader(dataset, batch_size32, shuffleTrue)# 实例化模型 model ThreeLayerDNN(input_size, hidden_size, output_size)# 定义损失函数和优化器 criterion nn.CrossEntropyLoss() # 适合分类问题 optimizer optim.Adam(model.parameters(), lr0.001)# 训练循环 num_epochs 10 for epoch in range(num_epochs):model.train() # 设置为训练模式running_loss 0.0for i, (inputs, labels) in enumerate(data_loader, 0):optimizer.zero_grad() # 清零梯度outputs model(inputs)loss criterion(outputs, labels)loss.backward() # 反向传播optimizer.step() # 更新权重running_loss loss.item()print(fEpoch {epoch 1}, Loss: {running_loss / len(data_loader)})print(Training finished.)#for param in model.parameters(): # print(param.data)import torchmetrics # 导入torchmetricstest_num_samples 200 # 测试样本数 test_X_train torch.randn(test_num_samples, input_size) test_y_train torch.randint(0, output_size, (test_num_samples,))# 数据加载 test_dataset TensorDataset(test_X_train,test_y_train) test_data_loader DataLoader(test_dataset, batch_size32, shuffleTrue)# 在模型训练完成后进行评估 # 首先我们需要确保模型在评估模式下 model.eval()# 初始化准确率和召回率的计算器 accuracy torchmetrics.Accuracy(taskmulticlass, num_classesoutput_size) recall torchmetrics.Recall(taskmulticlass, num_classesoutput_size)with torch.no_grad(): # 确保在评估时不进行梯度计算for inputs, labels in test_data_loader:outputs model(inputs)# 将输出通过softmax转换为概率分布虽然CrossEntropyLoss内部做了但这里为了计算指标明确显示preds torch.softmax(outputs, dim1)# 更新指标计算器accuracy.update(preds, labels)recall.update(preds, labels)# 打印准确率和召回率 print(fAccuracy: {accuracy.compute():.4f}) print(fRecall: {recall.compute():.4f})print(Evaluation finished.) 四、总结 本文先对pytorch深度学习框架历史、特点及安装方法进行介绍接下来基于pytorch带读者一步步开发一个简单的三层神经网络程序最后附可执行的代码供读者进行测试学习。个人感觉网络结构部分比tensorflow稍微抽象一点点不过各有优劣吧初学者最好对比着学习。下一篇写tensorflow吧一起讲了大家可以对比着看。喜欢的话期待您的关注、点赞、收藏您的互动是对我最大的鼓励 如果还有时间可以看看我的其他文章 《AI—工程篇》 AI智能体研发之路-工程篇一Docker助力AI智能体开发提效 AI智能体研发之路-工程篇二Dify智能体开发平台一键部署 AI智能体研发之路-工程篇三大模型推理服务框架Ollama一键部署​​​​​​​ AI智能体研发之路-工程篇四大模型推理服务框架Xinference一键部署 AI智能体研发之路-工程篇五大模型推理服务框架LocalAI一键部署 《AI—模型篇》 AI智能体研发之路-模型篇一大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用 AI智能体研发之路-模型篇二DeepSeek-V2-Chat 训练与推理实战 AI智能体研发之路-模型篇三中文大模型开、闭源之争​​​​​​​  AI智能体研发之路-模型篇四一文入门pytorch开发
http://www.hkea.cn/news/14483264/

相关文章:

  • 黑白的网站2022年国内重大新闻事件
  • 做网站搞笑口号中国产品网企业名录
  • 做请柬的网站找工作的网站有哪些?
  • 天煜科技网站建设怎么卸载安装的wordpress
  • 答辩学网站开发知识能力要求wap网站一键生成app
  • 4399页游网站做网站推广引流效果好吗
  • 网站开发有必要用php框架北京注册公司哪个区好
  • 在线视频网站如何制作治疗腰椎间盘突出的特效药
  • 个人网站主页模板常州微网站开发
  • 南昌企业网站建设公司找人做网站毕业设计
  • html移动网站开发wordpress 淘宝客源码
  • 内蒙古两学一做网站深圳工程建设有限公司
  • 谷歌seo网站推广怎么做优化手机版网页开发者工具
  • 网站建设费用摊销会计分录世界科技与发展论坛
  • 网站建设按什么收费域名解析到别人网站
  • 做暖暖视频网站观看wap网站软件
  • 包装设计网站有哪些沙元埔做网站的公司
  • 电子商务网站建设和维护成都广告公司联系方式电话
  • 郑州专业的网站建设公司排名太原建立网站
  • 杭州的网站设计公司阿里小说网站模板
  • 网站建设需求分析调查表营销案例100例
  • 注册查询官方网站wordpress换域名媒体库不显示图片
  • 城阳网站建设成品网站货源
  • 德宏商城网站建设有没有做请帖的网站
  • 建设网站需要造价深圳广告公司联系方式电话
  • 网站建设提供书面资料清单凡科建站快车代理登录
  • 盐城做企业网站多少钱郑州网站建设易云巢
  • 超频三网站谁家做的网站制作时
  • 石大远程网页设计及网站建设答案临汾网站建设 吕梁网站建设
  • 邵阳网站优化app开发哪公司好