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

电脑字体wordpressseo公司电信上海百首网络

电脑字体wordpress,seo公司电信上海百首网络,厦门专业网站建设建站,互站网官网一.Mnist分类任务流程详解 1.1.引入数据集 Mnist数据集是官方的数据集#xff0c;比较特殊#xff0c;可以直接通过%matplotlib inline自动下载#xff0c;博主此处已经完成下载#xff0c;从本地文件中引入数据集。 设置数据路径 from pathlib import Path# 设置数据路…一.Mnist分类任务流程详解 1.1.引入数据集 Mnist数据集是官方的数据集比较特殊可以直接通过%matplotlib inline自动下载博主此处已经完成下载从本地文件中引入数据集。 设置数据路径 from pathlib import Path# 设置数据路径 # PATH Path(data/minst) DATA_PATH Path(data) PATH DATA_PATH / mnist# PATH.mkdir(parentsTrue, exist_okTrue) # 父目录不存在时创建父目录 parents如果父目录不存在是否创建父目录。 exist_ok只有在目录不存在时创建目录目录已存在时不会抛出异常。读取数据 import pickle import gzip# 读取数据gzip.open的作用是解压gzip文件 with gzip.open(PATH.as_posix(), rb) as f:((x_train, y_train), (x_valid, y_valid), _) pickle.load(f, encodinglatin-1)# rb表示以二进制格式打开一个文件用于只读 # 打开PATH路径的文件用以接下来的操作 # 保存数据的文件类型为pickle所以用pickle.load打开文件文件此处设置的别名为f with open(PATH.as_posix(), rb) as f:((x_train, y_train), (x_valid, y_valid), _) pickle.load(f, encodinglatin-1) as.posix()的作用 #返回使用斜杠/分割路径的字符串 #将所有连续的正斜杠、反斜杠统一修改为单个正斜杠 #相对路径 ./ 替换为空../ 则保持不变。测试引入数据集是否成功 from matplotlib import pyplot import numpy as np# 测试数据集是否导入成功 pyplot.imshow(x_train[0].reshape((28, 28)), cmapgray) print(x_train.shape)1.2.数据类型转换 数据需要转换成tensor类型才能参与后续建模训练 import torch# 通过map映射将x_train等数据全都转为torch.tensor类型。tensor类型才能参与后续建模训练 x_train, y_train, x_valid, y_valid map(torch.tensor, (x_train, y_train, x_valid, y_valid) )测试数据类型是否转换成功 n, c x_train.shape x_train, x_train.shape, y_train.min(), y_train.max() print(x_train, y_train) print(x_train.shape) print(y_train.min(), y_train.max()) 数据均为tensor类型转换成功 1.3.设置损失函数 import torch.nn.functional as F# 设置损失函数此处使用的损失函数为交叉熵 loss_func F.cross_entropy 测试损失函数 手动设置初始权重和偏置值进行测试真实情况下系统会自动帮我们初始化 bs 64 xb x_train[0:bs] # a mini-batch from x xb是x_train中0~64项的数 yb y_train[0:bs]# 实际操作中模型会自动定义权重参数不用我们手动设置 # 因为输入数据是784x1个像素点而最后得到的是十个类别所以权重矩阵的大小为784x10。 weights torch.randn([784, 10], dtype torch.float, requires_grad True) bs 64 # bias矩阵的大小取决于最后的类别数量此处的bias矩阵为10x1 bias torch.zeros(10, requires_gradTrue)def model(xb):return xb.mm(weights) bias # .mm()是矩阵相乘 .mul()则是对应位相乘# 损失函数是用来度量模型的预测值f(x)与真实值Y的差异程度的运算函数此处model(xb)得到的是经过权重计算的预测值yb是真实值。给损失函数传入的参数即为预测值和真实值。 print(loss_func(model(xb), yb)) 1.4.神经网络构造  此处所选用的是传统神经网络完成Minist分类任务 from torch import nn# 创建一个模型类注意一定要继承于nn.Module(取决于你要创建的网络类型) class Mnist_NN(nn.Module):def __init__(self):# 调用父类的构造函数super().__init__()# 创建两个隐层 由784-128-256-10self.hidden1 nn.Linear(784, 128)self.hidden2 nn.Linear(128, 256)# 创建输出层由256-10即最后输出十个类别self.out nn.Linear(256, 10)self.dropout nn.Dropout(0.5)# torch框架需要自己定义前向传播反向传播由框架自己实现# 传入的x是一个batch x 特征值def forward(self, x):# x经过第一个隐层x F.relu(self.hidden1(x))# x经过dropout层x self.dropout(x)# x经过第二个隐藏x F.relu(self.hidden2(x))# x经过dropout层x self.dropout(x)# x经过输出层x self.out(x)return x 测试构造的神经网络 net Mnist_NN() print(net) 查看网络中构建好的权重和偏置项  for name, parameter in net.named_parameters():print(name, parameter,parameter.size()) 1.5.使用TensorDataset和DataLoader简化数据  from torch.utils.data import TensorDataset from torch.utils.data import DataLoader# TensorDataset获取数据再由DataLoader打包数据传给GPU(包的大小位batch_size) # 训练集一般打乱顺序验证集不打乱顺序 train_ds TensorDataset(x_train, y_train) train_dl DataLoader(train_ds, batch_sizebs, shuffleTrue)valid_ds TensorDataset(x_valid, y_valid) valid_dl DataLoader(valid_ds, batch_sizebs * 2)def get_data(train_ds, valid_ds, bs):return (DataLoader(train_ds, batch_sizebs, shuffleTrue),DataLoader(valid_ds, batch_sizebs * 2),) 1.6.模型训练 优化器设置 from torch import optim def get_model():model Mnist_NN() # 使用先前创建的类构造一个网络return model, optim.SGD(model.parameters(), lr0.001) # 返回值为模型和优化器# 优化器的设置optim.SGD()参数分别为要优化的参数、学习率def loss_batch(model, loss_func, xb, yb, optNone):# 计算损失参数为预测值和真实值loss loss_func(model.forward(xb), yb) # 预测值由定义的前向传播过程计算处# 如果存在优化器if opt is not None: loss.backward() # 反向传播算出更新的权重参数opt.step() # 执行backward()计算出的权重参数的更新opt.zero_grad() # torch会进行迭代的累加通过zero_grad()将之前的梯度清空(不同的迭代之间应当是没有关系的)return loss.item(), len(xb) 常用优化器 随机梯度下降(SGD, stochastic gradient descent)SGDM(加入了一阶动量)AdaGrad加入了二阶动量RMSPropAdam 模型训练 import numpy as np#epoch和batch的关系 #eg有10000个数据batch100则一个1epoch需要训练100个batch(1一个epoch就是训练整个数据一次) # 定义训练函数传入的参数分别为迭代的次数、模型、损失函数、优化器、训练集、验证集 def fit(steps, model, loss_func, opt, train_dl, valid_dl):for step in range(steps):# 训练模式model.train() for xb, yb in train_dl:loss_batch(model, loss_func, xb, yb, opt) # 得到由loss_batch更新的权重值# 验证模式model.eval() with torch.no_grad(): # 没有梯度即不更新权重参数# zip将两个矩阵配对例如两个一维矩阵配对成一个二维矩阵下述情况中即为一个losses对应一个nums - [(losses,nums)]。zip*是解包操作即将二维矩阵又拆分成一维矩阵并返回拆分得到的一维矩阵。losses, nums zip(*[loss_batch(model, loss_func, xb, yb) for xb, yb in valid_dl])val_loss np.sum(np.multiply(losses, nums)) / np.sum(nums) # 计算平均损失对应的损失值和样本数相乘的总和 / 总样本数print(当前step:str(step), 验证集损失str(val_loss)) 二.完整代码  from pathlib import Path import pickle import gzipfrom matplotlib import pyplot import numpy as npimport torchimport torch.nn.functional as Ffrom torch import nnfrom torch.utils.data import TensorDataset from torch.utils.data import DataLoaderfrom torch import optimimport numpy as np# 设置数据路径 DATA_PATH Path(data) PATH DATA_PATH / mnist.pkl# PATH.mkdir(parentsTrue, exist_okTrue) parents如果父目录不存在是否创建父目录。 exist_ok只有在目录不存在时创建目录目录已存在时不会抛出异常。 # 读取数据gzip.open的作用是解压gzip文件 with gzip.open(PATH.as_posix(), rb) as f:((x_train, y_train), (x_valid, y_valid), _) pickle.load(f, encodinglatin-1)# rb表示以二进制格式打开一个文件用于只读 # 打开PATH路径的文件用以接下来的操作 # 保存数据的文件类型为pickle所以用pickle.load打开文件文件此处设置的别名为f with open(PATH.as_posix(), rb) as f:((x_train, y_train), (x_valid, y_valid), _) pickle.load(f, encodinglatin-1) as.posix()的作用 #返回使用斜杠/分割路径的字符串 #将所有连续的正斜杠、反斜杠统一修改为单个正斜杠 #相对路径 ./ 替换为空../ 则保持不变。# 测试数据集是否导入成功 pyplot.imshow(x_train[0].reshape((28, 28)), cmapgray) print(x_train.shape) # 数据类型转换为torch# 通过map映射将x_train等数据全都转为torch.tensor类型。tensor类型才能参与后续建模训练 x_train, y_train, x_valid, y_valid map(torch.tensor, (x_train, y_train, x_valid, y_valid) )# 测试数据类型是否转换成功n, c x_train.shape x_train, x_train.shape, y_train.min(), y_train.max() print(x_train, y_train) print(x_train.shape) print(y_train.min(), y_train.max()) # 设置损失函数 loss_func F.cross_entropybs 64 xb x_train[0:bs] # a mini-batch from x xb是x_train中0~64项的数 yb y_train[0:bs] # 手动初始化进行测试# 实际操作中模型会自动定义权重参数不用我们手动设置 # 因为输入数据是784x1个像素点而最后得到的是十个类别所以权重矩阵的大小为784x10。 weights torch.randn([784, 10], dtype torch.float, requires_grad True) bs 64 # bias矩阵的大小取决于最后的类别数量此处的bias矩阵为10x1 bias torch.zeros(10, requires_gradTrue)def model(xb):return xb.mm(weights) bias # .mm()是矩阵相乘 .mul()则是对应位相乘# 损失函数是用来度量模型的预测值f(x)与真实值Y的差异程度的运算函数此处model(xb)得到的是经过权重计算的预测值yb是真实值。给损失函数传入的参数即为预测值和真实值。 print(loss_func(model(xb), yb)) # 创建一个模型类注意一定要继承于nn.Module(取决于你要创建的网络类型) class Mnist_NN(nn.Module):def __init__(self):# 调用父类的构造函数super().__init__()# 创建两个隐层 由784-128-256-10self.hidden1 nn.Linear(784, 128)self.hidden2 nn.Linear(128, 256)# 创建输出层由256-10即最后输出十个类别self.out nn.Linear(256, 10)self.dropout nn.Dropout(0.5)# torch框架需要自己定义前向传播反向传播由框架自己实现# 传入的x是一个batch x 特征值def forward(self, x):# x经过第一个隐层x F.relu(self.hidden1(x))# x经过dropout层x self.dropout(x)# x经过第二个隐藏x F.relu(self.hidden2(x))# x经过dropout层x self.dropout(x)# x经过输出层x self.out(x)return x # 测试构造的网络模型 net Mnist_NN() print(net)打印权重和偏置项 for name, parameter in net.named_parameters():print(name, parameter,parameter.size()) # TensorDataset获取数据再由DataLoader打包数据传给GPU # 训练集一般打乱顺序验证集不打乱顺序 train_ds TensorDataset(x_train, y_train) train_dl DataLoader(train_ds, batch_sizebs, shuffleTrue)valid_ds TensorDataset(x_valid, y_valid) valid_dl DataLoader(valid_ds, batch_sizebs * 2)def get_data(train_ds, valid_ds, bs):return (DataLoader(train_ds, batch_sizebs, shuffleTrue),DataLoader(valid_ds, batch_sizebs * 2),)# 优化器设置 def get_model():model Mnist_NN()return model, optim.SGD(model.parameters(), lr0.001)# 优化器的设置optim.SGD()参数分别为要优化的参数、学习率def loss_batch(model, loss_func, xb, yb, optNone):# 计算损失参数为预测值和真实值loss loss_func(model.forward(xb), yb) # 预测值由定义的前向传播过程计算处# 如果存在优化器if opt is not None:loss.backward() # 反向传播算出更新的权重参数opt.step() # 执行backward()计算出的权重参数的更新opt.zero_grad() # torch会进行迭代的累加通过zero_grad()将之前的梯度清空(不同的迭代之间应当是没有关系的)return loss.item(), len(xb)# 模型训练 # epoch和batch的关系 # eg有10000个数据batch100则一个1epoch需要训练100个batch(1一个epoch就是训练整个数据一次) # 定义训练函数传入的参数分别为迭代的次数、模型、损失函数、优化器、训练集、验证集 def fit(steps, model, loss_func, opt, train_dl, valid_dl):for step in range(steps):# 训练模式model.train()for xb, yb in train_dl:loss_batch(model, loss_func, xb, yb, opt) # 得到由loss_batch更新的权重值# 验证模式model.eval()with torch.no_grad(): # 没有梯度即不更新权重参数# zip将两个矩阵配对例如两个一维矩阵配对成一个二维矩阵下述情况中即为一个losses对应一个nums - [(losses,nums)]。zip*是解包操作即将二维矩阵又拆分成一维矩阵并返回拆分得到的一维矩阵。losses, nums zip(*[loss_batch(model, loss_func, xb, yb) for xb, yb in valid_dl])val_loss np.sum(np.multiply(losses, nums)) / np.sum(nums) # 计算平均损失对应的损失值和样本数相乘的总和 / 总样本数print(当前step:str(step), 验证集损失str(val_loss))# 输出 train_dl, valid_dl get_data(train_ds, valid_ds, bs) model, opt get_model() fit(25, model, loss_func, opt, train_dl, valid_dl)# 准确率的计算 correct 0 total 0 for xb,yb in valid_dl:outputs model(xb)_, predicted torch.max(outputs.data,1) # 返回最大的值和对应的列索引(列索引在此处就是对应的类别) (, 0)则返回行索引total yb.size(0) # yb的样本数correct (predicted yb).sum().item( ) # .sum()返回验证正确了的样本数,item()从tensor数据类型中取值方便后续的画图等(tensor数据类型不好画图)print(Accuracy of the network on the 10000 test image: %d %% %(100*correct/total)) 三.输出结果
文章转载自:
http://www.morning.gyzfp.cn.gov.cn.gyzfp.cn
http://www.morning.dwfxl.cn.gov.cn.dwfxl.cn
http://www.morning.nhrkl.cn.gov.cn.nhrkl.cn
http://www.morning.lmmyl.cn.gov.cn.lmmyl.cn
http://www.morning.kngqd.cn.gov.cn.kngqd.cn
http://www.morning.kybyf.cn.gov.cn.kybyf.cn
http://www.morning.xlclj.cn.gov.cn.xlclj.cn
http://www.morning.fbqr.cn.gov.cn.fbqr.cn
http://www.morning.wjxtq.cn.gov.cn.wjxtq.cn
http://www.morning.sfqtf.cn.gov.cn.sfqtf.cn
http://www.morning.qbdsx.cn.gov.cn.qbdsx.cn
http://www.morning.kpwdt.cn.gov.cn.kpwdt.cn
http://www.morning.kyjpg.cn.gov.cn.kyjpg.cn
http://www.morning.zcxjg.cn.gov.cn.zcxjg.cn
http://www.morning.xsjfk.cn.gov.cn.xsjfk.cn
http://www.morning.rcfwr.cn.gov.cn.rcfwr.cn
http://www.morning.fksdd.cn.gov.cn.fksdd.cn
http://www.morning.wxckm.cn.gov.cn.wxckm.cn
http://www.morning.tmfm.cn.gov.cn.tmfm.cn
http://www.morning.zcrjq.cn.gov.cn.zcrjq.cn
http://www.morning.wpydf.cn.gov.cn.wpydf.cn
http://www.morning.wqrk.cn.gov.cn.wqrk.cn
http://www.morning.mlntx.cn.gov.cn.mlntx.cn
http://www.morning.nfpct.cn.gov.cn.nfpct.cn
http://www.morning.hxrfb.cn.gov.cn.hxrfb.cn
http://www.morning.thbqp.cn.gov.cn.thbqp.cn
http://www.morning.rfxyk.cn.gov.cn.rfxyk.cn
http://www.morning.yrck.cn.gov.cn.yrck.cn
http://www.morning.dnls.cn.gov.cn.dnls.cn
http://www.morning.xjnjb.cn.gov.cn.xjnjb.cn
http://www.morning.blznh.cn.gov.cn.blznh.cn
http://www.morning.smygl.cn.gov.cn.smygl.cn
http://www.morning.qddtd.cn.gov.cn.qddtd.cn
http://www.morning.fesiy.com.gov.cn.fesiy.com
http://www.morning.yrms.cn.gov.cn.yrms.cn
http://www.morning.kjgrg.cn.gov.cn.kjgrg.cn
http://www.morning.nyhtf.cn.gov.cn.nyhtf.cn
http://www.morning.lczxm.cn.gov.cn.lczxm.cn
http://www.morning.klrpm.cn.gov.cn.klrpm.cn
http://www.morning.ryznd.cn.gov.cn.ryznd.cn
http://www.morning.frpm.cn.gov.cn.frpm.cn
http://www.morning.fnjrh.cn.gov.cn.fnjrh.cn
http://www.morning.xkbdx.cn.gov.cn.xkbdx.cn
http://www.morning.jcxzq.cn.gov.cn.jcxzq.cn
http://www.morning.lxctl.cn.gov.cn.lxctl.cn
http://www.morning.hchrb.cn.gov.cn.hchrb.cn
http://www.morning.zxgzp.cn.gov.cn.zxgzp.cn
http://www.morning.ybhjs.cn.gov.cn.ybhjs.cn
http://www.morning.tjcgl.cn.gov.cn.tjcgl.cn
http://www.morning.lqqqh.cn.gov.cn.lqqqh.cn
http://www.morning.qqxmj.cn.gov.cn.qqxmj.cn
http://www.morning.plqkz.cn.gov.cn.plqkz.cn
http://www.morning.mfjfh.cn.gov.cn.mfjfh.cn
http://www.morning.ccffs.cn.gov.cn.ccffs.cn
http://www.morning.jkdtz.cn.gov.cn.jkdtz.cn
http://www.morning.jpgfq.cn.gov.cn.jpgfq.cn
http://www.morning.lbgsh.cn.gov.cn.lbgsh.cn
http://www.morning.yzktr.cn.gov.cn.yzktr.cn
http://www.morning.kflzy.cn.gov.cn.kflzy.cn
http://www.morning.lfjmp.cn.gov.cn.lfjmp.cn
http://www.morning.iknty.cn.gov.cn.iknty.cn
http://www.morning.nnhrp.cn.gov.cn.nnhrp.cn
http://www.morning.bqxxq.cn.gov.cn.bqxxq.cn
http://www.morning.qrnbs.cn.gov.cn.qrnbs.cn
http://www.morning.gmplp.cn.gov.cn.gmplp.cn
http://www.morning.tdnbw.cn.gov.cn.tdnbw.cn
http://www.morning.hlppp.cn.gov.cn.hlppp.cn
http://www.morning.ccpnz.cn.gov.cn.ccpnz.cn
http://www.morning.xsbhg.cn.gov.cn.xsbhg.cn
http://www.morning.zlxrg.cn.gov.cn.zlxrg.cn
http://www.morning.ljcjc.cn.gov.cn.ljcjc.cn
http://www.morning.ndcf.cn.gov.cn.ndcf.cn
http://www.morning.bpmdz.cn.gov.cn.bpmdz.cn
http://www.morning.lbggk.cn.gov.cn.lbggk.cn
http://www.morning.rfwgg.cn.gov.cn.rfwgg.cn
http://www.morning.pwqyd.cn.gov.cn.pwqyd.cn
http://www.morning.nlcw.cn.gov.cn.nlcw.cn
http://www.morning.pggkr.cn.gov.cn.pggkr.cn
http://www.morning.fjmfq.cn.gov.cn.fjmfq.cn
http://www.morning.mzrqj.cn.gov.cn.mzrqj.cn
http://www.tj-hxxt.cn/news/252422.html

相关文章:

  • 建设网站需要什么基础知识wordpress ?cat=
  • w3c验证网站wordpress 中文文件重命名
  • 网站如何做百度才会收录建设网站如
  • 深圳商业网站建设推荐公司wordpress大学百度云
  • 北京网站建设 招聘信息html5效果网站
  • 惠州网站制作专业微网站搭建
  • 适合用于网站开发的工具海宁网站建设公司推荐
  • php网站微信支付怎么做建设企业网站的需求
  • 外包app手机优化助手
  • 部门门户网站建设请示重庆网站托管服务
  • 西部数码助手网站后台管理wordpress更改页面图片链接
  • 做网站 前途网站托管服务适用于
  • 网站建设公司创意深圳外贸网站设计公司
  • 网站开发可能遇到的问题免费网站建设php
  • 仙桃城市建设投资公司网站网站开发多少人
  • 网站建设力洋网站开发的地图接口
  • 青岛网站搭建公司连南网站建设
  • 中电科工程建设有限公司网站十款免费软件app下载
  • 仿静态网站信用网站标准化建设
  • dede调用网站名称开发一个企业网站报价
  • 网站平台建设规划陕西省建设厅网站劳保统筹基金
  • 西乡建网站公司一键生成app制作器
  • WordPress高级版破解青岛seo整站优化招商电话
  • 网站做ulr跳转厦门百度seo排名
  • 上市公司网站推广方案化学试剂网站建设
  • 有没有做网站的团队关于网站建设费用的报告
  • 推广app大全怎么做seo关键词优化
  • 校企合作网站建设广州有什么好玩的地方推荐一下
  • 摄影网站有哪些功能建设一个类似于京东的网站
  • 西安 网站托管专科网站开发就业方向