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

申请网站建设经费wordpress两栏主题

申请网站建设经费,wordpress两栏主题,深圳品牌设计公司招聘,网站系统建设招标公告张量和梯度 我们将深入探讨使用 PyTorch 构建自己的神经网络必须了解的 2 个基本概念#xff1a;张量和梯度。 张量 张量是 PyTorch 中的中央数据单元。它们是类似于数组的数据结构#xff0c;在功能和属性方面与 Numpy 数组非常相似。它们之间最重要的区别是 PyTorch 张量… 张量和梯度 我们将深入探讨使用 PyTorch 构建自己的神经网络必须了解的 2 个基本概念张量和梯度。 张量 张量是 PyTorch 中的中央数据单元。它们是类似于数组的数据结构在功能和属性方面与 Numpy 数组非常相似。它们之间最重要的区别是 PyTorch 张量可以在 GPU 的设备上运行以加速计算。 # 使用Tensor对象创建了一个 3x3 形状的未初始化张量。 import torch tensor_uninitialized torch.Tensor(3, 3) tensor_uninitializedtensor([[1.7676e-35, 0.0000e00, 3.9236e-44],[0.0000e00, nan, 0.0000e00],[1.3733e-14, 1.2102e25, 1.6992e-07]])# 我们还可以创建用零、一或随机值填充的张量。 tensor_rand torch.rand(3, 3) tensor_randtensor([[0.6398, 0.3471, 0.6329],[0.4517, 0.2253, 0.8022],[0.9537, 0.1698, 0.5718]])就像 Numpy 数组一样PyTorch 允许我们在张量之间执行数学运算同样的 Numpy 数组中的其他常见操作如索引和切片也可以使用 PyTorch 中的张量来实现。 # 数学运算 x torch.Tensor([[1, 2, 3],[4, 5, 6]]) tensor_add torch.add(x, x)tensor([[ 2., 4., 6.],[ 8., 10., 12.]])梯度 假设有 2 个参数 a 和 b 梯度是一个参数相对于另一个参数的偏导数。导数告诉你当你稍微改变其他一些量时给定量会发生多少变化。在神经网络中梯度是损失函数相对于模型权重的偏导数。我们只想找到带来损失函数梯度最低的权重。 PyTorch 使用torch库中的Autograd包来跟踪张量上的操作。 # 01. 默认情况下张量没有关联的梯度。 tensor torch.Tensor([[1, 2, 3],[4, 5, 6]]) tensor.requires_gradFalse# 02. 可以通过调用requires_grad_函数在张量上启用跟踪历史记录。 tensor.requires_grad_()tensor([[1., 2., 3.],[4., 5., 6.]], requires_gradTrue)# 03. 但是目前该 Tensor 还没有梯度 print(tensor.grad)None# 04. 现在让我们创建一个等于前一个张量中元素均值的新张量以计算张量相对于新张量的梯度。 mean_tensor tensor.mean() mean_tensortensor(3.5000, grad_fnMeanBackward0)# 05. 要计算梯度我们需要显式执行调用backward()函数的反向传播。 mean_tensor.backward() print(tensor.grad)tensor([[0.1667, 0.1667, 0.1667],[0.1667, 0.1667, 0.1667]])使用 PyTorch 的神经网络 我们可以将神经网络定义为扩展 torch.nn.Module 类的 Python 类。在这个类中我们必须定义 2 个基本方法 init()是类的构造函数。在这里我们必须定义构成我们网络的层。forward()是我们定义网络结构以及各层连接方式的地方。这个函数接受一个输入代表模型将被训练的特征。我将向你展示如何构建可用于分类问题的简单卷积神经网络并在 MNIST 数据集上训练它。 首先我们必须导入torch和我们需要的所有模块。可以创建我们的模型了。 import torch from torch import nn import torch.nn.functional as F import numpy as np# CNN 由 2 个卷积层组成后面是一个全局平均池化层。最后我们有 2 个全连接层和一个softmax来获得最终的输出概率。class My_CNN(nn.Module):def __init__(self):super(My_CNN, self).__init__()self.conv1 nn.Conv2d(1, 64, kernel_size(3, 3), padding1)self.conv2 nn.Conv2d(64, 64, kernel_size(3, 3), padding1)self.avg_pool nn.AvgPool2d(28)self.fc1 nn.Linear(64, 64)self.fc2 nn.Linear(64, 10)def forward(self, x):x F.relu(self.conv1(x))x F.relu(self.conv2(x))x self.avg_pool(x)x x.view(-1, 64)x F.relu(self.fc1(x))x self.fc2(x)x F.softmax(x)return x其次加载数据集直接从 PyTorch 检索 MNIST 数据集并使用 PyTorch 实用程序将数据集拆分为训练集和验证集。 from torchvision.datasets import MNIST from torch.utils.data import DataLoader from torch.utils.data.sampler import SubsetRandomSampler mnist MNIST(data, downloadTrue, trainTrue) ## create training and validation split split int(0.8 * len(mnist)) index_list list(range(len(mnist))) train_idx, valid_idx index_list[:split], index_list[split:] ## create sampler objects using SubsetRandomSampler train SubsetRandomSampler(train_idx) valid SubsetRandomSampler(valid_idx)# 使用DataLoader创建迭代器对象它提供了使用多处理 worker 并行批处理、随机播放和加载数据的能力。 train_loader DataLoader(mnist, batch_size256, samplertrain) valid_loader DataLoader(mnist, batch_size256, samplervalid) 现在我们拥有了开始训练模型的所有要素。然后再定义损失函数和优化器Adam将用作优化器交叉熵用作损失函数。 model My_CNN() optimizer torch.optim.Adam(model.parameters(), lr0.001) loss_function nn.CrossEntropyLoss() 最后开始训练所有 PyTorch 训练循环都将经过每个 epoch 和每个DataPoint在训练DataLoader 对象中。 epochs 10 for epoch in range(epochs):train_loss, valid_loss [], []for data, target in train_loader:# forward propagation outputs model(data)# loss calculationloss loss_function(outputs, target)# backward propagationoptimizer.zero_grad()loss.backward()# weights optimizationoptimizer.step()train_loss.append(loss.item())for data, target in valid_loader:outputs model(data)loss los_function(outputs, target)valid_loss.append(loss.item())print(Epoch: {}, training loss: {}, validation loss: {}.format(epoch, np.mean(train_loss), np.mean(valid_loss)))在验证阶段我们必须像在训练阶段所做的那样循环验证集中的数据。不同之处在于我们不需要对梯度进行反向传播。 with torch.no_grad():correct 0total 0for data, target in valid_loader:outputs model(images)_, predicted torch.max(outputs.data, 1)total labels.size(0)correct (predicted labels).sum().item() print(Validation set Accuracy: {} %.format(100 * correct / total)) 就是这样现在你已准备好构建自己的神经网络。你可以尝试通过增加模型复杂性向网络添加更多层来获得更好的性能。 请关注博主一起玩转人工智能及深度学习。
http://www.dnsts.com.cn/news/221755.html

相关文章:

  • 网站几个页面重庆市建设工程信息网打印
  • 手机自适应网站源码新媒体运营怎么学
  • 东莞一站式网站推广运营产品设计师网站
  • 搜索引擎优化包括以下哪些内容青岛公交优化
  • 闵行做网站费用宿迁房产网二手房
  • dw做网站怎么加视频小说网站开发
  • 安康网站开发泰安哪里有做网站app的
  • 用户体验度好的网站网站开发的ppt报告
  • 天津网站建设座机号南昌推广软件
  • 时尚网站网页设计网站建设淘宝
  • 信息平台 网站的建设html页面添加wordpress
  • 国内外免费域名解析网站域名申请备案
  • 网站开发常用技术有免费可以做的网站吗
  • 网站关键词做多了是不是影响权重简单大气网站欣赏
  • 瑞丽航空公司官方网站介绍移动互联网的网站有哪些
  • 手机网站 收录适合ps做图的素材网站
  • 全球访问量最大的10个网站北京南站核酸检测地点
  • 网站网页设计专业公司阜阳哪里有做网站的
  • 教育网站制作论文建设企业网站需要多少钱
  • 个人网站鉴赏织梦网站模板本地安装教程
  • 专业网站建设定制现在的网站推广是怎么做的
  • 做网站在国外发图片必知的网站
  • 温州自助模板建站无锡做网站公司哪家比较好
  • 如何对网站的图片做cdn淘客做的领券网站
  • joomla 做外贸网站 好的专业网络推广公司
  • 在网上如何找做网站的人中国十大小说网站排名
  • dw做网站导航条wordpress用户同步
  • 陌上香坊是做盗版的网站吗wordpress二级域名使用七牛
  • 网站建站软件泰安中文网站建设电话
  • 番禺网站建设公司哪家好网站建设合同 含维护费