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

百度推广怎么做的网站用什么网站开发

百度推广怎么做的网站,用什么网站开发,所有网页游戏网址,中信建设有限责任公司资质目录 一、回顾神经网络框架 1、单层神经网络 2、多层神经网络 二、手写数字识别 1、续接上节课代码#xff0c;如下所示 2、建立神经网络模型 输出结果#xff1a; 3、设置训练集 4、设置测试集 5、创建损失函数、优化器 参数解析#xff1a; 1#xff09;para…目录 一、回顾神经网络框架 1、单层神经网络 2、多层神经网络 二、手写数字识别 1、续接上节课代码如下所示 2、建立神经网络模型 输出结果 3、设置训练集 4、设置测试集 5、创建损失函数、优化器 参数解析 1params 2lr 3loss 6、开始训练 运行结果 三、总结 1、关键步骤 2、训练过程中 3、训练完成后 一、回顾神经网络框架 1、单层神经网络 图示为单层神经完了的基本构造首先有信号想传入输入层然后这些信号会在传播途中发生衰减或者增强假如想传入的信号为x那么经过衰减或增强后的值则为wx这个w叫权重此时便有了传入信号有很多传入信号那么神经元就会对这些信号进行处理把这些信号的加权值求和再将这个求和的值映射到非线性激活函数上来引入非线性特征最后得到输出结果。 2、多层神经网络 相比于上述的单层神经网络单层神经网络就相当于上图中的绿色的第一列即多个信号传入后只进行加权映射处理一次即输出结果而多层神经网络即有多列神经元传入信号经过第一列神经元处理后得到的值将其再次当做信号进行衰减或增强传入下一层神经元对其进行处理至于多少层需要经过多次训练去决定没有固定的值。 二、手写数字识别 1、续接上节课代码如下所示 import torch print(torch.__version__)MNIST包含70,000张手写数字图像:60,000张用于训练10,000张用于测试。 图像是灰度的28x28像素的并且居中的以减少预处理和加快运行。from torch import nn # 导入神经网络模块 from torch.utils.data import DataLoader # 数据包管理工具打包数据, from torchvision import datasets # 封装了很多与图像相关的模型数据集 from torchvision.transforms import ToTensor # 数据转换张量将其他类型的数据转换为tensor张量,numpy arrgy,下载训练数据集图片标签 training_data datasets.MNIST( # 跳转到函数的内部源代码pycharm 按下ctrl 鼠标点击rootdata, # 表述下载的数据存放的根目录trainTrue, # 表示下载的是训练数据集如果要下载测试集更改为False即可downloadTrue, # 表示如果根目录有该数据则不再下载如果没有则下载transformToTensor() # 张量图片是不能直接传入神经网络模型# 表示制定一个数据转换操作将下载的图片转换为pytorch张量因为pytorch只能处理张量tensor类型的数据 )test_data datasets.MNIST(rootdata,trainFalse,downloadTrue,transformToTensor() # Tensor是在深度学习中提出并广泛应用的数据类型它与深度学习框架(如 PyTorch、TensorFlo ) # NumPy 数组只能在CPU上运行。Tensor可以在GPU上运行这在深度学习应用中可以显著提高计算速度。print(len(training_data)) print(len(test_data))展示手写数字图片把训练数据集中的前59000张图片展示一下# # tensor -》numpy 矩阵类型的数据矩阵是特殊的张量张量可以包含任意维度的数据 # from matplotlib import pyplot as plt # 导入绘图库 # figure plt.figure() # 设置一个空白画布 # for i in range(9): # img,label training_data[i59000] # 提取第59000张图片开始共9张返回图片及其对应的标签值 # # figure.add_subplot(3,3,i1) # 在画布创建3行3列的小窗口通过遍历的值i来确定每个画布展示的图片 # plt.title(label) # 设置每个窗口的标题设置标签为上述返回的标签值 # plt.axis(off) # 取消画布中的坐标轴的图像 # plt.imshow(img.squeeze(),cmapgray) # plt.imshow()将NumPy数组data中的数据显示为图像并在图形窗口中, # a img.squeeze() # img.squeeze()从张量img中去掉维度为1的。如果该维度的大小不为1,则张量不会改变。 # plt.show()train_dataloader DataLoader(training_data,batch_size64) # 调用上述定义的DataLoader打包库将训练集的图片和标签64张图片为一个包 test_dataloader DataLoader(test_data,batch_size64) # 将测试集的图片和标签每64张打包成一份 for x,y in test_dataloader:# x是表示打包好的每一个数据包,其形状为[64,1,28,28],64表示批次大小1表示通道数为1即灰度图28表示图像的宽高像素值# y表示每个图片标签print(fshape of x[N,C,H,W]:{x.shape}) # 打印图片形状print(fshape of y:{y.shape}{y.dtype}) # 打印标签的形状和数据类型break # 跳出并终止循环表示只遍历一个包的数据情况判断当前设备是否支持GPU其中mps是苹果m系列芯片的GPU # 返回cudampscpu m1m2集显CPUGPU RTX3060 device cuda if torch.cuda.is_available() else mps if torch.backends.mps.is_available() else cpu print(fUsing {device} device) # 字符串的格式化。CUDA驱动软件的功能:pytorch能够去执行cuda的命令cuda通过GPU指令集 # 神经网络的模型也需要传入到GPU1个batchsize的数据集也需要传入到GPU才可以进行训练。 2、建立神经网络模型 class NeuralNetwork(nn.Module): # 通过调用类的形式来使用神经网络神经网络的模型def __init__(self):super().__init__() # 继承的父类初始化self.flatten nn.Flatten() # 将输入的多维数据展开成一维数据,创建一个展开对象flattenself.hidden1 nn.Linear(28*28,128) # 创建一个全连接层其上包含权重的值第1个参数表示有多少个神经元传入进来第2个参数表示有多少个数据传出去,这里表示上述多层神经网络的第一列神经元self.hidden2 nn.Linear(128, 256) # 再次创建一个全连接层将第一层输出个数转变成这一层的输入信号数然后在设定输出层个数为256self.hidden3 nn.Linear(256,128) # 继承上一层的输出信号个数将其当做这一层的输入为256层设定输出为128层self.hidden4 nn.Linear(128,64) # 输入128层输出64层self.out nn.Linear(64, 10) # 设定输出层输出必需和标签的类别相同输入必须是上一层的神经元个数def forward(self,x): # 设定前向传播函数你得告诉它数据的流向。是神经网络层连接起来函数名称不能改。当你调用forward函数的时候传入进来的图像数据x self.flatten(x) # 传入信号x图像首先进行展开x self.hidden1(x) # 将其当做输入层x torch.sigmoid(x) # 使用sigmoid激活函数得到结果torch使用的relu函数 relutanhx self.hidden2(x) # 再次对上一层的结果进行加权x torch.sigmoid(x)x self.hidden3(x)x torch.sigmoid(x)x self.hidden4(x)x torch.sigmoid(x)x self.out(x) # 输出结果return x # 将输出结果返回出去model NeuralNetwork().to(device) # 把刚刚创建的模型传入到gpu print(model) # 打印模型的构造 此处的神经网络层数可以自己设置如果想多设置几层或者少设置基层只需改变self.hidden的个数以及前向传播函数中激活函数的个数。 输出结果 3、设置训练集 def train(dataloader,model,loss_fn,optimizer): # 导入参数dataloader表示打包数据加载器model导入上述定义的神经网络模型loss_fn表示损失值optimizer表示优化器model.train() # 模型设置为训练模式# 告诉模型我要开始训练模型中权重w进行随机化操作已经更新w。在训练过程中w会被修改的# #pytorch提供2种方式来切换训练和测试的模式分别是:model.train()和 model.eval()。# 一般用法是:在训练开始之前写上model.train()在测试时写上model.eval()。batch_size_num 1for x,y in dataloader: # 遍历打包的图片的每一个包中的每一张图片及其对应的标签其中batch为每一个数据的编号x,y x.to(device),y.to(device) # 把训练数据集和标签传入cpu或GPUpred model.forward(x) # 模型进行前向传播输入图片信息后得到预测结果forward可以被省略父类中已经对次功能进行了设置。自动初始化w权值loss loss_fn(pred,y) # 调用交叉熵损失函数计算损失值loss输入参数为预测结果和真实结果# Backpropaqation 进来一个batch的数据计算一次梯度更新一次网络optimizer.zero_grad() # 梯度值清零在反向传播之前先清除之前的梯度loss.backward() # 反向传播计算得到每个参数的梯度值woptimizer.step() # 根据梯度更新权重w参数loss_value loss.item() # 从tensor数据中提取数据出来tensor获取损失值if batch_size_num % 200 0: # 判断遍历包的个数是否整除于200用于将训练到的包的个数打印出来整除200目的是节省资源print(floss:{loss_value:7f} [number: {batch_size_num}]) # 打印损失值及其对应的值,损失值最大宽度为7右对齐batch_size_num 1 # 每遍历一个包增加一次以达到显示出来遍历的包的个数 4、设置测试集 def test(dataloader,model,loss_fn): # 输入参数打包的图片、训练好的模型、以及损失值size len(dataloader.dataset) # 返回测试数据集的样本总数num_batches len(dataloader) # 返回当前dataloader配置下的批次数model.eval() # 表示此为模型测试w就不能再更新。test_loss,correct 0, 0 # 设置总损失值初始化为0正确预测结果初始化为0with torch.no_grad(): # 一个上下文管理器关闭梯度计算。当你确认不会调用Tensor.backward()的时候。这可以减少计算for x,y in dataloader: # 遍历测试集中的每个包的每个图片及其对应的标签x,y x.to(device),y.to(device) # 将其传入gpupred model.forward(x) # 图片数据进行前向传播test_loss loss_fn(pred,y).item() # test_loss是会自动累加每一个批次的损失值correct (pred.argmax(1) y).type(torch.float).sum().item() # pred.argmax(1) y用于判断预测结果最大值对用的标签是否与真实值相同,然后将判断结果的bool值转变为浮点数并求和a (pred.argmax(1) y) # dim1表示每一行中的最大值对应的索引号dim0表示每一列中的最大值对应的索引号b (pred.argmax(1) y).type(torch.float)test_loss / num_batches # 总损失值除以打包的批次数返回测试的每一个包的损失值的均值能来衡量模型测试的好坏。correct / size # 平均的正确率print(fTest result: \n Accuracy:{(100 * correct)}%, Avg loss:{test_loss}) 5、创建损失函数、优化器 loss_fn nn.CrossEntropyLoss() # 创建交叉熵损失函数对象因为手写字识别中一共有10个数字输出会有10个结果 optimizer torch.optim.Adam(model.parameters(),lr0.0045) # 创建一个优化器SGD为随机梯度下降算法学习率或者叫步长为0.0045 参数解析 1params 表示要训练的参数一般我们传入的都是model.parameters() 2lr learning_rate学习率也就是步长 3loss 表示模型训练后的输出结果与样本标签的差距。如果差距越小就表示模型训练越好越逼近于真实的型。 6、开始训练 epochs 25 # 设置训练的轮数为25轮因为模型中设置了权重值的更新所以重复训练会更新模型的权值 for i in range(epochs):print(fEpoch {i1}\n--------------------)train(train_dataloader,model,loss_fn,optimizer) print(Done!!) test(test_dataloader,model,loss_fn) # 导入测试集进行测试 将上述所有代码连贯起来运行。 运行结果 至此训练结束用户可手动更改模型激活函数、学习率、模型训练轮数等等以找到最优结果。 祝你成功 三、总结 1、关键步骤 使用PyTorch进行手写数字识别可以分为几个关键步骤。首先需要准备手写数字数据集通常使用MNIST数据集。然后需要定义神经网络模型可以使用PyTorch提供的各种层和激活函数来构建模型架构。接下来需要定义损失函数通常使用交叉熵损失函数来计算预测结果与真实标签之间的差异。 2、训练过程中 在训练过程中使用优化算法如随机梯度下降来更新模型的权重和偏置使其逐渐接近最优解。训练过程中会使用训练集的数据进行反向传播并根据损失函数的结果来调整模型参数。可以设置训练的轮数和批次大小以更好地优化模型。 3、训练完成后 在训练完成后可以使用测试集或新的手写数字图像来评估模型的性能。通过将图像输入已训练好的模型可以获得预测结果并与真实标签进行比较。可以计算准确率等指标来评估模型的性能。
http://www.w-s-a.com/news/871041/

相关文章:

  • 上海响应式建站wap网站微信分享代码
  • 四川建筑人才招聘网南昌网站优化
  • 南充网站建设制作重庆有的设计网站大全
  • 深圳沙井做网站公司网站搭建谷歌seo
  • 学校资源网站的建设方案山西省住房城乡建设厅网站
  • 医疗行业网站建设深圳网络科技公司排名
  • 企业形象型网站建设wordpress chess
  • 网站的域名起什么好处罗湖网站建设公司乐云seo
  • 网站的服务器在哪里sem推广软件选哪家
  • 科技网站欣赏婚庆公司经营范围
  • 网站后台管理系统php校园网站建设意见表填写
  • 网站建设问题调查常州百度推广代理公司
  • net网站开发学习谷歌优化培训
  • 企业网站公众号广东网站建设方便
  • 2008r2网站建设张店网站建设方案
  • 企业网站首页学生做的网站成品
  • 网站开发 架构设计企业信息管理系统的组成不包括
  • 网站维护模式网页传奇游戏平台排行
  • 企业网站改自适应蛋糕方案网站建设
  • 网站开发技术职责网站升级中html
  • 天网网站建设百度权重高的网站
  • 明年做哪些网站致富网站站长 感受
  • 东莞营销网站建设优化怎么做微信网站推广
  • 网站建设一个多少钱php网站服务器怎么来
  • 引流用的电影网站怎么做2012服务器如何做网站
  • 什么网站可以做推广广州安全信息教育平台
  • 网站开发具备的相关知识wordpress简约文字主题
  • asp网站伪静态文件下载seo外包公司哪家好
  • 淘宝客网站根目录怎么建个废品网站
  • 网站备案更改需要多久百度免费网站空间