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

如何做品牌推广网站晋江做网站模板

如何做品牌推广网站,晋江做网站模板,青岛高级网站建设价格,小程序制作平台价格基础神经网络模型搭建 【Pytorch】数据集的加载和处理(一) 【Pytorch】数据集的加载和处理(二) 损失函数计算模型输出和目标之间的距离。通过torch.nn 包可以定义一个负对数似然损失函数,负对数似然损失对于训练具有多…

基础神经网络模型搭建

【Pytorch】数据集的加载和处理(一)

【Pytorch】数据集的加载和处理(二)

损失函数计算模型输出和目标之间的距离。通过torch.nn 包可以定义一个负对数似然损失函数,负对数似然损失对于训练具有多个类的分类问题比较有效,负对数似然损失函数的输入为对数概率,而在模型搭建的输出层部分接触过log_softmax,它能从模型中获取对数概率

目录

基础模型搭建

数据集的加载和处理

定义损失函数

定义优化器

训练并评估模型


基础模型搭建

import torch
from torch import nn
import torch.nn.functional as F
class Net(nn.Module):def __init__(self):super(Net, self).__init__()def forward(self, x):pass
def __init__(self):super(Net, self).__init__()self.conv1 = nn.Conv2d(1, 20, 5, 1)self.conv2 = nn.Conv2d(20, 50, 5, 1)self.fc1 = nn.Linear(4*4*50, 500)self.fc2 = nn.Linear(500, 10)
def forward(self, x):x = F.relu(self.conv1(x))x = F.max_pool2d(x, 2, 2)x = F.relu(self.conv2(x))x = F.max_pool2d(x, 2, 2) x = x.view(-1, 4*4*50)x = F.relu(self.fc1(x))x = self.fc2(x)return F.log_softmax(x, dim=1)
Net.__init__ = __init__
Net.forward = forward
model = Net()

检查搭建情况 

print(model)

原位置为cpu 

 转移至所需CUDA设备

device = torch.device("cuda:0")
model.to(device)
print(next(model.parameters()).device)

数据集的加载和处理

导入MNIST训练数据集和验证数据集并处理

from torch import nn
from torchvision import datasets
from torch.utils.data import TensorDataset
path2data="./data"
train_data=datasets.MNIST(path2data, train=True, download=True)
x_train, y_train=train_data.data,train_data.targets
val_data=datasets.MNIST(path2data, train=False, download=True)
x_val,y_val=val_data.data, val_data.targets
if len(x_train.shape)==3:x_train=x_train.unsqueeze(1)
print(x_train.shape)
if len(x_val.shape)==3:x_val=x_val.unsqueeze(1)
print(x_val.shape)
train_ds = TensorDataset(x_train, y_train)
val_ds = TensorDataset(x_val, y_val)
for x,y in train_ds:print(x.shape,y.item())breakfrom torch.utils.data import DataLoader 
train_dl = DataLoader(train_ds, batch_size=8)
val_dl = DataLoader(val_ds, batch_size=8)

定义损失函数

损失函数计算模型输出和目标之间的距离。Pytorch 中的 optim 包提供了各种优化算法的实现,例如SGD、Adam、RMSprop 等。

通过torch.nn 包可以定义一个负对数似然损失函数,负对数似然损失对于训练具有多个类的分类问题比较有效,负对数似然损失函数的输入为对数概率,而在模型搭建的输出层部分接触过log_softmax,它能从模型中获取对数概率。

loss_func = nn.NLLLoss(reduction="sum")
for xb, yb in train_dl:# move batch to cuda devicexb=xb.type(torch.float).to(device)yb=yb.to(device)out=model(xb)loss = loss_func(out, yb)print (loss.item())break

得到一个测试值 

定义优化器

定义一个Adam优化器,优化器的输入是模型参数和学习率

from torch import optim
opt = optim.Adam(model.parameters(), lr=1e-4)

通过opt .step()自动更新模型参数,同时需要注意计算下一批的梯度之前需将梯度归0

opt.step()
opt.zero_grad()

训练并评估模型

定义一个辅助函数 loss_batch来计算每个小批量的损失值。函数的 opt 参数引用优化器,如果给定,则计算梯度并按小批量更新模型参数。

def  loss_batch(loss_func,  xb,  yb,yb_h,  opt=None): loss = loss_func(yb_h, yb) metric_b =  metrics_batch(yb,yb_h) if opt is  not None: loss.backward()opt.step()opt.zero_grad()return loss.item(),metric_b

 定义一个辅助函数metrics_batch来计算每个小批量的性能指标,这里以准确率作为分类任务的性能指标,并使用 output.argmax 来获取概率最高的预测类

def metrics_batch(target, output):pred = output.argmax(dim=1, keepdim=True)corrects=pred.eq(target.view_as(pred)).sum().item()return corrects

定义一个辅助函数loss_epoch来计算整个数据集的损失和指标值。使用数据加载器对象获取小批量,将它们提供给模型,并计算每个小批量的损失和指标,通过两个运行变量来分别添加损失值和指标值。

def loss_epoch(model,loss_func,dataset_dl,opt=None):loss=0.0metric=0.0len_data=len(dataset_dl.dataset)for xb, yb in dataset_dl:xb=xb.type(torch.float).to(device)yb=yb.to(device)yb_h=model(xb)loss_b,metric_b=loss_batch(loss_func, xb, yb,yb_h, opt)loss+=loss_bif metric_b is not None:metric+=metric_bloss/=len_datametric/=len_datareturn loss, metric

最后,定义一个辅助函数train_val来训练多个时期的模型。在每个时期使用验证数据集评估模型的性能。训练和评估需要分别使用 model.train()和 model.eval()模式。torch.no_grad()可以阻止 autograd 在评估期间计算梯度。

def train_val(epochs, model, loss_func, opt, train_dl, val_dl):for epoch in range(epochs):model.train()train_loss,train_metric=loss_epoch(model,loss_func,train_dl,opt)model.eval()with torch.no_grad():val_loss, val_metric=loss_epoch(model,loss_func,val_dl)accuracy=100*val_metricprint("epoch: %d, train loss: %.6f, val loss: %.6f,accuracy: %.2f" %(epoch, train_loss,val_loss,accuracy))

 设定时期数为5,调用函数进行训练和评估

num_epochs=5
train_val(num_epochs, model, loss_func, opt, train_dl, val_dl)

http://www.dtcms.com/a/567799.html

相关文章:

  • 东莞网站竞价推广运营青岛公司
  • 成安专业做网站ps软件下载官网免费
  • 网站建设 开发人一丶一一人一一专业网站营销
  • 网站关键字优化合同国际网站平台
  • 做百度关键词网站医院类网站建设与维护
  • 滨州建设厅网站门户网站设计行业
  • 单页网站制作程序惠买商城官网优购物
  • 一级注册消防工程师报考条件沈阳网站关键词优化哪里好
  • php网站功能广告策划书word模板
  • 抢购网站建设建设企业网站所遵循的一般原则
  • 佛山企业网站优化深圳工业设计展
  • 长沙自助模板建站网站开发方面知识
  • 网站上传网络营销十大经典案例
  • 手机网站设计公司优选亿企邦做电子网站
  • 舟山工程建设信息网站游戏ui设计是做什么的
  • 手机网站返回顶部代码wordpress 优秀博客
  • 网站建好怎么发布设计图纸用什么软件
  • 中国制造网官方网站入口网址厦门网站建设公司哪家好
  • 个人备案 网站简介怎么写湛江的网站建设公司
  • 宁波网站建设怎么样wordpress修改页面组件
  • 网站开发公对公转账合同模板seo怎么快速提高排名
  • 营销型网站策划高新手机网站建设价格
  • 怎样管理一个俄语网站罗庄网站建设
  • 商旅网站制作浙江虎霸建设机械有限公司网站
  • 苏州建筑类网站建设国内知名展馆设计公司排名
  • 湘潭企业网站建设 磐石网络建立网站有什么用
  • 企业网站为什么要备案温州人才网招聘网官网
  • 谁做视频网站网站建设各语言优点
  • 功能网站首页模板上海网页设计公司
  • 石狮网站建设报价烟台网站建设方案策划