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

专业网站制作网络公司电商网络推广

专业网站制作网络公司,电商网络推广,高端网站建设苏州,免费网站收录提交多分类问题在最后的输出层采用的Softmax Layer#xff0c;其具有两个特点#xff1a;1.每个输出的值都是在(0,1)#xff1b;2.所有值加起来和为1. 假设是最后线性层的输出#xff0c;则对应的Softmax function为#xff1a; 输出经过sigmoid运算即可是西安输出的分类概率…多分类问题在最后的输出层采用的Softmax Layer其具有两个特点1.每个输出的值都是在(0,1)2.所有值加起来和为1. 假设是最后线性层的输出则对应的Softmax function为 输出经过sigmoid运算即可是西安输出的分类概率都大于0且总和为1。 上图的交叉熵损失就包含了softmax计算和右边的标签输入计算即框起来的部分 所以在使用交叉熵损失的时候神经网络的最后一层是不要做激活的因为把它做成分布的激活是包含在交叉熵损失里面的最后一层不要做非线性变换直接交给交叉熵损失。 如上图做交叉熵损失时要求y是一个长整型的张量构造时直接用 criterion torch.nn.CrossEntropyLoss() 3个类别分别是2,0,1 Y_pred1 ,Y_pred2还是线性输出没经过softmax,还不是概率分布比如Y_pred10.9最大表示对应为第3个的概率最大和2吻合1.1最大表示对应为第1个的概率最大和0吻合2.1最大表示对应为第2个的概率最大和1吻合那么Y_pred1 的损失会比较小 对于Y_pred20.8最大表示对应为第1个的概率最大和0不吻合0.5最大表示对应为第3个的概率最大和2不吻合0.5最大表示对应为第3个的概率最大和2不吻合那么Y_pred2 的损失会比较大 Exercise 9-1: CrossEntropyLoss vs NLLLoss What are the differences? • Reading the document: • https://pytorch.org/docs/stable/nn.html#crossentropyloss • https://pytorch.org/docs/stable/nn.html#nllloss • Try to know why: • CrossEntropyLoss LogSoftmax NLLLoss 为什么要用transform transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307, ), (0.3081, )) ]) PyTorch读图像用的是python的imageLibrary,就是PIL现在用的都是pillowpillow读进来的图像用神经网络处理的时候神经网络有一个特点就是希望输入的数值比较小最好是在-1到1之间最好是输入遵从正态分布这样的输入对神经网络训练是最有帮助的 原始图像是28*28的像素值在0到255之间我们把它转变成图像张量像素值是0到1 在视觉里面灰度图就是一个矩阵但实际上并不是一个矩阵我们把它叫做单通道图像彩色图像是3通道通道有宽度和高度一般我们读进来的图像张量是WHC(宽高通道) 在PyTorch里面我们需要转化成CWH,把通道放在前面是为了在PyTorch里面进行更高效的图像处理卷积运算。所以拿到图像之后我们就把它先转化成pytorch里面的一个Tensor把0到255的值变成0到1的浮点数然后把维度由2828变成128*28的张量由单通道变成多通道 这个过程可以用transforms的ToTensor这个函数实现 归一化 transforms.Normalize((0.1307, ), (0.3081, )) 这里的0.1307,0.3081是对Mnist数据集所有的像素求均值方差得到的 也就是说将来拿到了图像先变成张量然后Normalize切换到0,1分布然后供神经网络训练 如上图定义好transform变换之后直接把它放到数据集里面为什么要放在数据集里面呢是为了在读取第i个数据的时候直接用transform处理 模型 输入是一组图像激活层改用Relu 全连接神经网络要求输入是一个矩阵 所以需要把输入的张量变成一阶的这里的N表示有N个图片 view函数可以改变张量的形状-1表示将来自动去算它的值是多少比如输入是n128*28 将来会自动把n算出来输入了张量就知道形状就知道有多少个数值 最后输出是N,10因为是有0-9这10个标签嘛10表示该图像属于某一个标签的概率现在还是线性值我们再用softmax把它变成概率 #沿着第一个维度找最大值的下标返回值有两个因为是10列嘛返回值一个是每一行的最大值另一个是最大值的下标每一个样本就是一行每一行有10个量行是第0个维度列是第1个维度 MNIST数据集训练代码 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# prepare datasetbatch_size 64transform transforms.Compose([transforms.ToTensor(), #先将图像变换成一个张量tensor。transforms.Normalize((0.1307,), (0.3081,))#其中的0.1307是MNIST数据集的均值0.3081是MNIST数据集的标准差。 ]) # 归一化,均值和方差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)# design model using class 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):# 28 * 28 784# 784 28 * 28,即将N *1*28*28转化成 N *1*784x x.view(-1, 784) # -1其实就是自动获取mini_batchx 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()#CrossEntropyLoss LogSoftmax NLLLoss。 #也就是说使用CrossEntropyLoss最后一层(线性层)是不需要做其他变化的 #使用NLLLoss之前需要对最后一层(线性层)先进行SoftMax处理再进行log操作。# construct loss and optimizer criterion torch.nn.CrossEntropyLoss() #momentum 是带有优化的一个训练过程参数 optimizer optim.SGD(model.parameters(), lr0.01, momentum0.5)# training cycle forward, backward, updatedef train(epoch):running_loss 0.0#enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列#同时列出数据和数据下标一般用在 for 循环当中。#enumerate(sequence, [start0])for batch_idx, data in enumerate(train_loader, 0):# 获得一个批次的数据和标签inputs, target dataoptimizer.zero_grad()#forward backward update# 获得模型预测结果(64, 10)outputs model(inputs)# 交叉熵代价函数outputs(64,10),target64loss 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)#orch.max的返回值有两个第一个是每一行的最大值是多少第二个是每一行最大值的下标(索引)是多少。_, predicted torch.max(outputs.data, dim1) # dim 1 列是第0个维度行是第1个维度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()
http://www.zqtcl.cn/news/344846/

相关文章:

  • 琪觅公司网站开发c语言开发环境
  • 在哪个网站上做实验仪器比较好信息服务平台有哪些
  • 淘宝网站的建设目的是什么意思做雕塑设计的网站
  • 猎头网站模板个人社保缴费年限怎么查询
  • 博客网站设计及说明wordpress 显示 列表
  • 佛山制作手机网站莆田自助建站软件
  • 建邺做网站价格网站做换肤
  • 佛山有什么网站室内装饰设计怎么样
  • 智能建站与正常的网站购买 做网站 客户
  • 哪个是网络营销导向网站建设的基础微信商城开店需要费用吗
  • 宁波住房和建设局网站首页福州有做网站引流的吗
  • 国外科技类网站戴尔网站建设
  • 视频播放网站模板洞泾做网站公司
  • 深圳大学网站建设中美军事最新消息
  • gta5可用手机网站大全佛山网站建设服务
  • 智能建站软件哪个好智慧城市建设评价网站
  • 做网站用什么配资电脑织梦做的网站织梦修改网页模板
  • 手机网站制作吧网店营销策略
  • 管理员修改网站的参数会对网站的搜效果产生什么影响?网站建设新闻+常识
  • WordPress主题没有删除网站优化 工具
  • 建设外贸商城网站制作外国网站域名在哪查
  • 青浦练塘网站建设关键词优化的策略有哪些
  • 做网站链接怎么弄上海万户网络技术有限公司
  • 嵌入字体的网站网站结构和布局区别
  • 莆田网站建设五维网络有限公司零基础网站开发要学多久
  • 重庆官方网站查询系统2020最近的新闻大事10条
  • 中国网站建设公司排行榜成都彩票网站建设
  • 网站域名解析失败个人推广网站
  • 东莞网站建设网络公司排名卓业网站建设
  • 建立自己的网站平台的好处高校英文网站建设