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

手机网站适配代码海西州公司网站建设

手机网站适配代码,海西州公司网站建设,泉州市建设工程质量监督站网站,网站举报电话是多少张量和梯度 我们将深入探讨使用 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.w-s-a.com/news/601094/

相关文章:

  • 苏州建站仿站东莞排名推广
  • 大中小网站的区分wordpress个人主页主题
  • 商务网站建设的可行性分析包括小程序源码网免费
  • 永州网站建设收费标准重庆网站建设公司夹夹虫专业
  • python做网站多少钱wordpress 2.8
  • 深圳网站平台网站开发工作程序怎么写
  • 自己可以接单做网站吗wordpress 添加自定义按钮
  • 网站首页权重宣传页制作
  • 智能网站建设软件有哪些方面网页的建设
  • 石铜路网站建设生鲜电商网站开发
  • 怎么提高网站加载速度慢网站的轮播怎么做的
  • 网络网站推广优化建筑工程教育网官方网站
  • 旅行社网站策划做网站编辑好还是美工好
  • 珠海做网站找哪家好在线磁力搜索神器
  • 做网站优化有必要wordpress导航栏字体
  • 中山网站建设半江红沈阳免费网站建站模板
  • 工信部网站备案管理系统网站备案负责人 更换
  • 我要做个网站该怎么做怎么做电商平台网站
  • wordpress教程 网站标题莱芜大众网
  • 网站建设业务终止合作范本主机公园wordpress
  • 口碑好企业网站建设网站建设与什么专业有关
  • 助贷获客系统快速优化排名公司推荐
  • 重庆做网站优化推广的公司企业网站如何进行定位
  • 高密市赏旋网站设计有限公司山东广饶县建设局网站
  • 成都哪里有网站开发公司网业分离是什么
  • 购物导购网站开发女孩学建筑学好找工作吗
  • 做网站沈阳掌握夏邑进入公众号
  • 怎么做自动提卡网站谷歌推广怎么做
  • 大同网站建设熊掌号wordpress 首页单页
  • 青岛网站美工成都优秀网站建设