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

西部数码 空间做2个网站图片外链网站

西部数码 空间做2个网站,图片外链网站,网站建设 今晟网络,门户网站微信服务号建设方案**前置知识: 1、 (1).train():将模型设置为训练模式 (2).eval():将模型设置为评估模式 不写也可以(只对特定网络模型有作用,如含有Dropout的) 2、 with…

**前置知识: 

1、

(1).train():将模型设置为训练模式

(2).eval():将模型设置为评估模式

          不写也可以(只对特定网络模型有作用,如含有Dropout的)

2、

with torch.no_grad()::主要用于评估和推理,确保不会计算梯度,从而节省内存和加速计算。

3、

.item()的作用:将tensor型转为普通数值型

当你有一个只有一个元素的张量时,可以使用 .item() 来提取这个值。

a=torch.tensor(5)
print(a) #tensor(5)
print((a.item())) #5

 4、

如何由分类得分来计算正确率:

outputs=torch.tensor([[0.1,0.2],[0.3,0.4]
]) #两个样本的二分类得分preds=outputs.argmax(1) #1是横向对比,0是纵向对比,得到预测的分类:[1,1]targets=torch.tensor([0,1]) #正确的分类print(preds==targets) #tensor([False,  True])
print((preds==targets).sum()) #tensor(1)
print((preds==targets).sum().item()/2) #正确率=分类正确的样本数/总样本数,得0.5

**代码: 

import torch.optim
import torchvision.datasets
from torch import nn
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriterfrom model import * #引入模型类文件

一、准备数据集: 

#准备数据集
train_set=torchvision.datasets.CIFAR10(root="../dataset",train=True,transform=torchvision.transforms.ToTensor(),download=True)
test_set=torchvision.datasets.CIFAR10(root="../dataset",train=False,transform=torchvision.transforms.ToTensor(),download=True)train_set_size=len(train_set)
test_set_size=len(test_set)
print(f"训练数据集的长度为:{train_set_size}")
print(f"测试数据集的长度为:{test_set_size}")train_dataloader=DataLoader(train_set,batch_size=64)
test_dataloader=DataLoader(test_set,batch_size=64)

二、创建网络模型: 

模型类的定义单独写在一个文件夹里

import torch
from torch import nn#搭建神经网络
class Classification_CIFAR10(nn.Module):def __init__(self):super().__init__()self.model=nn.Sequential(nn.Conv2d(in_channels=3,out_channels=32,kernel_size=5,stride=1,padding="same"), #stride默认等于1,padding没有设置则是0nn.MaxPool2d(kernel_size=2), #stride默认等于kernel_size,padding没有设置则是0nn.Conv2d(in_channels=32,out_channels=32,kernel_size=5,stride=1,padding="same"),nn.MaxPool2d(2),nn.Conv2d(in_channels=32,out_channels=64,kernel_size=5,stride=1,padding="same"),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(in_features=64*4*4,out_features=64),nn.Linear(in_features=64,out_features=10))def forward(self,x):x=self.model(x)return x#测试模型的正确性:设一个input,看output的尺寸是否正确
if __name__ == '__main__':model=Classification_CIFAR10()input=torch.ones((64,3,32,32))output=model(input)print(output.shape)#[ 0.0308, -0.0105, -0.0186,  0.2409, -0.0044,  0.0182,  0.1824, -0.0557, -0.1188,  0.0300]#输入:一张3通道的图像(大小为32*32)——>64通道(大小为4*4)——>全连接后linear成64通道——>最后linnear成10通道(即十个类别的得分)
#(1,3,32,32)——>(1,10)同理,(64,3,32,32)——>(64,10)
#创建网络模型
model_classification=Classification_CIFAR10()

三、参数和辅助工具的设置:

(损失函数,优化器;训练、测试的次数记录;tensorboard) 

#损失函数
loss_func=nn.CrossEntropyLoss() #optional表示参数是可选的#优化器
learning_rate=1e-2 #相当于(0.01)
optimizer=torch.optim.SGD(model_classification.parameters(),lr=learning_rate) #随机梯度下降#设置训练网络的一些参数
total_train_step=0 #记录训练的次数
total_test_step=0 #记录测试的次数
epoch=2 #训练、测试的轮数(一轮有多次,次数=imgs总数/每次处理的图片数)#添加tensorboard来监控数据的变化
writer=SummaryWriter("E:\DLearning\Learning\logs") #路径问题,换成绝对路径试一试

四、开始训练和测试: 

for i in range(epoch):print(f"——————————————第{i+1}轮训练开始——————————————")#训练步骤开始for data in train_dataloader:imgs,targets=dataoutputs=model_classification(imgs)#计算损失loss=loss_func(outputs,targets)#优化optimizer.zero_grad() #梯度清零loss.backward() #计算梯度并反向传播optimizer.step() #梯度优化(跳跃式)total_train_step=total_train_step+1if total_train_step%100==0: #逢百才打印、记录(更节省、更清晰)print(f"训练次数:{total_train_step},Loss:{loss.item()}")writer.add_scalar("train_loss",loss.item(),total_train_step)#每训练完一轮后,用验证集来测试,看看训练的效果如何print(f"——————————————第{i + 1}轮测试开始——————————————")#测试步骤开始total_test_loss=0total_accuracy=0with torch.no_grad(): #不需要调优了,利用现有模型——>with里面的代码就没有了梯度,能保证不会对它进行调优(即使不调用也会累计梯度,会使进程变慢)for data in test_dataloader:imgs,targets=dataoutputs=model_classification(imgs)#求损失loss=loss_func(outputs,targets)total_test_loss+=loss.item()#求正确数(分类特有的)accuracy=(outputs.argmax(1)==targets).sum()total_accuracy+=accuracyprint(f"整体测试集的Loss:{total_test_loss}")print(f"整体测试集的正确率:{total_accuracy/test_set_size}")writer.add_scalar("test_total_loss",total_test_loss,i+1)writer.add_scalar("test_total_accuracy",total_accuracy/test_set_size,i+1)#保存每一轮的模型训练结果torch.save(model_classification,f"model{i+1}.pth")print("模型已保存")writer.close()

http://www.yayakq.cn/news/887720/

相关文章:

  • 腾讯理财是什么样的做网站网站上资源截图怎么做
  • 淘宝联盟怎么做网站注册网站能赚钱吗
  • 网站打开速度优化手机怎么注册网站
  • 扬州网站建设企业wordpress初始化密码
  • 网站后台发布了但看不见企业关键词排名优化网址
  • 学校网站设计的作用上海天华设计有限公司
  • 网站文章收录如何把网站做成软件
  • 做二手手机的网站有哪些如何做网站流量买卖
  • 国内做网站的龙头企业网络营销推广的岗位职责有
  • 南通网站建设十年以上公司北航网站建设
  • 网站建设客户怎么寻找魔智科技logo在线设计
  • 服务好的丹阳网站建设如何挑选网站建设平台
  • 公司网站模板内容wordpress代码板插件下载
  • 企业做增资 网站平台手机百度2020最新版
  • 网站开发 高级认证网站建设多久能学会
  • 免费ppt模板下载大全网站犀牛云网站做的怎么样
  • app与微网站的区别是什么意思基层组织建设部网站
  • 网站建设需求怎么提网站建设策划书的心得
  • 常熟做网站公司排名想转行做网站
  • 一般电脑网站建设及运营多少钱网站备案 选项
  • 机关网站建设创新经典网页传奇
  • 什么网站可以兼职做效果图wordpress 活动插件
  • 当富广州网站建设广州冼村是什么梗
  • 网站内怎样做关键词有效果网站如何优化流程
  • 公司网站哪家做的好济南网站开发公司排名
  • 大学生免费ppt网站站长统计 网站统计
  • 佛山制作网站wordpress 关闭feed
  • 大连网站建设招标网站设计一般多长时间
  • 作者自己建立的网站搜索引擎app
  • 为什么邮箱突然进不去了总提示正在进入不安全网站郑州做网站企起