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

网站推广智选刺盾云下拉西安市今天发生的重大新闻

网站推广智选刺盾云下拉,西安市今天发生的重大新闻,营销型网站管理方案,海外自建站前言 目的是要了解pytorch如何完成模型训练 https://github.com/TingsongYu/PyTorch-Tutorial-2nd参考的学习笔记 数据准备 由于本案例目的是pytorch流程学习,为了简化学习过程,数据仅选择了4张图片,分为2类,正常与新冠&#xf…

前言

目的是要了解pytorch如何完成模型训练
https://github.com/TingsongYu/PyTorch-Tutorial-2nd参考的学习笔记


数据准备

由于本案例目的是pytorch流程学习,为了简化学习过程,数据仅选择了4张图片,分为2类,正常与新冠,训练集2张,
验证集2张。标签信息存储于TXT文件中。具体目录结构如下:

注意:covid-19的图可以找到但是no-finding两张图没有找到
covid-19-1
covid-19-2
no-finding的图随便照两张看着正常的,别问我哪个是正常的,我也不知道(❍ᴥ❍ʋ),需要改名字为00001215_000.png00001215_001.png

├─imgs
│  ├─covid-19
│  │      auntminnie-a-2020_01_28_23_51_6665_2020_01_28_Vietnam_coronavirus.jpeg
│  │      ryct.2020200028.fig1a.jpeg
│  │
│  └─no-finding
│         00001215_000.png
│         00001215_001.png
│
└─labelstrain.txtvalid.txt

创建标签文件:

创建 train.txt 和 valid.txt 文件,并填入图片路径和标签信息

  • train.txt:
covid-19/auntminnie-a-2020_01_28_23_51_6665_2020_01_28_Vietnam_coronavirus.jpeg 1
no-finding/00001215_000.png 0
  • valid.txt:
covid-19/ryct.2020200028.fig1a.jpeg 1
no-finding/00001215_001.png 0

完整代码示例:

以下是准备数据集、定义模型和训练模型的完整代码示例:

import os
from PIL import Image
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F# 自定义数据集类
class COVID19Dataset(Dataset):def __init__(self, img_dir, label_file, transform=None):self.img_dir = img_dirself.transform = transformself.img_labels = []with open(label_file, 'r') as f:lines = f.readlines()for line in lines:self.img_labels.append(line.strip().split())def __len__(self):return len(self.img_labels)def __getitem__(self, idx):img_path, label = self.img_labels[idx]img_path = os.path.join(self.img_dir, img_path)image = Image.open(img_path).convert('RGB')label = int(label)if self.transform:image = self.transform(image)return image, label# 图像预处理
transform = transforms.Compose([transforms.Resize((8, 8)),transforms.ToTensor()
])# 创建数据集和数据加载器
train_dataset = COVID19Dataset(img_dir='imgs', label_file='labels/train.txt', transform=transform)
train_loader = DataLoader(train_dataset, batch_size=2, shuffle=True)valid_dataset = COVID19Dataset(img_dir='imgs', label_file='labels/valid.txt', transform=transform)
valid_loader = DataLoader(valid_dataset, batch_size=2, shuffle=False)# 定义简单卷积神经网络
class SimpleCNN(nn.Module):def __init__(self):super(SimpleCNN, self).__init__()self.conv1 = nn.Conv2d(3, 1, kernel_size=3)  # 输入通道为3(RGB),输出通道为1,卷积核大小为3x3self.fc1 = nn.Linear(1 * 6 * 6, 2)  # 全连接层,输入大小为6*6*1,输出大小为2(2类)def forward(self, x):x = self.conv1(x)x = F.relu(x)x = x.view(-1, 1 * 6 * 6)  # 展平操作x = self.fc1(x)return xmodel = SimpleCNN()# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)# 训练函数
def train(model, train_loader, criterion, optimizer, epoch):model.train()running_loss = 0.0for batch_idx, (data, target) in enumerate(train_loader):optimizer.zero_grad()output = model(data)loss = criterion(output, target)loss.backward()optimizer.step()running_loss += loss.item()if batch_idx % 10 == 9:print(f'Train Epoch: {epoch} [{batch_idx * len(data)}/{len(train_loader.dataset)}] Loss: {running_loss / 10:.6f}')running_loss = 0.0# 验证函数
def validate(model, valid_loader, criterion):model.eval()validation_loss = 0.0correct = 0with torch.no_grad():for data, target in valid_loader:output = model(data)validation_loss += criterion(output, target).item()pred = output.argmax(dim=1, keepdim=True)correct += pred.eq(target.view_as(pred)).sum().item()validation_loss /= len(valid_loader.dataset)print(f'\nValidation set: Average loss: {validation_loss:.4f}, Accuracy: {correct}/{len(valid_loader.dataset)} ({100. * correct / len(valid_loader.dataset):.0f}%)\n')# 训练和验证
for epoch in range(1, 11):train(model, train_loader, criterion, optimizer, epoch)validate(model, valid_loader, criterion)

效果展示:

由于数据量少,随机性非常大,大家多运行几次,观察结果。不过本案例结果完全不重要!)可以观看Average loss变化,Accuracy由于训练数据过少几乎不会变化
在这里插入图片描述

知识点总结

1. 数据

  • Q:要知道pytorch需要模型的格式
    A:需要编写代码完成数据的读取,转换成模型能够读取的格式。在 PyTorch 中,读取数据通常通过自定义 Dataset 类和内置的 DataLoader 来实现。这种方法既灵活又高效,适用于各种类型的数据集。
  • Q:自己如何编写Dataset?
    A:编写一个自定义的 Dataset 类,需要继承 torch.utils.data.Dataset 并实现三个方法:__init____len__ __getitem__

2. 模型

可参考:
从“卷积”、到“图像卷积操作”、再到“卷积神经网络”,“卷积”意义的3次改变_哔哩哔哩_bilibili

  • Q: 卷积层,全连接层的作用是什么?
    A: 卷积层提取特征,全连接层进行分类。
    1. 卷积层
    • 卷积层的作用是提取输入图像的特征。
    • 使用 3x3 的卷积核进行卷积操作,可以捕捉到局部的空间特征。
    • 卷积操作后的输出会产生一个新的特征图,这个特征图是卷积层提取到的特征表示。
    1. 全连接层
    • 全连接层的作用是将卷积层提取到的特征进行进一步的处理,最终输出分类结果。
    • 在这个例子中,全连接层有两个神经元,分别输出两个分类的概率。
    • 全连接层的输入被限制在 8x8,这意味着输入的特征图经过扁平化(flatten)后被映射到一个 8x8 的向量。

3. 优化

  • Q:根据什么规则对模型的参数进行更新学习呢?
    A:常用的方法:交叉熵损失函数(CrossEntropyLoss)、随机梯度下降法(SGD)和按固定步长下降学习率策略(StepLR)

4. 迭代

  • Q:怎么进行模型迭代?
    A: 有了模型参数更新的必备组件,接下来需要一遍又一遍地给模型喂数据,监控模型训练状态,这时候就需要for循环,不断地从dataloader里取出数据进行前向传播,反向传播,参数更新,观察loss、acc,周而复始。

总结

详细内容https://github.com/TingsongYu/PyTorch-Tutorial-2nd可查看,这是一篇读书笔记,与代码实现的分享。后续的笔记会以Q-A解决一些问题

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

相关文章:

  • 湛江seo建站百度不收录网站吗
  • 深圳财务小公司网站网站网页的收录数量
  • 大朗做网站公司移动互联网软件开发
  • 设计教育网站东昌府区住房和城乡建设局网站
  • 佛山网站建设网络推广成都网站建设q479185700棒
  • 电商网站开发环境怎么写松山湖网站建设
  • 营销型网站和展示型网站的区别能源科技网站建设
  • 临沂网站优化哪家好pmp
  • 医疗医院网站建设一起做网店官网
  • 购物商城网站建设多少钱竞价推广账户竞价托管费用
  • js 网站简体繁体地方社区网站 备案
  • 商丘网站建设哪家值得信任上海建筑设计院有限公司停工
  • 一级a做爰片免费网站视频WordPress wp-cache
  • 哈尔滨网站制作哪儿好薇seo属于运营还是技术
  • 手机端网站开发流程中国服装网官网
  • 青岛专业建设网站网站上点击图片局部放大如何做
  • 一个门户网站多少钱公司营业执照可以做几个网站
  • 课程网站建设发展趋势wordpress加速之gzip
  • 幼教资源网网站开发策划书无锡企业免费建站
  • 开源网站搭建自己做的网站如何联网
  • 雄安优秀网站建设哪家好北京建设网站公司推荐
  • 5h制作网站门户网站的定义
  • 东莞网站建设网如何部署asp网站
  • 网站运行速度慢的原因如何做网站主题
  • jsp网站架构引擎优化是什么工作
  • 一般在什么网站上做电子请帖网站建设布局样式
  • 网站每年多少钱管理咨询公司信息
  • 怎么去创建一个网站哪里有做网站系统
  • 天津智能网站建设费用wordpress整套主题
  • 简单的网站管理系统湛江房产信息网