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

余杭区建设局网站舟山市普陀区建设局网站

余杭区建设局网站,舟山市普陀区建设局网站,个人信息管理系统,在哪里查商标注册信息softmax回归的简洁实现获取和读取数据定义和初始化模型softmax和交叉熵损失函数定义优化算法模型评价训练模型小结完整代码前两篇链接: 深度学习pytorch–softmax回归(一) 深度学习pytorch–softmax回归(二) 本文使用框架来实现模型。 获取和读取数据 我们仍然使用Fashion-M… softmax回归的简洁实现获取和读取数据定义和初始化模型softmax和交叉熵损失函数定义优化算法模型评价训练模型小结完整代码前两篇链接: 深度学习pytorch–softmax回归(一) 深度学习pytorch–softmax回归(二) 本文使用框架来实现模型。 获取和读取数据 我们仍然使用Fashion-MNIST数据集和上一节中设置的批量大小。 #获取数据集 mnist_traintorchvision.datasets.FashionMNIST(./Datasets/FashionMNIST,trainTrue,downloadFalse,transformtransforms.ToTensor()) mnist_testtorchvision.datasets.FashionMNIST(./Datasets/FashionMNIST,trainFalse,downloadFalse,transformtransforms.ToTensor())#读取数据集 batch_size256 num_workers0 #多进程加速数据读取,0则不使用多进程 train_iter torch.utils.data.DataLoader(mnist_train, batch_sizebatch_size, shuffleTrue, num_workersnum_workers) test_iter torch.utils.data.DataLoader(mnist_test, batch_sizebatch_size, shuffleFalse, num_workersnum_workers)定义和初始化模型 在softmax回归一中提到softmax回归的输出层是一个全连接层所以我们用一个线性模块就可以了。因为前面我们数据返回的每个batch样本x的形状为(batch_size, 1, 28, 28), 所以我们要先用view()将x的形状转换成(batch_size, 784)才送入全连接层。 num_inputs 784 num_outputs 10class LinearNet(nn.Module): def __init__(self,num_inputs,num_outputs):super().__init__()self.linearnn.Linear(num_inputs,num_outputs)def forward(self,x):yself.linear(x.view(x.shape[0], -1)) #等价于view(-1,num_inputs),这里是因为不想再引入num_inputs参数所以换种形式写return ynetLinearNet(num_inputs,num_outputs)然后我们使用均值为0、标准差为0.01的正态分布随机初始化模型的权重参数。 init.normal_(net.linear.weight, mean0, std0.01) init.constant_(net.linear.bias, val0) softmax和交叉熵损失函数 如果做了上一次实验那么你可能意识到了分开定义softmax运算和交叉熵损失函数可能会造成数值不稳定。因此PyTorch提供了一个包括softmax运算和交叉熵损失计算的函数。它的数值稳定性更好。 Cross_loss nn.CrossEntropyLoss()定义优化算法 我们使用学习率为0.1的小批量随机梯度下降作为优化算法。 optimizer torch.optim.SGD(net.parameters(), lr0.1)模型评价 和上一实验一样 def evaluate_accuracy(data_iter,net): #在所有样本上的准确率acc_sum,n0.0,0for X,y in data_iter:acc_sum(net(X).argmax(dim1) y).float().sum().item()ny.shape[0] #获取总数量(此处每批256)return acc_sum / n训练模型 和上一实验步骤一样。 num_epochs 5 for epoch in range(num_epochs):train_loss_sum0.0train_acc_sum0.0n0 #用来计算数据总数for X,y in train_iter:y_hatnet(X)lossCross_loss(y_hat,y).sum()loss.backward()optimizer.step()optimizer.zero_grad()train_loss_sumloss.item()train_acc_sum(y_hat.argmax(dim1) y).sum().item()ny.shape[0]test_accevaluate_accuracy(test_iter,net)print(epoch {}, loss {:.4f}, train acc {:.3f}, test acc {:.3f}.format(epoch 1, train_loss_sum / n, train_acc_sum / n, test_acc)) 输出 epoch 1, loss 0.0031, train acc 0.745, test acc 0.790 epoch 2, loss 0.0022, train acc 0.812, test acc 0.807 epoch 3, loss 0.0021, train acc 0.825, test acc 0.806 epoch 4, loss 0.0020, train acc 0.832, test acc 0.810 epoch 5, loss 0.0019, train acc 0.838, test acc 0.823小结 PyTorch提供的函数往往具有更好的数值稳定性。可以使用PyTorch更简洁地实现softmax回归。 完整代码 #使用框架来实现softmax回归 import torch import torchvision import torchvision.transforms as transforms import torch.nn as nn from torch.nn import init import torch.optim as optim#获取数据集 mnist_traintorchvision.datasets.FashionMNIST(./Datasets/FashionMNIST,trainTrue,downloadFalse,transformtransforms.ToTensor()) mnist_testtorchvision.datasets.FashionMNIST(./Datasets/FashionMNIST,trainFalse,downloadFalse,transformtransforms.ToTensor())#读取数据集 batch_size256 num_workers0 #多进程加速数据读取,0则不使用多进程 train_iter torch.utils.data.DataLoader(mnist_train, batch_sizebatch_size, shuffleTrue, num_workersnum_workers) test_iter torch.utils.data.DataLoader(mnist_test, batch_sizebatch_size, shuffleFalse, num_workersnum_workers)#定义模型 num_inputs 784 num_outputs 10class LinearNet(nn.Module): def __init__(self,num_inputs,num_outputs):super().__init__()self.linearnn.Linear(num_inputs,num_outputs)def forward(self,x):yself.linear(x.view(x.shape[0], -1)) #等价于view(-1,num_inputs),这里是因为不想再引入num_inputs参数所以换种形式写return ynetLinearNet(num_inputs,num_outputs)#初始化模型参数 init.normal_(net.linear.weight, mean0, std0.01) init.constant_(net.linear.bias, val0) #softmax和交叉熵 Cross_loss nn.CrossEntropyLoss() #包括了softmax运算和交叉熵损失计算s #定义优化算法 optimizer optim.SGD(net.parameters(), lr0.1) #模型评价 def evaluate_accuracy(data_iter,net): #在所有样本上的准确率acc_sum,n0.0,0for X,y in data_iter:acc_sum(net(X).argmax(dim1) y).float().sum().item()ny.shape[0] #获取总数量(此处每批256)return acc_sum / n #训练模型 num_epochs 5 for epoch in range(num_epochs):train_loss_sum0.0train_acc_sum0.0n0 #用来计算数据总数for X,y in train_iter:y_hatnet(X)lossCross_loss(y_hat,y).sum()loss.backward()optimizer.step()optimizer.zero_grad()train_loss_sumloss.item()train_acc_sum(y_hat.argmax(dim1) y).sum().item()ny.shape[0]test_accevaluate_accuracy(test_iter,net)print(epoch {}, loss {:.4f}, train acc {:.3f}, test acc {:.3f}.format(epoch 1, train_loss_sum / n, train_acc_sum / n, test_acc))
http://www.sadfv.cn/news/12615/

相关文章:

  • 散文网站模板百度爱采购服务商查询
  • 社交网站wap模板陈欧做聚美优品网站
  • 阿里巴巴国际站做2个网站有用吗wordpress js放到oss
  • 更改备案网站名称wordpress主题会员付费
  • 上饶市建设局有什么网站网站建设维护费怎么说
  • 便宜的seo网站优化排名网站备案中国开头
  • 邢台移动网站建设服务网站描述怎么设置
  • 手机网站跳转怎么做关于建设网站群的报告
  • 珠宝玉器监测网站建设方案百度文档怎么免费下vvv
  • 万维网站建设个人简介网页制作模板代码
  • 嘉兴市做网站优化网址注册平台
  • 网站批量上传文章公司网站空间申请
  • 河南县网站建设公司仙桃哪里做网站
  • 无人在线观看高清完整视频下载seo入门培训学校
  • h5自适应网站模板服务器
  • 网站开发专利上海网站建设优
  • 做网站会用到什么语言营销型网站建设明细报
  • 淮安那家公司做网站网站描述如何写利于优化
  • 分分作网站备案查询网
  • 虚拟网站免费注册网站怎么推广比较好
  • 漯河网站推广公司安卓开发网站开发
  • 青岛建设网站的公司网站系统建设费用
  • 做建材的网站最好的网站建设用途
  • 网站如何添加js代码宁波外贸行业现状
  • 西宁建设网站软件学软件开发学费多少钱
  • 邯山区建设局网站邢台当地网站建设
  • 如何制作企业的网站网站规划设计的步骤
  • 临沂网站制作案例恶意点击竞价时用的什么软件
  • 购物网站的排版垂直网站建设方案
  • 怎们自己做网站网站建设管理理论