深度学习基础
文章平均质量分 78
AI浩
2022年博客之星Top8,2021年博客之星Top6,博客专家,华为云云享专家,十佳博主,阿里云专家博主,拥有多项发明专利并参与过国家重大专项,拥有丰富的开发经验。注重理论与实践的结合,让AI学起来不再枯燥。如果大家在看文章的时候,发现了文章的错误,烦请指出,我会及时纠正。
展开
-
python 使用正则表达式判断图片路径是否是超链接
在Python中,判断一个给定的字符串(假设为图片路径)是否是网页链接(URL),你可以通过检查该字符串是否符合URL的基本格式来实现。虽然这个方法不能保证链接一定指向图片,但它能判断该字符串是否是一个有效的网页链接。然而,它不能确保该URL是有效的(例如,域名可能不存在,或者IP地址可能无法访问)。如果你的目的是确保URL不仅格式正确,而且指向一个图片,那么你需要进行额外的HTTP请求来检查响应的内容类型(例如,通过。函数,它可以用来解析URL,但直接用来判断一个字符串是否为URL可能不够直观。原创 2024-08-14 20:15:00 · 425 阅读 · 0 评论 -
权重共享的理解
在PyTorch中,权重共享是通过将多个层或模块的参数设置为同一个变量来实现的。这意味着这些层或模块在训练过程中会更新相同的权重,从而共享相同的特征表示。假设我们想要构建一个简单的网络,其中两个全连接层共享相同的权重和偏置。# 如果提供了权重和偏置,则直接使用else:else:创建一个共享权重的网络# 初始化权重和偏置# 创建两个共享权重的全连接层。原创 2024-07-30 18:12:52 · 1336 阅读 · 0 评论 -
python中raise_for_status方法的作用
如果响应的状态码表示请求未成功(即状态码不是 2xx),则该方法会抛出一个。通过这种方式,你可以确保在继续处理响应数据之前,请求已经成功完成。如果请求失败,你可以根据异常类型执行适当的错误处理逻辑。在上面的代码中,我们首先发送一个 POST 请求到指定的 URL,并带上 JSON 格式的数据和请求头。这允许你以一种更结构化的方式来处理请求失败的情况,而不是手动检查状态码。这样,你就可以根据异常类型来执行不同的错误处理逻辑。发送请求时,即使请求失败(例如,服务器返回了。会抛出一个异常,该异常随后被。原创 2024-03-29 21:45:00 · 1460 阅读 · 0 评论 -
python中的deque详解
deque(双端队列)是Python标准库模块中的一个类,它支持从两端快速添加和删除元素。deque为固定大小或者可变大小的队列提供了线程安全的实现,并且它比使用列表(list)来实现相同的功能更为高效。dequedequedequemaxlendequedeque下面是deque。原创 2024-03-29 13:08:21 · 4890 阅读 · 1 评论 -
pytorch常用的几个函数详解
view()是 PyTorch 中的一个常用函数,用于改变张量(tensor)的形状。在深度学习中,我们经常需要调整数据的形状以适应不同的网络结构或计算需求,view()函数就是用来完成这个任务的。原创 2023-12-23 08:18:15 · 1570 阅读 · 0 评论 -
python random详解
首先生成一个空的winning_numbers列表,然后在一个循环中使用randint()函数生成1到33之间的随机整数,检查它是否已经存在于winning_numbers列表中,如果不存在则将其添加到列表中。循环直到生成的随机数个数达到6个为止。Python的random模块是用于生成随机数的。它可以生成各种类型的随机数,包括随机浮点数、随机整数、随机选择序列等。函数生成一个1到10之间的随机整数。由于我们使用了相同的随机种子,因此每次运行程序时生成的随机数序列将是相同的。在这个例子中,我们首先使用。原创 2023-12-08 20:00:00 · 1428 阅读 · 0 评论 -
python的extend函数详解
Python 的extend()方法是一个非常有用的工具,它允许你将一个可迭代对象的所有元素添加到列表的末尾。通过上面的示例,你可以看到extend()是如何工作的,以及在使用它时需要注意的一些事项。记住,extend()是直接修改原始列表的,而不是创建一个新的列表。如果你想要将一个可迭代对象的所有元素添加到列表末尾,并且不介意直接修改原始列表,那么extend()或+=是很好的选择。其中,extend()更明确地表明你正在添加多个元素。原创 2023-12-08 06:58:17 · 4605 阅读 · 0 评论 -
python opencv 实现对二值化后的某一像素值做修改和mask叠加
本专栏是讲解如何改进Yolov8的专栏。改进方法采用了最新的论文提到的方法。改进的方法包括:增加注意力机制、更换卷积、更换block、更换backbone、更换head、更换优化器等;每篇文章提供了一种到N种改进方法。评测用的数据集是我自己标注的数据集,里面包含32种飞机。每种改进方法我都做了测评,并与官方的模型做对比。代码和PDF版本的文章,我在验证无误后会上传到百度网盘中,方便大家下载使用。这个专栏,求质不求量,争取尽心尽力打造精品专栏!!!!!原创 2023-11-06 21:27:41 · 2018 阅读 · 6 评论 -
定时任务库的详解与魅力应用:探索schedule的无尽可能性
schedule是一个 Python 库,用于在 Python 程序中方便地安排定时任务。它提供了一种简单的方式来安排周期性任务,例如定期执行函数或方法。以下是schedule安装schedule库:导入schedule库:定义要定期执行的任务。可以是任何可调用的对象,例如函数或方法。def job():使用方法创建定时任务,并指定任务执行的时间间隔。例如,以下代码将创建一个每隔 5 秒执行一次的任务:你也可以使用其他时间单位,例如minuteshours和days。原创 2023-08-28 19:33:05 · 623 阅读 · 0 评论 -
Base64与cv2读取的图片,格式互转
本专栏是讲解如何改进Yolov8的专栏。改进方法采用了最新的论文提到的方法。改进的方法包括:增加注意力机制、更换卷积、更换block、更换backbone、更换head、更换优化器等;每篇文章提供了一种到N种改进方法。评测用的数据集是我自己标注的数据集,里面包含32种飞机。每种改进方法我都做了测评,并与官方的模型做对比。代码和PDF版本的文章,我在验证无误后会上传到百度网盘中,方便大家下载使用。这个专栏,求质不求量,争取尽心尽力打造精品专栏!!!!!原创 2023-08-24 09:31:52 · 904 阅读 · 0 评论 -
python特殊函数之__call__函数的作用
将一个类实例也可以变成一个可调用对象。原创 2023-08-23 22:00:00 · 2803 阅读 · 1 评论 -
网络摄像头拉流方法总结(附python代码)
网络摄像头拉流是获取图片数据常用的方法,本文总结了几种从网络摄像头拉流的方法。原创 2023-01-28 12:47:37 · 4395 阅读 · 8 评论 -
关于神经网络中Backbone,Neck,Bottleneck,Head的理解
骨干网络或者说是主干网络,指的是提取特征的网络,其作用就是提取图片中的信息,共后面的网络使用。这些网络经常使用的是resnet VGG等,而不是我们自己设计的网络,因为这些网络已经证明了在分类等问题上的特征提取能力是很强的。在用这些网络作为backbone的时候,都是直接加载官方已经训练好的模型参数,后面接着我们自己的网络。让网络的这两个部分同时进行训练,因为加载的backbone模型已经具有提取特征的能力了,在我们的训练过程中,会对他进行微调,使得其更适合于我们自己的任务。原创 2022-12-30 11:05:15 · 839 阅读 · 1 评论 -
nn.AdaptiveAvgPool2d和nn.AvgPool2d的区别
功能:该函数与二维平均池化运算类似,区别主要体现在自适应上,对于任何输入大小,输出大小均为指定的H×W大小。output_size:指定的输出大小,可以是元组(H,W),或者是单个的数,如果是单个的数,则表示输出的高和宽尺寸一样,output_size大小可以大于输入的图片尺寸大小。原创 2022-12-21 17:44:13 · 2753 阅读 · 0 评论 -
第九篇 异常
你可以用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是Error或Exception类的子类class ShortInputException(Exception) : '''自定义的异常类''' def __init__(self , length , atleast) : #super().__init__() self . length = length。原创 2022-10-24 06:00:00 · 209 阅读 · 0 评论 -
第八篇 python 面向对象编程
class 类名 : 方法列表例:定义一个Car类# 定义类 class Car : # 方法 def getCarInfo(self) : print('车轮子个数:%d, 颜色%s' %(self . wheelNum , self . color)) def move(self) : print("车正在移动...")定义类时有2种:新式类和经典类,上面的Car为经典类,如果是Car(object)则为新式类类名 的命名规则按照"大驼峰"原创 2022-10-23 20:48:55 · 1304 阅读 · 0 评论 -
pandas,如何合并多个相同列的csv文件
【代码】pandas,如何合并多个相同列的csv文件。原创 2022-09-09 11:43:00 · 1242 阅读 · 0 评论 -
python 如何解析含有重复key的json
json里面的key默认是唯一,但是有些情况下json里面的key值并不唯一。比如我在分析WIFI协议的时候,如下图:这时候就需要解决key重复的问题。那么如何解决呢?原创 2022-09-07 15:03:09 · 2499 阅读 · 0 评论 -
鲁棒性的含义以及如何提高模型的鲁棒性
1、含义鲁棒是Robust的音译,也就是健壮和强壮的意思。它也是在异常和危险情况下系统生存的能力。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。所谓“鲁棒性”,也是指控制系统在一定(结构,大小)的参数摄动下,维持其它某些性能的特性。根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器。鲁棒性包括稳定鲁棒性和品质鲁棒性。一个控制系统是否具有鲁棒性,是它能否真正实际应用的关键。因此,现代控原创 2022-06-01 07:00:00 · 42524 阅读 · 1 评论 -
实现混合精度的两种方式
1、使用apexAPEX是英伟达开源的,完美支持PyTorch框架,用于改变数据格式来减小模型显存占用的工具。其中最有价值的是amp(Automatic Mixed Precision),将模型的大部分操作都用Float16数据类型测试,一些特别操作仍然使用Float32。并且用户仅仅通过三行代码即可完美将自己的训练代码迁移到该模型。实验证明,使用Float16作为大部分操作的数据类型,并没有降低参数,在一些实验中,反而由于可以增大Batch size,带来精度上的提升,以及训练速度上的提升。使用方式原创 2022-04-17 17:06:20 · 3862 阅读 · 1 评论 -
numpy,打乱某一维的顺序
import numpy as np# arr = np.zeros((3,256,256))#创建一个三维的数组arr=np.random.random((3,5,5))print(arr)per = np.random.permutation(arr.shape[0]) #打乱后的行号new_train_X = arr[per, :, :] #获取打乱后的训练数据print(new_train_X)...原创 2022-03-24 12:33:33 · 2928 阅读 · 0 评论 -
pytorch 多卡训练,模型保存的一些问题
单显卡先看单显卡如何实现训练:第一步:检查环境内是否有cuda环境,如果有则将device 设置为cuda,如果没有则设置为cpu device = torch.device("cuda" if torch.cuda.is_available() else "cpu")第二步:定义模型,并将模型放入device。model = mobilenet_v3_large(pretrained=True)model.to(DEVICE)第三步:将数据放入device中 for batch_idx原创 2022-03-10 09:29:21 · 2903 阅读 · 0 评论 -
普通卷积、分组卷积和深度分离卷积概念以及参数量计算
Google提出了移动端模型MobileNet,其核心是采用了深度可分离卷积,其不仅可以降低模型计算复杂度,而且可以大大降低模型大小,适合应用在真实的移动端应用场景。这篇文章带你了解一下什么是普通卷积、分组卷积和深度分离卷积,以及如何计算参数量。上面的图片展示了普通卷积和分组卷积的不同,下面我们通过具体的例子来看。普通卷积标准卷积运算量的计算公式:FLOPs=(2×C0×K2−1)×H×W×C1{FLOPs }=\left(2 \times C_{0} \times K^{2}-1\right)原创 2022-01-26 11:30:25 · 8789 阅读 · 3 评论 -
pandas修改列的名字
使用train.rename修改列的名字,例:print(train.columns.values)train.rename(columns={'收率':'y','样本id':"id"},inplace=True)print(train.columns.values)运行结果:#修改前['样本id' 'A1' 'A2' 'A3' 'A4' 'A6' 'A8' 'A10' 'A12' 'A15' 'A17' 'A19' 'A20' 'A21' 'A22' 'A25' 'A27' 'A28' '原创 2021-12-30 10:47:49 · 3684 阅读 · 0 评论 -
一种实用的降学习率公式
一种实用的降学习率公式: # set lr rate current_lr = 0.0002 * (1 / 2) ** (step / 10000) for param_group in optimizer_G.param_groups: param_group["lr"] = current_lr具体使用方法: step = 0 for epoch in range(opt.epoch, opt.n_e原创 2021-12-27 10:27:54 · 642 阅读 · 2 评论 -
Python OpenCV真香——去除照片白色背景
最近帮别人做了个图像分类的项目,他告诉我就是个二分类,区分有没有瑕疵,我想这简单就接了。我理想中的图片是这样的:然而现实中的图片确是这样的:这个不算夸张,还有更夸张的,物体站了很小一部分,大片的白色背景上还有一些污渍。这给分类造成了很大的困扰,所以第一步是要把背景去掉,废话不多说,直接上代码。import cv2import numpy as npimg=cv2.imread('01.jpg')## (1) Convert to gray, and thresh...原创 2020-05-12 12:57:15 · 8356 阅读 · 0 评论 -
深度学习进阶,Keras视频分类
Keras视频分类在此教程中,您将学习如何使用Keras、Python 和深度学习执行视频分类。具体来说,您将学习:视频分类与标准图像分类的区别如何使用 Keras 进行图像分类来训练一个旋转神经网络如何采取CNN,然后使用它的视频分类如何使用滚动预测平均值来减少结果中的"闪烁"本教程将作为对时间性深度学习概念的介绍,为我们讨论长期短期记忆网络(LSTM)并最终获得人类活动识别铺平道路。要学习如何执行视频分类与Keras和深度学习,只是继续阅读!视频可以理解为一系列单独的图像;因此,许原创 2021-10-29 22:38:06 · 2807 阅读 · 3 评论 -
深度学习入门,Keras Conv2D类参数详解
摘要卷积神经网络依赖于称为卷积的计算机视觉/图像处理技术。 CNN 会自动学习在训练过程中应用于输入图像的内核。在今天的教程中,我们将讨论 Keras Conv2D 类,包括训练自己的 卷积 神经网络 (CNN) 时需要调整的最重要参数。我们将使用Keras Conv2D类实现一个简单的CNN。然后,我们将在 CALTECH-101 数据集上培训和评估此 CNN。学完本文您能够:快速确定您是否需要使用Keras Conv2D 类的特定参数决定该特定参数的适当值有效训练自己的卷积神经网络总原创 2021-10-29 21:24:46 · 16014 阅读 · 3 评论 -
深度学习入门篇,简单的实例讲明白图像分类。
深度学习和 Python 开始摘要使用 Keras 训练您的第一个简单神经网络不需要很多代码,但我们将开始缓慢,一步一步地进行,确保您了解如何在自己的自定义数据集中培训网络的过程。我们今天将涵盖的步骤包括:安装 Keras 和其他对系统的依赖从磁盘中加载数据创建您的训练和测试拆分定义您的 Keras 模型架构编译您的 Keras 模型根据培训数据培训模型根据测试数据评估您的模型使用训练有素的 Keras 模型进行预测我还包括一个额外的部分,培训你的第一个凸起神经网络。这似乎是很原创 2021-10-28 19:30:22 · 7594 阅读 · 4 评论 -
什么是稀疏数据
定义稀疏数据是指,数据框中绝大多数数值缺失或者为零的数据。在现代社会中,随着信息的爆炸式增长,数据量也呈现出爆炸式增长,数据形式也越来越多样化。在数据挖掘领域,常常要面对海量的复杂型数据。其中,稀疏数据这一特殊形式的数据正在越来越为人们所注意。稀疏数据绝对不是无用数据,只不过是信息不完全,通过适当的手段是可以挖掘出大量有用信息的。然而在一些情况下,数据的稀疏程度甚至会达到 95%以上,这使得传统的统计方法不适于处理此类数据。 [1]来源稀疏数据的来源与产生原因可以有很多种。大致归结起来,主要可以概原创 2021-10-21 15:26:07 · 5837 阅读 · 0 评论 -
激活函数汇总,包含公式、求导过程以及numpy实现,妥妥的万字干货
文章目录1、激活函数的实现1.1 sigmoid1.1.1 函数1.1.2 导数1.1.3 代码实现1.2 softmax1.2.1 函数1.2.2 导数1.2.3 代码实现1.3 tanh1.3.1 函数1.3.2 导数1.3.3 代码实现1.4 relu1.4.1 函数1.4.2 导数1.4.3 代码实现1.5 leakyrelu1.5.1 函数1.5.2 导数1.5.3 代码实现1.6 ELU1.61 函数1.6.2 导数1.6.3 代码实现1.7 selu1.7.1 函数1.7.2 导数1.7.3原创 2021-09-15 09:45:22 · 4371 阅读 · 8 评论 -
爆肝六万字整理的python基础,快速入门python的首选
Python基础大全1 环境安装学习python开发,首先要学会安装Python环境,我一般使用Anaconda+Pycharm作为开发环境。Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB),如果觉得安装包太大可以使用Miniconda。关于环境的安装我已经写了多篇文章,比如:Ubuntu20.04的开发环境搭建:(4条消息) Ubuntu 20.04安装 A原创 2021-09-01 13:42:10 · 61814 阅读 · 115 评论 -
图像分类,一文入魂(上)
文章目录摘要1 LeNet-51.1 模型介绍1.2 模型结构1.3 各层参数详解1.4 模型特性2 AlexNet2.1 模型介绍2.2 模型结构2.3 模型特性3 VGGNet3.1 模型介绍3.2 模型结构3.3 模型特性4 GoogLeNet4.1 模型介绍4.2 模型结构4.2.1 Inception_v14.2.2 Inception_v24.2.3 Inception_v34.2.4Inception_v44.3 模型特性5 ResNet5.1 模型介绍5.2 模型结构5.3 模型特性摘原创 2021-08-23 13:06:00 · 2947 阅读 · 11 评论 -
深度学习的开胃菜——常用的机器学习知识梳理
文章目录摘要1.1 常见概念1.1.1 机器学习本质1.1.2 什么是神经网络1.1.3 各种常见算法图示1.1.4 计算图的导数计算1.1.5 理解局部最优与全局最优1.1.6 大数据与深度学习之间的关系1.2 机器学习学习方式1.2.1 监督学习1.2.2 非监督式学习1.2.3 半监督式学习1.2.4 弱监督学习1.2.5 监督学习有哪些步骤1.8 分类算法1.8.1 常用分类算法的优缺点?1.8.2 分类算法的评估方法1.8.3 正确率能很好的评估分类算法吗1.8.4 什么样的分类器是最好的1.9原创 2021-08-05 14:51:49 · 38427 阅读 · 53 评论 -
五万字总结,深度学习基础。
文章目录1 基本概念1.1 神经网络组成?1.2 神经网络有哪些常用模型结构?1.3 如何选择深度学习开发平台?1.4 为什么深层神经网络难以训练?1.5 深度学习和机器学习的异同?2 网络操作与计算2.1 前向传播与反向传播?2.2 如何计算神经网络的输出?2.3 如何计算卷积神经网络输出值?2.4 如何计算 Pooling 层输出值输出值?2.5 实例理解反向传播2.6 神经网络更“深”有什么意义?3 超参数3.1 什么是超参数?3.2 如何寻找超参数的最优值?3.3 超参数搜索一般过程?4 激活函数4原创 2021-08-11 13:26:25 · 45874 阅读 · 136 评论 -
深度学习中的数学基础总结
文章目录第一章 数学基础1.1 向量和矩阵1.1.1 标量、向量、矩阵、张量之间的联系1.1.2 张量与矩阵的区别1.1.3 矩阵和向量相乘结果1.1.4 向量和矩阵的范数归纳1.1.5 如何判断一个矩阵为正定1.2 导数和偏导数1.2.1 导数偏导计算1.2.2 导数和偏导数有什么区别?1.3 特征值和特征向量1.3.1 特征值分解与特征向量1.3.2 奇异值与特征值有什么关系1.4 概率分布与随机变量1.4.1 机器学习为什么要使用概率1.4.2 变量与随机变量有什么区别1.4.3 随机变量与概率分布的原创 2021-08-03 09:14:41 · 2535 阅读 · 5 评论