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

北京网站建设公司飞沐卖水果网站建设的策划书

北京网站建设公司飞沐,卖水果网站建设的策划书,代做土木毕业设计网站,雨伞设计公司logo学习资料#xff1a;从零设计并训练一个神经网络#xff0c;你就能真正理解它了_哔哩哔哩_bilibili 这个视频讲得相当清楚。本文是学习笔记#xff0c;不是原创#xff0c;图都是从视频上截图的。 1. 神经网络 2. 案例说明 具体来说#xff0c;设计一个三层的神经网络。…学习资料从零设计并训练一个神经网络你就能真正理解它了_哔哩哔哩_bilibili 这个视频讲得相当清楚。本文是学习笔记不是原创图都是从视频上截图的。 1. 神经网络 2. 案例说明 具体来说设计一个三层的神经网络。以数字图像作为输入经过神经网络的计算识别出图像中的数字是几从而实现数字图像的分类。 3. 视频讲解内容的提纲 4. 神经网络的设计和实现 我们要处理的数据是28*28像素的灰色通道图像。 这样的灰色图像包括了28*28784个数据点。需要先将他展平为1*784大小的向量。然后将这个向量输入到神经网络中。 用一个三层神经网络处理图片对应的向量X。输入成需要接收784维的图片向量X。X里面每个维度的数据都有一个神经元来接收。因此输入层要包含784个神经元。 隐藏成用于特征提取特征向量将输入的特征向量处理成更高级的特征向量。 因为手写数字图像识别并不复杂所以将隐藏层的神经元个数设置为256。这样输入层和隐藏层之间就会有个784*256的线性层。它可以将一个784维的输入向量转换为256维的输出向量。 该输出向量会继续向前传播到达输出层。 由于最终要将数字图像识别为0~9十种可能的数字。因此输出层需要定义10个神经元对应这十种数字。 256维的向量在经过隐藏层和输出层之间的线性层计算后就得到了10维的输出结果。这个10维的向量就代表了10个数字的预测得分。 为了继续得到输出层的预测概率还要将输出层的输出输入到softmax层。softmax层会将10维的向量转换为10个概率值p0~p9。p0~p9相加的总和等于1. 5. 神经网络的Pytorch实现 import torch from torch import nn# 定义神经网络Network class Network(nn.Module):def __init__(self):super().__init__()# 线性层1输入层和隐藏层之间的线性层self.layer1 nn.Linear(784, 258)# 线性层2隐藏层和输出层之间的线性层self.layer2 nn.Linear(256, 10)# 在前向传播forward函数中输入为图像xdef forward(self, x):x x.view(-1, 28 * 28) # 使用view函数将x展平x self.layer1(x) # 将x输入到layer1x torch.relu(x) # 使用relu激活return self.layer2(x) # 输入至layer2计算结果# 这里没有直接定义softmax层因为后面会使用CrossEntropyLoss损失函数# 在这个损失函数中会实现softmax的计算 6. 训练数据的准备和处理 from torchvision import transforms from torchvision import datasets from torch.utils.data import DataLoader# 初学只要知道大致的数据处理流程即可 if __name__ __main__# 实现图像的预处理pipelinetransform trnasforms.Compose([# 转换成单通道灰度图transforms.Grayscale(num_output_channels1),# 转换为张量transforms.ToTensor()])# 使用ImageFolder函数读取数据文件夹构建数据集dataset# 这个函数会将保持数据的文件夹的名字作为数据的标签组织数据train_dataset datasets.ImageFolder(root./mnist_images/train, transformtransform)test_dataset datasets.ImageFolder(root./mnist_images/test, transformtransform)# 打印他们的长度print(train_dataset length: , len(train_dataset))print(test_dataset length: , len(test_dataset))# 使用train_loader, 实现小批量的数据读取# 这里设置小批量的大小batch_size64. 也就是每个批次包括64个数据train_loader DataLoader(train_datase, batch_size64, shuffleTrue)# 打印train_loader的长度print(train_loader length: , len(train_loader))# 6000个训练数据如果每个小批量读入64个样本那么60000个数据会被分成938组# 938*6460032说明最后一组不够64个数据# 循环遍历train_loader# 每一次循环都会取出64个图像数据作为一个小批量batchfor batch_idx, (data, label) in enumerate(train_loader)if batch_idx 3:breakprint(batch_idx: , batch_idx)print(data.shape: , data.shape) # 数据的尺寸print(label: , label.shape) # 图像中的数字print(label) 7. 模型的训练和测试 import torch from torch import nn from torch import optim from model import Network from torchvision import transforms from torchvision import datasets from torch.utils.data import DataLoaderif __name__ __main__# 图像的预处理transform transforms.Compose([transforms.Grayscale(num_output_channels1),transforms.ToTensor()])# 读入并构造数据集train_dataset datasets.ImageFolder(root./mnist_images/train, transformtransform)print(train_dataset length: , len(train_dataset))# 小批量的数据读入train_loader DataLoader(train_dataset, batch_size64, shuffleTrue)print(train_loader length: , len(train_loader))# 在使用Pytorch训练模型时需要创建三个对象model Network() # 1.模型本身就是我们设计的神经网络optimizer optim.Adam(model.parameters()) #2.优化器优化模型中的参数criterion nn.CrossEntropyLoss() #3.损失函数分类问题使用交叉熵损失误差# 进入模型的循环迭代# 外层循环代表了整个训练数据集的遍历次数for epoch in range(10):# 内层循环使用train_loader, 进行小批量的数据读取for batch_idx, (data, label) in enumerate(train_loader):# 内层每循环一次就会进行一次梯度下降算法# 包括了5个步骤# 这5个步骤是使用pytorch框架训练模型的定式初学时先记住即可# 1. 计算神经网络的前向传播结果output model(data)# 2. 计算output和标签label之间的损失lossloss criterion(output, label)# 3. 使用backward计算梯度loss.backward()# 4. 使用optimizer.step更新参数optimizer.step()# 5.将梯度清零optimizer.zero_grad()if batch_idx % 100 0:print(fEpoch {epoch 1}/10f| Batch {batch_idx}/{len(train_loader)}f| Loss: {loss.item():.4f})torch.save(model.state_dict(), mnist.pth) from model import Network from torchvision import transforms from torchvision import datasets import torchif __name__ __main__transform transforms.Compose([transforms.Grayscale(num_output_channels1),transforms.ToTensor()])# 读取测试数据集test_dataset datasets.ImageFolder(root./mnist_images/test, transformtransform)print(test_dataset length: , len(test_dataset))model Network() # 定义神经网络模型model.load_state_dict(torch.load(mnist.pth)) # 加载刚刚训练好的模型文件rigth 0 # 保存正确识别的数量for i, (x, y) in enumerate(test_dataset):output model(x) # 将其中的数据x输入到模型predict output.argmax(1).item() # 选择概率最大标签的作为预测结果# 对比预测值predict和真实标签yif predict y:right 1else:# 将识别错误的样例打印出来img_path test_dataset.samples[i][0]print(fwrong case: predict {predict} y {y} img_path {img_path})# 计算出测试效果sample_num len(test_dataset)acc right * 1.0 / sample_numprint(test accuracy %d / %d %.3lf % (right, sample_num, acc))
http://www.w-s-a.com/news/79163/

相关文章:

  • 北京免费自己制作网站短视频宣传片制作
  • 怎样进入谷歌网站电子商务网站建设软件选择
  • 建个普通网站多少钱设计师培训多少
  • 建设校园网站的意义视频链接提取下载
  • 天津电子商务网站wordpress安装图片
  • 青岛房产网站东莞网络营销外包公司
  • 网站建设中的页数网上工伤做实网站
  • 给公司做网站这个工作怎么样wordpress不支持中文标签
  • 湖南网站推广优化cc域名做门户网站
  • 网站开发大概多久怎么制做网站
  • 鄂州官方网站食品网站建设需求分析
  • 福州网站建设金森要做好网络营销首先要
  • 中山哪里有好网站建设公司企业培训考试平台下载
  • 域名备案查询 网站备案查询企业网站建设问题研究
  • wordpress无法编辑北京优化网站方法
  • 公司建设一个网站最好的网站建设哪家好
  • 南京市住宅建设总公司网站wordpress 自己写的网页
  • 淄博网站制作企业高端长沙企业网站制作服务报价
  • 网站服务理念中外商贸网站建设
  • 如何自己建立网站中国建设银行网站忘记密码
  • 什么是a站如何在12366网站上做实名认证
  • 斗蟋蟀网站建设谭谭心怎么建设网站
  • 优秀网站开发商郑州网站建设套餐
  • 做伤残鉴约号网站购物网站建设新闻
  • 黄江网站建设公司自己房子做民宿挂什么网站
  • 手游网站做cpc还是cpm广告号宣武郑州阳网站建设
  • vs连接数据库做网站建立网站
  • 电商网站设计图片素材p2p网站建设石家庄
  • 莲塘网站建设如何文字推广一个婚恋网站
  • 医院网站建设工作汇报WordPress不发邮件了