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

web网站开发技术网站申请流程

web网站开发技术,网站申请流程,做网站从哪里买域名,电脑版网站建设合同目录 前置准备 整理数据集 图片增广 读取数据集 微调预训练模型 训练函数 训练和验证模型 Kaggle提交结果 前置准备 常规导包 import os import torch import torchvision from torch import nn from d2l import torch as d2l 使用小规模数据样本 d2l.DATA_HUB[dog…

目录

前置准备

整理数据集

图片增广

读取数据集

微调预训练模型

训练函数

训练和验证模型

Kaggle提交结果


前置准备

常规导包

import os
import torch
import torchvision
from torch import nn
from d2l import torch as d2l

使用小规模数据样本

d2l.DATA_HUB['dog_tiny'] = (d2l.DATA_URL + 'kaggle_dog_tiny.zip','0cb91d09b814ecdc07b50f31f8dcad3e81d6a86d')# 如果使用Kaggle比赛的完整数据集,请将下面的变量更改为False
demo = True
if demo:data_dir = d2l.download_extract('dog_tiny')
else:data_dir = os.path.join('..', 'data', 'dog-breed-identification')

整理数据集

复用上一个 CIFAR-10 的处理一样,即从原始训练集中拆分验证集,然后将图像移动到按标签分组的子文件夹中。

下面的reorg_dog_data函数读取训练数据标签、拆分验证集并整理训练集。

def reorg_dog_data(data_dir, valid_ratio):labels = d2l.read_csv_labels(os.path.join(data_dir, 'labels.csv'))d2l.reorg_train_valid(data_dir, labels, valid_ratio)d2l.reorg_test(data_dir)batch_size = 32 if demo else 128
valid_ratio = 0.1
reorg_dog_data(data_dir, valid_ratio)

图片增广

这个狗品种数据集是 ImageNet 数据集的子集,其图像大于 CIFAR-10 数据集的图像。

transform_train = torchvision.transforms.Compose([# 随机裁剪图像,所得图像为原始面积的0.08~1之间,高宽比在3/4和4/3之间。# 然后,缩放图像以创建224x224的新图像torchvision.transforms.RandomResizedCrop(224, scale=(0.08, 1.0),ratio=(3.0/4.0, 4.0/3.0)),torchvision.transforms.RandomHorizontalFlip(),# 随机更改亮度,对比度和饱和度torchvision.transforms.ColorJitter(brightness=0.4,contrast=0.4,saturation=0.4),# 添加随机噪声torchvision.transforms.ToTensor(),# 标准化图像的每个通道torchvision.transforms.Normalize([0.485, 0.456, 0.406],[0.229, 0.224, 0.225])])# 测试时,我们只使用确定性的图像预处理操作
transform_test = torchvision.transforms.Compose([torchvision.transforms.Resize(256),# 从图像中心裁切224x224大小的图片torchvision.transforms.CenterCrop(224),torchvision.transforms.ToTensor(),torchvision.transforms.Normalize([0.485, 0.456, 0.406],[0.229, 0.224, 0.225])])

读取数据集

都和 CIFAR-10一样

train_ds, train_valid_ds = [torchvision.datasets.ImageFolder(os.path.join(data_dir, 'train_valid_test', folder),transform=transform_train) for folder in ['train', 'train_valid']]valid_ds, test_ds = [torchvision.datasets.ImageFolder(os.path.join(data_dir, 'train_valid_test', folder),transform=transform_test) for folder in ['valid', 'test']]train_iter, train_valid_iter = [torch.utils.data.DataLoader(dataset, batch_size, shuffle=True, drop_last=True)for dataset in (train_ds, train_valid_ds)]valid_iter = torch.utils.data.DataLoader(valid_ds, batch_size, shuffle=False,drop_last=True)test_iter = torch.utils.data.DataLoader(test_ds, batch_size, shuffle=False,drop_last=False)

微调预训练模型

同样,本次比赛的数据集是ImageNet数据集的子集。 因此,我们可以使用 微调中讨论的方法在完整ImageNet数据集上选择预训练的模型,然后使用该模型提取图像特征,以便将其输入到定制的小规模输出网络中。

深度学习框架的高级API提供了在ImageNet数据集上预训练的各种模型。 在这里,我们选择预训练的ResNet-34模型,我们只需重复使用此模型的输出层(即提取的特征)的输入。 然后,我们可以用一个可以训练的小型自定义输出网络替换原始输出层,例如堆叠两个完全连接的图层。

def get_net(devices):finetune_net = nn.Sequential()finetune_net.features = torchvision.models.resnet34(pretrained=True)# 定义一个新的输出网络,共有120个输出类别finetune_net.output_new = nn.Sequential(nn.Linear(1000, 256),nn.ReLU(),nn.Linear(256, 120))# 将模型参数分配给用于计算的CPU或GPUfinetune_net = finetune_net.to(devices[0])# 冻结参数for param in finetune_net.features.parameters():param.requires_grad = Falsereturn finetune_net

在计算损失之前,我们首先获取预训练模型的输出层的输入,即提取的特征。 然后我们使用此特征作为我们小型自定义输出网络的输入来计算损失。

loss = nn.CrossEntropyLoss(reduction='none')def evaluate_loss(data_iter, net, devices):l_sum, n = 0.0, 0for features, labels in data_iter:features, labels = features.to(devices[0]), labels.to(devices[0])outputs = net(features)l = loss(outputs, labels)l_sum += l.sum()n += labels.numel()return (l_sum / n).to('cpu')

训练函数

模型训练函数train只迭代小型自定义输出网络的参数

def train(net, train_iter, valid_iter, num_epochs, lr, wd, devices, lr_period,lr_decay):# 只训练小型自定义输出网络net = nn.DataParallel(net, device_ids=devices).to(devices[0])trainer = torch.optim.SGD((param for param in net.parameters()if param.requires_grad), lr=lr,momentum=0.9, weight_decay=wd)scheduler = torch.optim.lr_scheduler.StepLR(trainer, lr_period, lr_decay)num_batches, timer = len(train_iter), d2l.Timer()legend = ['train loss']if valid_iter is not None:legend.append('valid loss')animator = d2l.Animator(xlabel='epoch', xlim=[1, num_epochs],legend=legend)for epoch in range(num_epochs):metric = d2l.Accumulator(2)for i, (features, labels) in enumerate(train_iter):timer.start()features, labels = features.to(devices[0]), labels.to(devices[0])trainer.zero_grad()output = net(features)l = loss(output, labels).sum()l.backward()trainer.step()metric.add(l, labels.shape[0])timer.stop()if (i + 1) % (num_batches // 5) == 0 or i == num_batches - 1:animator.add(epoch + (i + 1) / num_batches,(metric[0] / metric[1], None))measures = f'train loss {metric[0] / metric[1]:.3f}'if valid_iter is not None:valid_loss = evaluate_loss(valid_iter, net, devices)animator.add(epoch + 1, (None, valid_loss.detach().cpu()))scheduler.step()if valid_iter is not None:measures += f', valid loss {valid_loss:.3f}'print(measures + f'\n{metric[1] * num_epochs / timer.sum():.1f}'f' examples/sec on {str(devices)}')

训练和验证模型

现在我们可以训练和验证模型了,以下超参数都是可调的。 例如,我们可以增加迭代轮数。 另外,由于lr_periodlr_decay分别设置为2和0.9, 因此优化算法的学习速率将在每2个迭代后乘以0.9。

devices, num_epochs, lr, wd = d2l.try_all_gpus(), 10, 1e-4, 1e-4
lr_period, lr_decay, net = 2, 0.9, get_net(devices)
train(net, train_iter, valid_iter, num_epochs, lr, wd, devices, lr_period,lr_decay)

Kaggle提交结果

最终所有标记的数据(包括验证集)都用于训练模型和对测试集进行分类。 我们将使用训练好的自定义输出网络进行分类。

net = get_net(devices)
train(net, train_valid_iter, None, num_epochs, lr, wd, devices, lr_period,lr_decay)preds = []
for data, label in test_iter:output = torch.nn.functional.softmax(net(data.to(devices[0])), dim=1)preds.extend(output.cpu().detach().numpy())
ids = sorted(os.listdir(os.path.join(data_dir, 'train_valid_test', 'test', 'unknown')))
with open('submission.csv', 'w') as f:f.write('id,' + ','.join(train_valid_ds.classes) + '\n')for i, output in zip(ids, preds):f.write(i.split('.')[0] + ',' + ','.join([str(num) for num in output]) + '\n')

文章转载自:
http://dinncokernite.bkqw.cn
http://dinncoinconscious.bkqw.cn
http://dinncoscotopia.bkqw.cn
http://dinncoopium.bkqw.cn
http://dinncobleach.bkqw.cn
http://dinncoplaya.bkqw.cn
http://dinncoabattage.bkqw.cn
http://dinncogeewhillikins.bkqw.cn
http://dinncoblithely.bkqw.cn
http://dinncoreluctantly.bkqw.cn
http://dinncomilligrame.bkqw.cn
http://dinncoartillerist.bkqw.cn
http://dinncogestate.bkqw.cn
http://dinncodahlia.bkqw.cn
http://dinncoqoph.bkqw.cn
http://dinncotroy.bkqw.cn
http://dinncoveneer.bkqw.cn
http://dinncoburnsides.bkqw.cn
http://dinncolecherous.bkqw.cn
http://dinnconorthwardly.bkqw.cn
http://dinncoindemonstrable.bkqw.cn
http://dinncomib.bkqw.cn
http://dinncounopened.bkqw.cn
http://dinncoendosporous.bkqw.cn
http://dinncosigil.bkqw.cn
http://dinncoselfishness.bkqw.cn
http://dinncoheraklid.bkqw.cn
http://dinncoasbestous.bkqw.cn
http://dinncometewand.bkqw.cn
http://dinncoignitor.bkqw.cn
http://dinncofeeble.bkqw.cn
http://dinncodestitute.bkqw.cn
http://dinncounchoke.bkqw.cn
http://dinncotrain.bkqw.cn
http://dinncobiomedicine.bkqw.cn
http://dinncomammalogy.bkqw.cn
http://dinncomanifold.bkqw.cn
http://dinncoessentially.bkqw.cn
http://dinncotroilite.bkqw.cn
http://dinncolineally.bkqw.cn
http://dinncosalutatory.bkqw.cn
http://dinncochickenshit.bkqw.cn
http://dinncoossie.bkqw.cn
http://dinncohypertrophy.bkqw.cn
http://dinncoelectrodynamometer.bkqw.cn
http://dinncoqueuer.bkqw.cn
http://dinncotragicomedy.bkqw.cn
http://dinncoaffectionateness.bkqw.cn
http://dinncodress.bkqw.cn
http://dinncocomplacence.bkqw.cn
http://dinncopinetum.bkqw.cn
http://dinncosignally.bkqw.cn
http://dinncoeunomian.bkqw.cn
http://dinncofalsely.bkqw.cn
http://dinncolaith.bkqw.cn
http://dinncobleep.bkqw.cn
http://dinncojetton.bkqw.cn
http://dinncovacillating.bkqw.cn
http://dinncoleonid.bkqw.cn
http://dinncoastrogony.bkqw.cn
http://dinncohunting.bkqw.cn
http://dinncohaematogenesis.bkqw.cn
http://dinncognomical.bkqw.cn
http://dinncosuperheater.bkqw.cn
http://dinncohabitacle.bkqw.cn
http://dinncosententiousness.bkqw.cn
http://dinncosallenders.bkqw.cn
http://dinncobutter.bkqw.cn
http://dinncolefty.bkqw.cn
http://dinncomucilaginous.bkqw.cn
http://dinncoresupply.bkqw.cn
http://dinncopicaninny.bkqw.cn
http://dinncoacceptive.bkqw.cn
http://dinncoantiperiodic.bkqw.cn
http://dinncounbeloved.bkqw.cn
http://dinncoekalead.bkqw.cn
http://dinncosidestroke.bkqw.cn
http://dinncoplatonist.bkqw.cn
http://dinncodesign.bkqw.cn
http://dinncofreezing.bkqw.cn
http://dinncoclicketyclack.bkqw.cn
http://dinncooestrone.bkqw.cn
http://dinncocriteria.bkqw.cn
http://dinncospermatogeny.bkqw.cn
http://dinncolondony.bkqw.cn
http://dinncolayette.bkqw.cn
http://dinncoschmatte.bkqw.cn
http://dinncobuddhist.bkqw.cn
http://dinncobalayeuse.bkqw.cn
http://dinncowordsplitting.bkqw.cn
http://dinncowarrant.bkqw.cn
http://dinncoreafference.bkqw.cn
http://dinncodevastation.bkqw.cn
http://dinncodhss.bkqw.cn
http://dinncorequire.bkqw.cn
http://dinncotropism.bkqw.cn
http://dinncobemegride.bkqw.cn
http://dinncoillocal.bkqw.cn
http://dinncosixte.bkqw.cn
http://dinncobaggage.bkqw.cn
http://www.dinnco.com/news/147843.html

相关文章:

  • 电商网站上信息资源的特点包括广州推广引流公司
  • 展览展示设计公司重庆企业seo
  • 爱心助学网站建设汽车网站建设
  • 购房网官网整站优化
  • 网站中宣传彩页怎么做的河南关键词排名顾问
  • 宁津做网站公司百度竞价排名名词解释
  • 合肥企业网站建设工作室社会新闻最新消息
  • 网站建设需要哪些内容微信群拉人的营销方法
  • crm管理系统在线演示谷歌seo排名技巧
  • 企业网站建站的专业性原则是指网站信息内容应该体现建站目的和目标群体海外推广代理商
  • 河东网站建设今天刚刚发生的新闻事故
  • 河北邢台新河网青岛seo排名公司
  • java做网站比php难sem竞价课程
  • 长沙百度做网站多少钱成都网络推广哪家好
  • 政府类网站制作站长资讯
  • 免费做推广的网站有哪些重庆seowhy整站优化
  • 福田网站建设龙岗网站建设罗湖网站建设网站注册页面
  • 提供温州手机网站制作哪家好引擎优化是什么意思
  • 宣传册设计与制作用什么软件优化大师怎么下载
  • 网络销售型网站有哪些郑州百度搜索优化
  • 做网站发违规内容 网警抓不抓免费设计模板网站
  • 宝安石岩网站建设太原今日新闻最新头条
  • 做电商网站必需知道qc网站外链购买平台
  • 必须重视的问题之一seo网站推广的主要目的是什么
  • 珠海华兴建设工程有限公司网站关键词排名代做
  • 郑州正规网站制作公司推广普通话手抄报简单漂亮
  • 网站首页建设图文教程游戏推广代理加盟
  • 网站没有备案可以做百度推广吗昆明网络推广公司排名
  • 网站开发折旧网页怎么优化
  • 打开云南省住房和城乡建设厅网站网站关键词优化wang