深度学习入门项目——附代码(持续更新)

深度学习知识点总结(持续更新中) 神经网络是深度学习的基础。它由许多层组成,每层包含许多神经元。每个神经元接收来自上一层的输入,并产生一个输出,该输出作为下一层的输入。神经网络通过反向传播算法来学习,并通过权重和偏差来调整每个神经元的输出。 阅读详情

《学习迁移》

我们可以通过Pytorch、Git等途径获得别人用其他数据集训练好的模型,我们可以利用他们训练好的模型,微调一下来跑自己的任务

本项目是迁移Pytorch上的ResNet18,该模型是用ImageNet数据集训练的,ImageNet数据集包含了1000个不同的图像类,我们尝试用该模型来分类蚂蚁和蜜蜂(这两个类ImageNet数据集并不包含)

为了训练这个新分类器,将用120张新的蜜蜂和蚂蚁训练图像训练这个模型,从而进行微调,与ImageNet中数百万张图像相比,这个数据集就微乎其微了

项目代码如下:

1、加载项目所需的库

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader
from torch.optim.lr_scheduler import StepLR

import torchvision
from torchvision import datasets
from torchvision import models
from torchvision import transforms

import numpy as np

from io import BytesIO
from urllib.request import urlopen
from zipfile import ZipFile

import matplotlib.pyplot as plt

2、下载数据

调用urllib.request.urlopen从下载网址https://pytorch.tips/bee-zip中下载数据,并生成对象zipresp;

调用read读取zipresp的二进制数据并通过调用BytesIO写入经过UTF-8编码的bytes流后调用zipfile.ZipFile生成对象zfile

调用extractall对zfile对象进行解压文件到指定文件夹./data

用IO流来进行操作,无需将zip文件下载到本地磁盘上
zipurl='https://pytorch.tips/bee-zip'
with urlopen(zipurl) as zipresp:
    with ZipFile(BytesIO(zipresp.read())) as zfile:
                 zfile.extractall('./data')

3、定义数据的变换

#定义变换
train_transforms = transforms.Compose([
    transforms.RandomResizedCrop(224),
    transforms.RandomHorizontalFlip(),
    transforms.ToTensor(),
    transforms.Normalize(
        mean=[0.485, 0.456, 0.406],
        std=[0.229, 0.224, 0.225]
    )])

val_transforms = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(
        mean=[0.485, 0.456, 0.406],
        std=[0.229, 0.224, 0.225]
    )])

4、加载数据

#数据集
train_dataset = datasets.ImageFolder(
    root = './data/hymenoptera_data/train',
    transform = train_transforms)

val_dataset = datasets.ImageFolder(
    root = './data/hymenoptera_data/val',
    transform = val_transforms)

#数据加载器
train_loader = DataLoader(
    train_dataset,
    batch_size=4,
    shuffle=True,
    num_workers=4
)
val_loader = DataLoader(
    val_dataset,
    batch_size=4,
    shuffle=True,
    num_workers=4
)

5、生成ResNet18模型

#模型
model = models.resnet18(pretrained = True)
print(model.fc)
model.fc = nn.Linear(model.fc.in_features, 2)
print(model.fc)

6、定义超参数

model = model.to("cuda")

Loss = nn.CrossEntropyLoss()

optim = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)

exp_lr_scheduler = StepLR(optim, step_size=7, gamma=0.1)

7、微调

#训练
num_epochs = 25
for epoch in range(num_epochs):
    #训练模型
    model.train()
    running_loss = 0.0
    running_corrects = 0
    for inputs, labels in train_loader:
        inputs = inputs.to("cuda")
        labels = labels.to("cuda")
        outputs = model(inputs)
        _, preds = torch.max(outputs, 1)
        loss = Loss(outputs, labels)
        loss.backward()
        optim.step()
        optim.zero_grad()
        
        running_loss += loss.item()/inputs.size(0)
        running_corrects += torch.sum(preds == labels.data)/inputs.size(0)
    
    exp_lr_scheduler.step()
    train_epoch_loss = running_loss/len(train_loader)
    train_epoch_acc = running_corrects/len(train_loader)
    
    #测试模型
    model.eval()
    running_loss = 0.0
    running_corrects = 0
    for inputs, labels in val_loader:
        inputs = inputs.to("cuda")
        labels = labels.to("cuda")
        
        outputs = model(inputs)
        _, preds = torch.max(outputs, 1)
        loss = Loss(outputs, labels)
       
        running_loss += loss.item()/inputs.size(0)
        running_corrects += torch.sum(preds == labels.data)/inputs.size(0)
    
    epoch_loss = running_loss/len(val_loader)
    epoch_acc = running_corrects/len(val_loader)
    
    if((epoch+1)%5==0):
        print("epoch:{},  "
            "Train_loss:{:.4f} Train_acc:{:.4f},  "
            "Loss:{:.4f}, Acc:{:.4f}".format(epoch+1, train_epoch_loss, train_epoch_acc, epoch_loss, epoch_acc))

8、测试可视化

#测试可视化
def imshow(inp, title=None):
    #从 C-H-W 切换回 H-W-C 图像格式
    inp = inp.numpy().transpose((1, 2, 0))
    #撤销归一化
    mean = np.array([0.485, 0.456, 0.406])
    std = np.array([0.229, 0.224, 0.225])
    inp = std * inp + mean
    inp = np.clip(inp, 0, 1)
    plt.imshow(inp)
    
    if title is not None:
        plt.title(title)

inputs , classes = next(iter(val_loader))
out = torchvision.utils.make_grid(inputs)
class_names = val_dataset.classes
outputs = model(inputs.to("cuda"))

_, preds = torch.max(outputs, 1)

imshow(out, title=[class_names[x] for x in preds])

基于Tensorflow框架的人脸活体检测、人脸属性总结附代码(持续更新) 基于Tensorflow框架的人脸活体检测、人脸属性总结附代码(持续更新)    基于Tensorflow框架的人脸检测总结附代码(持续更新)    基于Tensorflow框架的人脸匹配总结附代码(持续更新)   最近利用人脸开源数据库WIDER FACE、64_CASIA-FaceV5、CelebA、300W_LP以及自己做的一个近200张照片的私人数据集复现了人脸检测、人脸匹配、人脸对齐、人脸关键点检测、活体检测、人脸属性等功能,并且将其集成在微信小程序中,以上所有内容将用大概5篇博客来总结。所有数据 阅读详情

相关推荐

深度学习(Deep Learning, DL)简介

深度学习(Deep Learning, DL)是机器学习的一个子领域,主要使用多层神经网络来处理复杂的数据和任务。深度学习通过模拟人脑的神经网络结构,能够自动提取特征并进行高效的模式识别和预测。

qq_28791753的博客 1万+

Python深度学习实用代码合集

背景:这篇文章的背景是在日常的学习和项目中,经常会遇到一些基础功能的组合复用,每次去查函数的用法和pipeline都是比较耗时耗力需要重新调试,所以想着把一些经常用到的代码段固化成函数,方便未来的调用,快速迭代和验证。另外,发现谷歌的colab比较好使,对于算法的快速验证迭代还是很有帮助的(尤其对于我这个垃圾笔记本),在环境的配置,算力的提供上都有无与伦比的优势,本地的部署除了在必须的情况下使用,尽量还是可以通过colab的形式迭代算法。

KingsMan666的博客 1618

最适合入门的100个深度学习项目

本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 12万+

ATUO DL实现[深度学习]入门级项目实战——MNIST手写数字识别

本文主要实现MNIST手写数字识别项目在本地/服务器运行。

macha_0522的博客 2109

深度学习入门代码详解(附代码)

目录 一、数据处理 1.1 读入数据 1.2 数据形状变换 1.3 数据集划分 1.4 数据归一化处理 1.5 封装成load data函数 二、模型设计 2.1 训练配置 2.2 训练过程 2.3 梯度下降法 2.4 计算梯度 2.5 使用Numpy进行梯度计算 2.6 确定损失函数更小的点 2.7 代码封装Train函数 2.8 训练扩展到全部参数 三、随机梯度下降法( Stochastic Gradient Descent) 3.1 数据处理代码修改 3.2 ...

Python,数据分析,机器学习,深度学习 3万+

深度学习快速入门--7天做项目

近段时间,之前的老板让我带下小师弟。然后按照给照小师弟的项目指导,正好出这篇文章来帮助那些想要深度学习入门或者刚接触深度学习的人。感谢!!!

走在深度学习前沿的小宋 3629

探索深度学习的魅力:DL-AndrewNg 项目详解

探索深度学习的魅力:DL-AndrewNg 项目详解 去发现同类优质开源项目:https://gitcode.com/ 该项目,,是一个基于 Andrew Ng 的《斯坦福大学深度学习专项课程》(deeplearning.ai)的学习资源库。它旨在为开发者和学生提供一个易用且互动性强的平台,以实践和理解深度学习的基本原理和技术。 技术分析 1. Jupyter Notebook 整个项目基于 Ju...

gitblog_00060的博客 3517

从零入门AI持续学习:PyTorch实战教程(附完整代码)

本文旨在为初学者提供一个全面的PyTorch入门指南,涵盖从基础概念到实际应用的完整学习路径。我们将重点介绍PyTorch的核心功能、持续学习的概念以及如何将这些知识应用到实际项目中。核心概念与联系:介绍PyTorch和持续学习的基本概念核心算法原理:讲解神经网络和深度学习的基本原理项目实战:提供一个完整的图像分类项目实际应用场景:探讨持续学习的应用领域工具和资源推荐:分享学习资源和实用工具PyTorch。

AI算力网络与通信的博客 871

探索深度学习的奇妙之旅 —— DL-Demos项目推荐

探索深度学习的奇妙之旅 —— DL-Demos项目推荐 去发现同类优质开源项目:https://gitcode.com/ 在当今这个数据驱动的时代,深度学习已成为推动人工智能前行的重要引擎。对于研究者和开发者而言,一个全面而实用的示例集合无疑是探索这一领域的宝贵资源。今天,我们要向您隆重介绍【DL-Demos】——一个由SingleZombie精心打造的深度学习示范项目,它不仅覆盖了基础理论,还深...

gitblog_00085的博客 1085

如何用Timer模型处理多变量时间序列?附完整代码示例

本文深入解析了如何运用清华大学的Timer模型处理多变量时间序列预测任务。通过一个完整的智能工厂设备监控实战案例,详细介绍了从数据预处理、模型构建、训练调优到预测可视化的全流程,并提供了可运行的完整代码示例,帮助开发者掌握这一强大的时序分析工具。

weixin_29243063的博客 250

【ESP32】1.编译、烧录、创建工程

本文介绍了在VSCode中搭建ESP32开发环境并烧录"Hello World"工程的过程。首先通过串口工具成功下载固件后,解决了OpenOCD报错问题。针对头文件无法识别的问题,修改了c_cpp_properties.json配置文件,调整了编译器路径和IntelliSense模式。文章还详细说明了创建新工程的步骤,包括选择芯片型号和项目模板,并验证了串口打印功能。最后提醒在项目构建时要等待完成,避免文件缺失。整个流程涵盖了环境搭建、代码烧录、调试及新项目创建等关键环节。

梁山1号 1485

【持续更新】Python 精品实战项目——深度学习篇

Python 毕设精品实战项目目录——计算机视觉CV篇,Pytorch、TensorFlow等深度学习框架爱,涵盖卷积神经网络、残差网络、Transformers等关键技术,实现图像分类、目标检测识别、语义分割、风格转换等领域,帮助初学者快速掌握计算机视觉处理技术。

Python极客之家 1万+

1.毫米波雷达心率、呼吸原理实现(一)实例

毫米波雷达心率、呼吸检测原理本项目分两到三篇文章写完,第一阶段借鉴TI开源项目以及根据自己的见解适当更改信号处理链通过AWR1843汽车雷达传感器和DCA1000采集卡采集数据完成人体呼吸和心跳检测算法的实现。第二阶段将仿真成功的代码搬移TIAWR1843传感器并通过串口数据实现生命体征的实时处理。本文即为第一阶段实现过程。本文首先概述毫米波雷达呼吸心跳检测的原理,紧接着概述本项目信号处理流程,另外本项目第一阶段通过matlab仿真验证算法的有效性,仿真源码可关注小编并私信可取。1.概述。

Poulen的博客 2万+

500+实战项目:完整AI项目合集,ML/DL开发者一站取代码

这个仓库整理了500+个AI项目、机器学习代码与深度学习资源,覆盖计算机视觉到NLP的实战素材,全部附可运行代码。适合自学党、在校生和在职工程师快速找到项目练手。 ## 📦 项目全景速览 - 500+ 项目清单,ML / DL / CV / NLP 四大方向全覆盖 - 代码库、数据集、论文实现、行业案例混编,取材面广 - 清单持续更新,链接均经测试可访问 - 单文件 [README.md](

gitblog_00355的博客 854

从2804云台电机到桌面机械臂:一个STM32/GD32玩家的FOC驱动踩坑全记录

本文详细记录了从2804云台电机到桌面机械臂的FOC驱动开发历程,涵盖了硬件选型、驱动方案优化、软件调试等关键环节。特别分享了L6234P驱动芯片的发热问题、AS5600编码器的I2C通信陷阱以及PID调参的实战经验,为DIY爱好者提供了宝贵的参考。

weixin_26897585的博客 482

【微服务】SpringBoot 4.0 新特性整合项目实战应用详解

SpringBoot 4.0 新特性整合项目实战应用详解

congge 4589

探索深度学习:Learn Dive-into-DL-PyTorch 项目详解

探索深度学习:Learn Dive-into-DL-PyTorch 项目详解 去发现同类优质开源项目:https://gitcode.com/ 在这个数字时代,深度学习已经成为人工智能领域的基石,而PyTorch作为Python库的一员,以其灵活性和易用性受到了广大开发者的喜爱。今天,我们将深入介绍一个优秀的开源项目——,这是一个为深度学习初学者和进阶者设计的PyTorch教程。 项目简介 Lea...

gitblog_00045的博客 839

audio语音相关的基础知识-VAD,ASR,AEC,AGC,BF等

有音素之间的间隙,也有静音和语音本身的间隙,为了对数据从时间上进行相对的校准,语音端点检测技术就应运而生了,因此端点检测技术可以决定这种校准的相对精度,使得同一内容的特征更趋于相同,当然,一般情况下是不可能完全相同的。盲源分离的目的是求得源信号的最佳估计,盲辨识的目的是求得传输通道的。这个技术的主要任务是从带有噪声的语音中准确的定位出语音的开始和结束点,因为语音中含有很长的静音,也就是把静音和实际语音分离开来,因为是语音数据的原始处理,所以VAD是语音信号处理过程的关键技术之一。呈现出与会者清晰的声音。

u013250861的博客 1035

吐血整理深度学习入门路线及导航【教学视频+大神博客+书籍整理】+【资源页】(2019年已经最后一个月了,你还不学深度学习吗???)

声明: 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进...

种树最好的时间是10年前,其次是现在!!! 5万+

5、Raspberry Pi CPU架构与多线程编程详解

本文详细介绍了Raspberry Pi的CPU架构(包括ARMv6Z、ARMv7-A和ARMv8-A),通过/proc/cpuinfo解析硬件信息,并深入探讨了多线程编程的核心技术。内容涵盖pthread库的使用,如线程创建、属性设置、等待与分离、线程同步机制(互斥锁),以及实际应用场景如多媒体处理和网络服务。同时强调了线程安全、死锁预防和资源管理等关键注意事项,帮助开发者在Raspberry Pi上构建高效稳定的多线程应用。

sre5engineer的博客 95

【异常】Cursor编辑器 “Taking longer than expected...“ 报错全链路排查与解决方案

该提示并非传统的程序崩溃或语法报错,本质是Cursor编辑器的超时预警机制——当核心任务(云端AI推理请求、本地项目索引等)的执行耗时超出系统预设阈值时,触发的用户告知类提示,核心诱因是任务执行全链路出现阻塞或性能瓶颈。以下方案按排查优先级从高到低排序,覆盖从快速急救到根因根治的全流程,可按步骤逐步验证解决。针对大仓库、多依赖项目的索引超时问题,核心是通过规则过滤无效文件,从根源降低索引负载。

奶爸的编程之路,也就一周冷个三天 3106

halcon深度学习算子,持续更新

目录Deep Learning 深度学习Classification:分类apply_dl_classifierclear_dl_classifierclear_dl_classifier_resultclear_dl_classifier_train_resultdeserialize_dl_classifierget_dl_classifier_paramget_dl_classifier_r...

优快云博客 4080

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

李宏毅 深度学习【持续更新】

李宏毅深度学习笔记

weixin_45837404的博客 2868

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

深度学习入门之一阶段小demo练习(持续更新系列)

根据个人经验总结的深度学习入门路线(简单快速) https://blog.youkuaiyun.com/weixin_44414948/article/details/109704871 最近一段时间在指导师弟师妹深度学习的入门,在他们学习了一段时间后,布置了以下demo练习。 1:通用调用sklearn的机器学习算法库,在fanwei数据集上实现分类任务,要求使用支持向量机(SVM)分类算法,准确率达到85%以上。 fanwei数据集简介:此数据集为课题组人体骨架节点txt文件,共有0、1两种行为标签。 较好的实现代

weixin_44414948的博客 3027

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 机器学习如何入门学习
下一篇: 硬核知识 | 一文搞懂人工智能、机器学习、深度学习的关系
深度学习机器学习
博客等级 码龄2年 495粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值