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

网深圳网站优化网站服务合同交印花税吗

网深圳网站优化,网站服务合同交印花税吗,专业做模具钢的网站,云服务器搭建实战3. 利用ResNet-18预测电视剧《辛普森一家》中的人物 加载数据模型建立与训练获取样本 你将训练一个神经网络来预测电视剧《辛普森一家》中的人物。 您将获得一个训练和测试数据集。您将需要在训练数据上训练神经网络并在测试数据上获得预测。 加载数据 下载数据档案并解压…

实战3. 利用ResNet-18预测电视剧《辛普森一家》中的人物

  • 加载数据
  • 模型建立与训练
  • 获取样本

你将训练一个神经网络来预测电视剧《辛普森一家》中的人物。

您将获得一个训练和测试数据集。您将需要在训练数据上训练神经网络并在测试数据上获得预测。

在这里插入图片描述

加载数据

下载数据档案并解压该数据集。

! pip install wldhx.yadisk-direct
! curl -L $(yadisk-direct https://disk.yandex.com/d/Ggl9017wNIN0vg) -o simpsons.zip

注意! Yandex云盘对每天从链接同时下载的数量施加了一些限制。因此,上面单元格中的代码可能会产生错误。在这种情况下,您需要取消注释并从下面的单元格中运行代码(其中,数据是从备用链接下载的):

#! pip install wldhx.yadisk-direct
#! curl -L $(yadisk-direct https://disk.yandex.ru/d/MweozIqon2ybsQ) -o simpsons.zip

接下来,解压:

! unzip -qq simpsons.zip

导入必要的库:

import numpy as np
import matplotlib.pyplot as pltfrom PIL import Imageimport torch
import torch.nn as nn
import torch.optim as optimimport torchvision
from torchvision import datasets, models, transforms

让我们定义在将图像输入神经网络之前要执行的转换。您可以按照自己的意愿改变这些转换。

请注意,如果您要使用预先训练的神经网络(vgg、resnet 等),则转换应该与预先训练该神经网络时使用的转换相同。在 pytorch 文档中可以找到给定网络使用哪些转换以及如何在代码中使用它们。

如果您从头开始训练自己的神经网络,则可以自行选择转换。

resnet_transforms = transforms.Compose([transforms.Resize(256), # 每幅图像的尺寸将缩小到 256*256transforms.CenterCrop(224), # 图片的中心部分将被剪掉,尺寸为 224*224transforms.ToTensor(), # 图像从python数组转换为torch.Tensor格式transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) # 图像像素值归一化])# 特定预训练网络的转换更容易像这样获得
# resnet_transforms = models.ResNet18_Weights.IMAGENET1K_V1.transforms()

让我们从数据中创建数据集。请注意,对于测试数据,您不知道答案:在 ./simpsons_data/test 文件夹中没有带有类名的子文件夹,只有一个包含所有图像的文件夹。您的任务是使用您知道答案的训练数据来训练神经网络,使用训练后的神经网络获得测试数据的预测,并将其作为答案提交。

train_data = datasets.ImageFolder('./simpsons_data/train', transform=resnet_transforms)
test_data = datasets.ImageFolder('./simpsons_data/test', transform=resnet_transforms)

在这里插入图片描述

我们来得到类别编号和类别名称的对应关系:

class_to_idx = train_data.class_to_idx
class_to_idx

输出:

{‘abraham_grampa_simpson’: 0,
‘agnes_skinner’: 1,
‘apu_nahasapeemapetilon’: 2,
‘barney_gumble’: 3,
‘bart_simpson’: 4,
‘carl_carlson’: 5,
‘charles_montgomery_burns’: 6,
‘chief_wiggum’: 7,
‘cletus_spuckler’: 8,
‘comic_book_guy’: 9,
‘disco_stu’: 10,
‘edna_krabappel’: 11,
‘fat_tony’: 12,
‘gil’: 13,
‘groundskeeper_willie’: 14,
‘homer_simpson’: 15,
‘kent_brockman’: 16,
‘krusty_the_clown’: 17,
‘lenny_leonard’: 18,
‘lionel_hutz’: 19,
‘lisa_simpson’: 20,
‘maggie_simpson’: 21,
‘marge_simpson’: 22,
‘martin_prince’: 23,
‘mayor_quimby’: 24,
‘milhouse_van_houten’: 25,
‘miss_hoover’: 26,
‘moe_szyslak’: 27,
‘ned_flanders’: 28,
‘nelson_muntz’: 29,
‘otto_mann’: 30,
‘patty_bouvier’: 31,
‘principal_skinner’: 32,
‘professor_john_frink’: 33,
‘rainier_wolfcastle’: 34,
‘ralph_wiggum’: 35,
‘selma_bouvier’: 36,
‘sideshow_bob’: 37,
‘sideshow_mel’: 38,
‘snake_jailbird’: 39,
‘troy_mcclure’: 40,
‘waylon_smithers’: 41}

我们将训练样本分为两部分:训练和验证。在训练部分,像往常一样,我们将训练神经网络,在验证部分我们将测试网络。

# 我们将把 80% 的图片纳入训练样本
train_size = int(len(train_data) * 0.8)
# 进行验证 - 剩余 20%
val_size = len(train_data) - train_sizetrain_data, val_data = torch.utils.data.random_split(train_data, [train_size, val_size])

让我们为三部分数据创建三个数据加载器:

train_loader = torch.utils.data.DataLoader(train_data, batch_size=64, shuffle=True)
val_loader = torch.utils.data.DataLoader(val_data, batch_size=64, shuffle=False)
test_loader = torch.utils.data.DataLoader(test_data, batch_size=64, shuffle=False)

让我们看一下训练集中的几张图片,以了解我们正在处理的内容。

for batch in test_loader:# 一批图片和一批图片答案images, labels = batchbreak
def show_images(images, labels):f, axes= plt.subplots(1, 10, figsize=(30,5))for i, axis in enumerate(axes):# 将图像从张量转换为numpyimg = images[i].numpy()# 将图像转换为尺寸(长度、宽度、颜色通道)img = np.transpose(img, (1, 2, 0))axes[i].imshow(img)axes[i].set_title(labels[i].numpy())plt.show()

图像将在转换之后绘制,因此如果在转换过程中进行了规范化,则图像的颜色可能不太自然。不要害怕=)

show_images(images, labels)

输出:
在这里插入图片描述

模型建立与训练

您的任务是根据训练和验证数据训练神经网络,并获得测试数据的预测。要建立和训练神经网络,您可以而且应该使用以前的课程和实战的材料。

关于如何提高速度的想法:

  • 尝试从头开始训练你的神经网络,就像我们在第四课和实战2中所做的那样。尝试改变网络架构和各种超参数(层数、层中的过滤器等)以获得最佳验证分数;
  • 尝试采用预先训练的神经网络(例如 resnet-18),并在我们的数据上重新训练它,就像我们在第五课中所做的那样。注意转换:它们必须与您正在训练的架构相匹配。尝试冻结不同数量的层并观察它如何影响结果。
  • 尝试将数据增强应用于训练样本。您可以在 Habr 上阅读有关数据增强的内容。 pytorch 中增强的示例可以在文档中找到。
    请注意,增强仅适用于训练集。它不应应用于验证和测试样本。因此,您需要创建两个不同的转换管道:一个用于训练部分,一个用于验证和测试部分。

在网络训练过程中,要注意验证速度。验证指标的值是一个指导方针,可让您了解网络在测试样本上的行为方式。但请注意,测试和验证样本的结果可能有所不同。

检查 GPU 是否可用(如果不可用,请在笔记本电脑设置中启用 GPU):

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

建立神经网络:

# 你的代码:建立并训练一个神经网络
# resnet-18 模型
model = models.resnet18(pretrained=True)
# model.eval()
# model.eval可查看该神经网络结构

设置 evaluate 函数用于评估模型性能,train 函数用于训练模型并在每个训练周期结束后进行验证。

def evaluate(model, dataloader, loss_fn):losses = []num_correct = 0num_elements = 0for i, batch in enumerate(dataloader):# 获取当前批次X_batch, y_batch = batchnum_elements += len(y_batch)# 此行禁用梯度计算with torch.no_grad():# 获取批量图像的网络响应logits = model(X_batch.to(device))# 计算当前批次的损失loss = loss_fn(logits, y_batch.to(device))losses.append(loss.item())# 计算网络响应作为每幅图像的类别编号y_pred = torch.argmax(logits, dim=1)# 计算当前批次中正确的网络响应数量num_correct += torch.sum(y_pred.cpu() == y_batch)# 计算最终正确答案的百分比accuracy = num_correct / num_elementsreturn accuracy.numpy(), np.mean(losses)def train(model, loss_fn, optimizer, n_epoch=3):# 网络训练周期for epoch in range(n_epoch):print("Epoch:", epoch+1)model.train(True)running_losses = []running_accuracies = []for i, batch in enumerate(train_loader):# 获取当前批次X_batch, y_batch = batch# 前向传递(获取对一批图像的响应)logits = model(X_batch.to(device))# 计算网络给出的答案和批次的正确答案的损失loss = loss_fn(logits, y_batch.to(device))running_losses.append(loss.item())loss.backward() # backpropagation(梯度计算)optimizer.step() # 更新网络权重optimizer.zero_grad() # 重置权重# 计算当前训练批次的准确率model_answers = torch.argmax(logits, dim=1)train_accuracy = torch.sum(y_batch == model_answers.cpu()) / len(y_batch)running_accuracies.append(train_accuracy)# 记录结果if (i+1) % 50 == 0:print("Average train loss and accuracy over the last 50 iterations:",np.mean(running_losses), np.mean(running_accuracies), end='\n')# 每个时期之后,我们都会得到验证样本的质量指标model.train(False)val_accuracy, val_loss = evaluate(model, val_loader, loss_fn=loss_fn)print("Epoch {}/{}: val loss and accuracy:".format(epoch+1, n_epoch,),val_loss, val_accuracy, end='\n')return model
# 再次声明模型
model = model.to(device)# 选择损失函数
loss_fn = torch.nn.CrossEntropyLoss()# 选择优化算法和学习率。
# 你可以尝试不同的 learning_rate 值
learning_rate = 1e-3
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)
# 让我们开始训练模型
# 参数 n_epoch 可以变化
model = train(model, loss_fn, optimizer, n_epoch=3)

输出:
在这里插入图片描述

获取样本

使用训练好的模型对测试数据集进行预测,并将预测结果保存到一个 .npy 文件中。具体步骤包括:定义一个用于获取预测标签的函数,使用该函数对测试数据进行预测,将预测的索引转换为对应的类别名称,最后将结果保存为 submission_hw05.npy 文件。

def get_predictions(model, dataloader):predicted_labels = []model.eval()predicted_labels = []for i, batch in enumerate(dataloader):# 这就是我们获取当前批次的方法X_batch, _ = batchwith torch.no_grad():logits = model(X_batch.to(device))y_pred = torch.argmax(logits, dim=1)predicted_labels.append(y_pred)predicted_labels = torch.cat(predicted_labels)return predicted_labels# model — 包含你的模型的变量。
predicted_labels = get_predictions(model, test_loader)
idx_to_class = {y:x for x, y in class_to_idx.items()}
predicted_labels = [idx_to_class[x] for x in predicted_labels.data.cpu().numpy()]np.save('submission_hw05.npy', predicted_labels, allow_pickle=True)
print('The answer has been saved to file. `submission_hw05.npy`')

文章转载自:

http://YiMnBUHk.qmqgx.cn
http://LCTTzkXa.qmqgx.cn
http://9dX3sYer.qmqgx.cn
http://zwKFZZly.qmqgx.cn
http://2KXFpSpw.qmqgx.cn
http://PjiRueuk.qmqgx.cn
http://Cqr7uu0h.qmqgx.cn
http://cJpqKPMX.qmqgx.cn
http://K9ORHW5f.qmqgx.cn
http://sWdZ3vmx.qmqgx.cn
http://JhlnHiOG.qmqgx.cn
http://zqXMPyGZ.qmqgx.cn
http://DwNaWTZJ.qmqgx.cn
http://3HIzVvIU.qmqgx.cn
http://L8FSm9Df.qmqgx.cn
http://sK4ryJnR.qmqgx.cn
http://G2hzXZB3.qmqgx.cn
http://kW7kfjdC.qmqgx.cn
http://zWvvzvgT.qmqgx.cn
http://L4jqwxLg.qmqgx.cn
http://KBSVe4Oz.qmqgx.cn
http://OQiFTvuB.qmqgx.cn
http://HeAjNN3Q.qmqgx.cn
http://EpTesxzY.qmqgx.cn
http://GjXaR1mB.qmqgx.cn
http://oOQlnDJU.qmqgx.cn
http://K6BwSK0M.qmqgx.cn
http://lqjVo8PD.qmqgx.cn
http://jnY9l2Le.qmqgx.cn
http://IpVVFWHM.qmqgx.cn
http://www.dtcms.com/wzjs/676031.html

相关文章:

  • 安徽元鼎建设公司网站怎样建设责任文化
  • 注册网站代码搜索引擎实训心得体会
  • 如何开始做婚恋网站企业网站建设找外包公司做
  • 无锡建设机械网站制作百度 指数
  • 营销型网站建设设计服务网页界面设计图
  • 电商网站设计公司只选亿企邦重庆网站建设公司招聘
  • 做流媒体视频播放网站求助安全的网站建设推广
  • 成都做公司网站自助下单网站咋做
  • 即墨城乡建设局网站西安做视频网站公司
  • 苏州做网站套路骗全网商城系统
  • 网站改版需要注意网络接入服务商是什么意思
  • 网站 后台 设计做灯箱片的设计网站
  • 马克杯在线设计网站网络营销市场
  • 枣庄网站建设哪家强公司建网站多少钱
  • 网页游戏网站知乎wordpress获取指定目录的文章
  • 网站数据搬家建站系统软件有哪些
  • 阜阳市城乡建设局网站亚马逊购物
  • 合肥网站建设第一品牌国外网站建设官网
  • 网站添加微信支付功能wordpress分权限浏览器
  • php能开发大型网站网站被k是怎么回事
  • asp.net网站开发实例教程 下载武进网站建设平台
  • 网站开发程序员岗位职责营销型网站一个多少钱
  • 大连永锐网站哪家做的湖南企业注册app
  • 网站首页英文php企业网站开发方案
  • 自适应网站做百度推广重庆城市建设档案馆网站
  • 苏州建设职业培训中心网站建设银行手机版官方网站
  • 宁德市路桥建设有限公司网站用php做网站不用框架
  • 网站前端需要会什么厦门网站制作收费
  • 佛山做外贸网站案例广州域名备案
  • 哪个视频网站做视频赚钱wordpress评论限速