【超级干货】2天速成PyTorch深度学习入门教程,缓解研究生焦虑

3、cnn基础

卷积神经网络

在这里插入图片描述

输入层 —输入图片矩阵

  • 输入层一般是 RGB 图像或单通道的灰度图像,图片像素值在[0,255],可以用矩阵表示图片
  • 在这里插入图片描述

卷积层 —特征提取

  • 人通过特征进行图像识别,根据左图直的笔画判断X,右图曲的笔画判断圆
    在这里插入图片描述
  • 卷积操作
    在这里插入图片描述
    在这里插入图片描述

激活层 —加强特征

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

池化层 —压缩数据

在这里插入图片描述
在这里插入图片描述

全连接层 —进行分类

输出层 —输出分类概率

在这里插入图片描述

4、基于LeNet实现cifar10数据集分类

1、数据集

在这里插入图片描述

  • DataSet
import torchvision
from torchvision import transforms
def get_train_dataset(data_root):transform = transforms.Compose([transforms.ToTensor(),#0~1transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])#-1,1#(0-0.5)/0.5=-1 (1-0.5)/0.5=1train_dataset = torchvision.datasets.CIFAR10(root=data_root, train=True,download=True, transform=None)return train_dataset
train_dataset = get_train_dataset("dataset")
image,label = train_dataset[1]
print(train_dataset.classes[label])
print(type(image))

transforms 设定处理图片的规则

# Composes several transforms together (authority)
# 把一系列图片操作【组合】起来
transform = transforms.Compose
# Convert a ``PIL Image`` or ``numpy.ndarray`` to tensor
# 将PIL Image格式或者numpy.ndarray格式的数据格式化为可被pytorch快速处理的tensor类型
transforms.ToTensor() 
# Normalize a tensor image with mean and standard deviation
# output[channel] = (input[channel] - mean[channel]) / std[channel]
# 使用均值和方差对数据归一化,保证程序运行时收敛加快,训练次数少点
# 因为tensor是0-1,经过normalize可以变成(-1,1) 所以可以使用0.5,当然并不一定都是0.5
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))

在这里插入图片描述

# root :Root directory of dataset where directory(数据集的根目录)
# train  If True, creates dataset from training set
# download If true, downloads the dataset from the internet
# transform A transform that takes in an PIL image and returns a transformed version
torchvision.datasets.CIFAR10(root=data_root, train=True,download=True, transform=transform)                              

验证检查

train_dataset = get_train_dataset("dataset")
image,label = train_dataset[1]
print(train_dataset.classes[label])
image.show()
  • DataLoader
train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=32,shuffle=True, num_workers=2)

说明

dataset:数据集
batch_size:how many samples per batch to load
shuffle:set to ``True`` to have the data reshuffled
num_workers:
how many subprocesses to use for data 加载数据集采用单进程还是多进程
0 means that the data will be loaded in the main process.数据在主进程加载(windows建议0

测试

val_dataset = get_val_dataset("dataset")
val_loader = get_val_loader(val_dataset)
for data in val_loader:images,labels = dataprint(images.shape)print(labels)

2、模型

  • 搭建网络

import torch
from torch import nnclass Net(nn.Module):def __init__(self):super().__init__()self.conv1 = nn.Conv2d(in_channels=3, out_channels=6,kernel_size=5,stride=1,padding=0)self.relu1 = nn.ReLU()self.pool1 = nn.MaxPool2d(kernel_size=2, stride=2)self.conv2 = nn.Conv2d(in_channels=6, out_channels=16,kernel_size=5,stride=1,padding=0)self.relu2 = nn.ReLU()self.pool2 = nn.MaxPool2d(kernel_size=2, stride=2)self.flatten = nn.Flatten()self.fc1 = nn.Linear(in_features=16 * 5 * 5, out_features=120)self.relu3 = nn.ReLU()self.fc2 = nn.Linear(in_features=120, out_features=84)self.relu4 = nn.ReLU()self.fc3 = nn.Linear(in_features=84, out_features=10)def forward(self, x):x = self.conv1(x)x = self.relu1(x)x = self.pool1(x)x = self.conv2(x)x = self.relu2(x)x = self.pool2(x)x = self.flatten(x)print(x.shape)x = self.fc1(x)x = self.relu3(x)x = self.fc2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1527611.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

qt多线程的两种方法run和movetothread

qt多线程的有什么用? 将耗时长的操作丢入专属线程执行,这样就不会影响主线程的界面操作,操作完再用信号槽等的方式返回结果 1.界面和部件相关都必须在主界面运行,不要用子线程调用或者操作,会引起奇怪的bug&#xff…

【Python 千题 —— 算法篇】字符统计

Python 千题持续更新中 …… 脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目背景 在编程中,对字符串的字符统计是一个常见任务。这在文本处理、数据分析、词频统计、自然语言处理等领域有广泛应用。无论…

AI周报(9.1-9.7)

AI应用-Tidal 引领海洋养殖革命 Tidal团队,一个源自Alphabet X的创新项目,今年七月顺利从X实验室毕业,成为一家独立的公司。Tidal正在通过人工智能技术改变海洋养殖,特别是鲑鱼养殖。Tidal的总部位于挪威特隆赫姆,他们…

微信小程序和公众号的区别

微信小程序和公众号都是基于微信平台的两种不同应用形态,它们在展现形式、主要功能以及技术要求等方面存在显著区别。具体分析如下: 微信小程序和公众号的区别 展现形式 小程序:类似于APP的应用体验,用户可以通过扫一扫或者搜索…

数据结构——单链表实现和注释浅解

关于单链表的基础部分增删查改的实现和一点理解&#xff0c;写在注释里~ SList.h #pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h>//定义节点的结构 //数据 指向下一个节点的指针 typedef int SLTDataType;typedef struct SListNo…

如何限制与管控员工上网行为?五个管控方法让员工效率倍增!

在现代企业中&#xff0c;互联网是工作中不可或缺的工具&#xff0c;但与此同时&#xff0c;员工在工作时间浏览与工作无关的网站、进行网络娱乐等行为&#xff0c;也成为了影响企业生产力和效率的主要因素之一。如何有效限制和管控员工的上网行为&#xff0c;从而提升工作效率…

解决ubuntu系统无法与FinalShell无法连接问题

问题 解决方案 先下载ubuntu网络工具 sudo apt install net-tools输入密码 下载完成后进入管理员模式查看密码 sudo -ihostname -I查看IP 得到ip地址后再继续安装 openssh-server 插件 sudo apt-get install openssh-server问题解决 尝试连接FinalShell

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中&#xff0c;不同电脑的配置和操作系统&#xff08;如Win11与Win7&#xff09;可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行&#xff0c;需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下&a…

每日OJ_牛客_骆驼命名法(递归深搜)

目录 牛客_骆驼命名法&#xff08;简单模拟&#xff09; 解析代码 牛客_骆驼命名法&#xff08;简单模拟&#xff09; 骆驼命名法__牛客网 解析代码 首先一个字符一个字符的读取内容&#xff1a; 遇到 _ 就直接跳过。如果上一个字符是 _ 则下一个字符转大写字母。 #inclu…

从0开始深度学习(4)——线性回归概念

1 线性回归 回归&#xff08;regression&#xff09;指能为一个或多个自变量与因变量之间的关系进行建模。 1.1 线性模型 线性假设是指目标可以表示为特征的加权和&#xff0c;以房价和面积、房龄为例&#xff0c;可以有下面的式子&#xff1a; w称为权重&#xff08;weigh…

Centos7.9部署Gitlab-ce-16.9

一、环境信息 软件/系统名称版本下载地址备注Centos77.9.2009https://mirrors.nju.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.isogitlab-cegitlab-ce-16.9.1https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-16.9.1-ce.0.el7.x86_64.rpm…

磁电偶极子天线学习1 一种60GHz 宽带圆极化口径耦合磁电偶极子天线阵列

摘要&#xff1a; 一种新型的圆极化口径耦合天线被提出。这种圆极化磁电偶极子天线由刻蚀在短路基片集成波导的一部分的宽臂上&#xff0c;并且很容易被集成基片。在工作频段内实现了宽于28.8%的阻抗带宽和宽带3-dB的25.9%的轴比和的增益。此外&#xff0c;因为圆极化辐射由两个…

win11如何录屏

在 Win11 中录屏可以使用系统自带的工具和一些第三方应用。以下是几种方法&#xff1a; 方法一&#xff1a;使用 Xbox Game Bar 1. 打开 Xbox Game Bar - 按 Win G 组合键打开 Xbox Game Bar。 2. 开始录制 - 在显示的界面中&#xff0c;点击“录制”按钮&#xff08;…

C++入门(06)安装QT并快速测试体验一个简单的C++GUI项目

文章目录 1. 清华镜像源下载2. 安装3. 开始菜单上的 QT 工具4. 打开 Qt Creator5. 简单的 GUI C 项目5.1 打开 Qt Creator 并创建新项目5.2 设计界面5.3 添加按钮的点击事件5.4 编译并运行项目 6. 信号和槽&#xff08;Signals and Slots&#xff09; 这里用到了C类与对象的很多…

知名AIGC人工智能专家培训讲师唐兴通谈AI大模型数字化转型数字新媒体营销与数字化销售

在过去的二十年里&#xff0c;中国企业在数字营销领域经历了一场惊心动魄的变革。从最初的懵懂无知到如今的游刃有余&#xff0c;这一路走来&#xff0c;既有模仿学习的艰辛&#xff0c;也有创新突破的喜悦。然而&#xff0c;站在人工智能时代的门槛上&#xff0c;我们不禁要问…

认知杂谈53

今天分享 有人说的一段争议性的话 I I 1.自助者天助 首先呢&#xff0c;咱得好好琢磨琢磨“自助者天助”这句话。这话说起来好像有点高深莫测的感觉&#xff0c;其实啊&#xff0c;道理特别简单。 就是说要是你自己都不乐意努力&#xff0c;那老天爷也不会平白无故地来帮你…

【Map】、集合总结

Map(*)——映射 比较之前的集合 List 为什么使用map <k,v>&#xff1a;key–value Api–>尽量用k去操作value put<k,v> package com.ffyc.map;import java.util.HashMap; import java.util.Map;/*** 映射*/ public class MapDemo {public static void main(St…

1 模拟——67. 二进制求和

1 模拟 67. 二进制求和 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 示例 1&#xff1a; 输入:a "11", b "1" 输出&#xff1a;"100" 示例 2&#xff1a; 输入&#xff1a;a "1010", b "…

6.3图的遍历

图的遍历是指从某点出发,按照某种搜索方式沿着边访问图中所有节点 图的遍历算法主要有两种:广度优先,深度优先 都需要辅助数组visited[]来记录节点是否被访问过 6.3.1广度优先搜索 like层次遍历,需要辅助队列 代码实现 #include<stdio.h> #define maxnum 15 bool vi…

PMP–一、二、三模–分类–14.敏捷–技巧–看板面板与燃尽图燃起图

文章目录 技巧一模14.敏捷--方法--看板&#xff08;类似卡片&#xff09;1、 [单选] 根据项目的特点&#xff0c;项目经理建议选择一种敏捷方法&#xff0c;该方法限制团队成员在任何给定时间执行的任务数。此方法还允许团队提高工作过程中问题和瓶颈的可见性。项目经理建议采用…