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

自己电脑做网站好吗注册公司网上申请

自己电脑做网站好吗,注册公司网上申请,张家港做网站优化排名,北京房产网官网#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.zqtcl.cn/news/339743/

相关文章:

  • 2w网站建设模式百度应用市场
  • vps主机访问网站湖南建站网站
  • 滨州正规网站建设公司用r语言 做网站点击热力图
  • php网站模板wordpress自定义头像上传
  • 江油市规划和建设局网站一个app网站
  • 郑州网站建设up188WordPress响应式幻灯片
  • 幸运28网站代理怎么做网站后期维护工作包括哪些
  • 西安网站建设seo网络营销的职能
  • 大型网站建设哪家服务好dll网站服务
  • 怎样建设网赌网站江苏外贸网站建设
  • 做外贸有哪些网站怎么在360自己做网站
  • 企业网站建立费用 作什么科目深圳服装外贸公司
  • 淘宝网站建设代码视频开放api
  • 清廉企业建设骨科医院网站优化服务商
  • 公司网站建设开源平台网站建设推来客在哪里
  • 本地电脑静态网站建设半年工作总结
  • 潮州哪里做网站html in wordpress
  • 在浏览器上建设网站平面作品集展示图片
  • 建设网站的技术手段天津泰达建设集团网站
  • 怎样做读书会网站广州公司注册在线
  • 多个网站做计划响水哪家专业做网站
  • 中国建设基础设施总公司 网站怒江网站建设
  • 做电脑网站手机能显示不出来怎么办有友情链接的网站
  • 潘家园做网站的公司网络营销管理系统
  • 如何在各大平台推广博客网站seo
  • 网站地图那么建设国内哪个网站做水产比较大
  • 可以做图片视频的网站网站策划网
  • 在阿里云做的网站怎么移动南宁seo咨询
  • 电子商务网站开发课程设计论文温州市微网站制作电话
  • 常州住房和城乡建设部网站网站开发哪家公司口碑好