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

海南省建设网站首页网站流量的重要性

海南省建设网站首页,网站流量的重要性,免费下载一个app,门户网站模板下载#x1f497;#x1f497;#x1f497;欢迎来到我的博客#xff0c;你将找到有关如何使用技术解决问题的文章#xff0c;也会找到某个技术的学习路线。无论你是何种职业#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章#xff0c;也欢… 欢迎来到我的博客你将找到有关如何使用技术解决问题的文章也会找到某个技术的学习路线。无论你是何种职业我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章也欢迎在文章下方留下你的评论和反馈。我期待着与你分享知识、互相学习和建立一个积极的社区。谢谢你的光临让我们一起踏上这个知识之旅 文章目录 引言什么是多分类问题处理步骤多分类问题MNIST dataset的实现NLLLoss 和 CrossEntropyLoss 引言 当处理多分类问题时PyTorch是一种非常有用的深度学习框架。在这篇博客中我们将讨论如何使用PyTorch来解决多分类问题。我们将介绍多分类问题的基本概念构建一个简单的多分类神经网络模型并演示如何准备数据、训练模型和评估结果。 什么是多分类问题 多分类问题是一种机器学习任务其中目标是将输入数据分为多个不同的类别或标签。与二分类问题不同多分类问题涉及到三个或更多类别的分类任务。例如图像分类问题可以将图像分为不同的类别如猫、狗、鸟等。 处理步骤 准备数据 收集和准备数据集确保每个样本都有相应的标签以指明其所属类别。 划分数据集为训练集、验证集和测试集以便进行模型训练、调优和性能评估。 数据预处理 对数据进行预处理例如归一化、标准化、缺失值处理或数据增强以确保模型训练的稳定性和性能。 选择模型架构 选择适当的深度学习模型架构通常包括卷积神经网络CNN、循环神经网络RNN、Transformer等具体取决于问题的性质。 定义损失函数 为多分类问题选择适当的损失函数通常是交叉熵损失Cross-Entropy Loss。 选择优化器 选择合适的优化算法如随机梯度下降SGD、Adam、RMSprop等以训练模型并调整权重。 训练模型 使用训练数据集来训练模型。在每个训练迭代中通过前向传播和反向传播来更新模型参数以减小损失函数的值。 评估模型 使用验证集来评估模型性能。常见的性能指标包括准确性、精确度、召回率、F1分数等。 调优模型 根据验证集的性能对模型进行调优可以尝试不同的超参数设置、模型架构变化或数据增强策略。 测试模型 最终在独立的测试数据集上评估模型的性能以获得最终性能评估。 部署模型 将训练好的模型部署到实际应用中用于实时或批处理多分类任务。 多分类问题 之前我们讨论的问题都是二分类居多对于二分类问题我们若求得p(0)南无p(1)1-p(0)还是比较容易的但是本节我们将引入多分类那么我们所求得就转化为p(i)(i1,2,3,4…)同时我们需要满足以上概率中每一个都大于0且总和为1。 处理多分类问题这里我们新引入了一个称为Softmax Layer 接下来我们一起讨论一下Softmax Layer层 首先我们计算指数计算e的zi次幂原因很简单e的指数函数恒大于0分母就是e的z1次幂e的z2次幂e的z3次幂…求和这样所有的概率和就为1了。 下图形象的展示了SoftmaxExponent这里指指数和上面我们说的一样先求指数这样有了分子再将所有指数求和最后一一divide得到了每一个概率。 接下来我们一起来看看损失函数 如果使用numpy进行实现根据刘二大人的代码可以进行如下的实现 import numpy as np y np.array([1,0,0]) z np.array([0.2,0.1,-0.1]) y_pred np.exp(z)/np.exp(z).sum() loss (-y * np.log(y_pred)).sum() print(loss)运行结果如下 注意神经网络的最后一层不需要激活 在pytorch中 import torch y torch.LongTensor([0]) # 长整型 z torch.Tensor([[0.2, 0.1, -0.1]]) criterion torch.nn.CrossEntropyLoss() loss criterion(z, y) print(loss)运行结果如下 下面根据一个例子进行演示 criterion torch.nn.CrossEntropyLoss() Y torch.LongTensor([2,0,1]) Y_pred1 torch.Tensor([[0.1, 0.2, 0.9], [1.1, 0.1, 0.2], [0.2, 2.1, 0.1]]) Y_pred2 torch.Tensor([[0.8, 0.2, 0.3], [0.2, 0.3, 0.5], [0.2, 0.2, 0.5]]) l1 criterion(Y_pred1, Y) l2 criterion(Y_pred2, Y) print(Batch Loss1 , l1.data, \nBatch Loss2, l2.data)运行结果如下 根据上面的代码可以看出第一个损失比第二个损失要小。原因很简单想对于Y_pred1每一个预测的分类与Y是一致的而Y_pred2则相差了一下所以损失自然就大了些 MNIST dataset的实现 首先第一步还是导包 import torch from torchvision import transforms from torchvision import datasets from torch.utils.data import DataLoader import torch.nn.functional as F import torch.optim as optim之后是数据的准备 batch_size 64 # transform可以将其转化为0-1形状的转换从28×28转换为1×28×28 transform transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.1307, ), (0.3081, )) # 均值mean和标准差std ]) train_dataset datasets.MNIST(root../dataset/mnist/, trainTrue,downloadTrue,transformtransform) train_loader DataLoader(train_dataset,shuffleTrue,batch_sizebatch_size) test_dataset datasets.MNIST(root../dataset/mnist/, trainFalse,downloadTrue,transformtransform) test_loader DataLoader(test_dataset,shuffleFalse,batch_sizebatch_size)接下来我们构建网络 class Net(torch.nn.Module):def __init__(self):super(Net, self).__init__()self.l1 torch.nn.Linear(784, 512) self.l2 torch.nn.Linear(512, 256) self.l3 torch.nn.Linear(256, 128) self.l4 torch.nn.Linear(128, 64) self.l5 torch.nn.Linear(64, 10)def forward(self, x):x x.view(-1, 784)x F.relu(self.l1(x)) x F.relu(self.l2(x)) x F.relu(self.l3(x)) x F.relu(self.l4(x)) return self.l5(x) # 注意最后一层不做激活 model Net()之后定义损失和优化器 criterion torch.nn.CrossEntropyLoss() optimizer optim.SGD(model.parameters(), lr0.01, momentum0.5)接下来就进行训练了 def train(epoch):running_loss 0.0for batch_idx, data in enumerate(train_loader, 0): inputs, target dataoptimizer.zero_grad()# forward backward updateoutputs model(inputs)loss criterion(outputs, target)loss.backward()optimizer.step()running_loss loss.item()if batch_idx % 300 299:print([%d, %5d] loss: %.3f % (epoch 1, batch_idx 1, running_loss / 300)) running_loss 0.0def test():correct 0total 0with torch.no_grad(): # 这里可以防止内嵌代码不会执行梯度for data in test_loader:images, labels dataoutputs model(images)_, predicted torch.max(outputs.data, dim1)total labels.size(0)correct (predicted labels).sum().item()print(Accuracy on test set: %d %% % (100 * correct / total))最后调用执行 if __name__ __main__: for epoch in range(10): train(epoch)test()NLLLoss 和 CrossEntropyLoss NLLLoss 和 CrossEntropyLoss也称为交叉熵损失是深度学习中常用的两种损失函数用于测量模型的输出与真实标签之间的差距通常用于分类任务。它们有一些相似之处但也有一些不同之处。 相同点 用途两者都用于分类任务评估模型的输出和真实标签之间的差异以便进行模型的训练和优化。 数学基础NLLLoss 和 CrossEntropyLoss 本质上都是交叉熵损失的不同变种它们都以信息论的概念为基础衡量两个概率分布之间的相似度。 输入格式它们通常期望模型的输出是一个概率分布表示各个类别的预测概率以及真实的标签。不同点 输入格式NLLLoss 通常期望输入是对数概率log probabilities而 CrossEntropyLoss 通常期望输入是未经对数化的概率。在实际应用中CrossEntropyLoss 通常与softmax操作结合使用将原始模型输出转化为概率分布而NLLLoss可以直接使用对数概率。 对数化NLLLoss 要求将模型输出的概率经过对数化取对数以获得对数概率然后与真实标签的离散概率分布进行比较。CrossEntropyLoss 通常在 softmax 操作之后直接使用未对数化的概率值与真实标签比较。 输出维度NLLLoss 更通用可以用于多种情况包括多类别分类和序列生成等任务因此需要更多的灵活性。CrossEntropyLoss 通常用于多类别分类任务。总之NLLLoss 和 CrossEntropyLoss 都用于分类任务但它们在输入格式和使用上存在一些差异。通常选择哪个损失函数取决于你的模型输出的格式以及任务的性质。如果你的模型输出已经是对数概率形式通常使用NLLLoss否则通常使用CrossEntropyLoss。 挑战与创造都是很痛苦的但是很充实。
http://www.tj-hxxt.cn/news/132401.html

相关文章:

  • 做网站项目主要技术北京市网上服务平台登录
  • 西安百度网站快速优化网站用小程序
  • 网站seo关键词排名优化wordpress 四亩
  • 教你做文案的网站推荐网站设计资源
  • 青州网站建设青州上海天华建筑设计有限公司合肥分公司
  • 免费做苗木网站软件开发项目经理职责
  • designer怎么做网站企业邮箱与个人邮箱有什么区别
  • wordpress 电影模版有谁知道网站优化怎么做
  • 生物医药网站建设wordpress 链接提交表单
  • 山东省建设执业师网站如何查看网站图片尺寸
  • 可以建设网站的软件做网站ceo
  • 商业网站和企业网站的区别南京网站建站公司
  • 做网站必须开厂吗网络网站是多少钱一年
  • wordpress仿站容易被收录不php网站开发项目实战
  • 电力建设网站进不去网站手机端生成
  • 免费网站建站教程廊坊网站排名优化公司
  • 创建网站代码福州营销网站建设模板
  • 电子商务网站的建设方式怎么写网站建设方案书
  • 制作网站需要哪些成本什么网站好建设
  • 网站开发中都引用什么文献怎么才能学网页设计
  • 南阳网站建设口碑馆陶网站建设费用
  • c 做网站流程企业做网站方案
  • 郑州专业网站制作费用报价没有备案的网站可以用ip访问吗
  • 温州做网站哪家公司好太原运营推广公司
  • 网站服务器自己做哪家网站建设做的好
  • 精品课程网站开发项目用wordpress做微博
  • 网站建设综合提升网站浏览量
  • 网站一般用什么做的如何让单位网站做防护
  • 百度如何建设自己的网站wordpress首页添加音乐
  • 安徽人防工程建设网站伍佰亿书画网网站