自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 【python基础 - 07】multiprocessing quick start

multiprocessing 是 python 中常用的多进程库,话不多说来看示例。# -*- coding: utf-8 -*-'''@Time : 2021/8/26@Author : Yanyuxiang@Email : yanyuxiangtoday@163.com@FileName: quick_start.py@Software: PyCharm'''from multiprocessing import Processimport osdef info

2021-12-23 21:37:02 1114

原创 【python基础 - 06】timeit quick start

timeit 是一个常见的用于评测代码执行时间的库,有助于用其评测代码的性能。话不多说,直接来看示例。这个示例是判断有序数组中用循环的方法查找一个目标数字和用二分查找目标数字的耗时对比。下面示例中的 bisect 使用方法可以参照这个链接。# -*- coding: utf-8 -*-'''@Time : 2021/12/20@Author : Yanyuxiang@Email : yanyuxiangtoday@163.com@FileName: quick_start_time

2021-12-20 23:09:30 1228

原创 【通过算法题学习python技巧 - 12】leetcode 35. 搜索插入位置

本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。leetcode 35. 搜索插入位置题目链接给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入

2021-12-19 10:08:16 1391

原创 【python基础 - 05】__all__

__all__通常用于项目中的引用保护。定义aa.py文件如下:def a1(): print('a1 from aa.py')def a2(): print('a2 from aa.py')定义bb.py文件如下:from aa import *a1()a2()执行bb.py,得到输出:a1 from aa.pya2 from aa.py将aa.py修改为__all__ = ['a1']def a1(): print('a1 from a

2021-10-25 11:49:10 1121

原创 【python基础 - 04】__getattr__

__getattr__方法常用于以属性的方式调用类中的属性或方法,如MyClass.my_func().定义Test类如下:class Test(object): def _my_default(self, *args): print(f'func input {args}') def __getattr__(self, key): print(f'{key} not defined in Test') return self._my_d

2021-10-25 11:34:55 1455

原创 【python基础 - 03】__getitem__

__getitem__方法是一种常见的方法,常用于获取类中的某些信息。以dict的情况举例,定义Test类如下:class Test(object): def __init__(self): self.dict = dict( m_key='m_value' ) def __getitem__(self, key): return self.dict[key]执行x = Test()print(x['m_k

2021-10-25 11:25:05 492

原创 【python基础 - 02】__len__

__len__方法是一种常见的方法,顾名思义,主要用于判断某个类的长度。定义Test类如下:class Test(object): def __init__(self): self.num_list = [1, 2, 3] def __len__(self): return len(self.num_list)执行x = Test()# 下面两行等价print(len(x.num_list))print(x.__len__())输出

2021-10-25 11:20:30 463

原创 【python基础 - 01】__call__

__call__方法是一种常见的方法,顾名思义,主要用于调用某个类。定义Test类如下:class Test(object): def __call__(self, any=None): print(any)执行x = Test()# 下面三行等价Test()()x.__call__()x()print()# 下面三行等价Test()('hello')x.__call__('hello')x('hello')输出NoneNoneNone

2021-10-25 11:13:28 197

原创 【通过算法题学习python技巧 - 11】剑指 Offer 39. 数组中出现次数超过一半的数字

本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 39. 数组中出现次数超过一半的数字题目链接数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2collections 是一个经常能用到的包。class Solution: def majorityElement(self, nums:

2021-10-23 09:54:43 181

原创 【通过算法题学习python技巧 - 10】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 21. 调整数组顺序使奇数位于偶数前面题目链接输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。列表递推表达式一行写完是不是很酷。class Solution: def exchange(self, nu

2021-10-16 14:39:22 251

原创 【通过算法题学习python技巧 - 09】剑指 Offer 20. 表示数值的字符串

本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 20. 表示数值的字符串题目链接请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。数值(按顺序)可以分成以下几个部分:若干空格一个 小数 或者 整数(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数若干空格小数(按顺序)可以分成以下几个部分:(可选)一个符号字符(’+’ 或 ‘-’)下述格式之一:至少一

2021-09-22 20:11:20 213

原创 【通过算法题学习python技巧 - 08】剑指 Offer 19. 正则表达式匹配

本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 19. 正则表达式匹配题目链接请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。示例 1:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配

2021-09-21 08:58:07 209

原创 【通过算法题学习python技巧 - 07】剑指 Offer 17. 打印从1到最大的n位数

本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 17. 打印从1到最大的n位数题目链接输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]善用range。class Solution: def printNumbers(self, n: int) -> List[int]:

2021-09-20 20:12:45 247

原创 【通过算法题学习python技巧 - 06】剑指 Offer 15. 二进制中1的个数

本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 15. 二进制中1的个数题目链接编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用

2021-09-19 11:43:37 234

原创 【通过算法题学习python技巧 - 05】剑指 Offer 10- I. 斐波那契数列

本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 10- I. 斐波那契数列题目链接写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0,   F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(100

2021-09-18 09:28:20 294

原创 【通过算法题学习python技巧 - 04】剑指 Offer 06. 从尾到头打印链表

本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 06. 从尾到头打印链表题目链接输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]reverse可以实现列表反转。class Solution: def reversePrint(self, head: ListNode) -> List[int]: res = [] whi

2021-09-17 08:42:18 284

原创 【通过算法题学习python技巧 - 03】剑指 Offer 05. 替换空格

本专栏的目的是通过算法题学习python技巧,并非实现算法题的最优解。剑指 Offer 05. 替换空格题目链接请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.”输出:“We%20are%20happy.”class Solution: def replaceSpace(self, s: str) -> str: return s.replace(' ', '%20')博主会持续更新一些人

2021-09-16 08:18:02 297

原创 【通过算法题学习python技巧 - 02】剑指 Offer 04. 二维数组中的查找

本专栏的目的是通过算法题学习python库,而非实现算法题的最优解。剑指offer 03. 数组中重复的数字题目链接在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14,

2021-09-15 08:25:01 365

原创 【深度学习目标检测系列 - 02】目标检测的常见算法

目标检测(Object Detection)一直以来都是深度学习领域的热门话题,这个系列的文章会对其进行详细的梳理。1. 传统的检测算法Cascade + HOG/DPM + Haar/SVM以及上述方法的诸多改进、优化2. 候选区域+深度学习分类:提取候选区域,对相应的区域进行以深度学习方法为主的分类。R-CNNSPP-NETFast R-CNNFaster R-CNN3. 基于深度学习的回归方法,YOLO/SSD/DenseBox看下图博主会持续更新一些人工智能领域的知

2021-09-14 09:00:12 577

原创 【通过算法题学习python技巧 - 01】剑指offer 03. 数组中重复的数字

在日常工作中,经常会遇到算法问题,与为了找工作而刷算法不同,一个高效的开发者会让自己少写代码。本专栏就是用python库去解决日常遇到的算法问题。剑指offer 03. 数组中重复的数字题目链接找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3class S

2021-09-12 12:31:48 413

原创 【深度学习目标检测系列 - 01】目标检测是什么

目标检测(Object Detection)一直以来都是深度学习领域的热门话题,这个系列的文章会对其进行详细的梳理。1. 目标检测是什么图像分类任务回答的是"图像中的物体是什么"。而目标检测任务回答的是"图像中的物体是什么,它处于图像的什么位置"。即,不但要输出目标所属的类别,还要输出物体的位置信息。位置信息通常采用bounding box表示,也就是给定一个矩形框的中心坐标以及宽高信息来定位框在图像中所属的位置。2. 如何进行目标检测从流程上进行分类一般有两种,即two-stage的方法和

2021-09-12 11:26:53 614

原创 【日常积累 - 07】cuda多版本切换

日常开发中经常会需要多个cuda版本共存,本文介绍一下切换cuda版本的方法:# 删除之前的软连接$ rm /usr/local/cuda# 创建新的软连接$ sudo ln -s /usr/local/cuda-11.0 /usr/local/cuda# 查看当前cuda版本$ nvcc --version博主会持续更新一些深度学习相关的基础知识以及工作中遇到的问题和感悟,喜欢请关注、点赞、收藏...

2021-09-10 13:20:08 1400

原创 【深度学习基础知识 - 51】推荐算法概述

以前在网上查找资料需要进入网站之后分门别类的点进去,在一个个子类别下找到自己想要的东西,这是用户人工查找的过程。到后来的谷歌百度,可以直接搜索自己想要的内容,搜索网站就会把和你搜索目标相匹配的内容展示出来。但是在某些情况下,如在找想看的电影时,用户并不知道自己想要看的电影具体是什么,这个时候推荐算法就派上用场了。在任何情况下都不能无中生有给用户推荐内容,常见的参照为:根据和该用户有共同喜好的人来推荐。根据你喜欢的物品找出相似的来推荐根据你给出的关键字来推荐,不过这类似于搜索算法。根据上面几种

2021-09-09 09:01:06 1478

原创 【日常积累 - 06】查看cuda和cudnn版本

cuda版本cat /usr/local/cuda/version.txtcudnn版本cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

2021-09-08 12:41:22 521

原创 【深度学习基础知识 - 50】PCA降维 主成成分分析

PCA降维的原理PCA可以把可能具有相关性的高维变量合成线性无关的低维变量,称为主成分( principal components)。新的低维数据集会尽可能的保留原始数据的变量。降维方式就是通过分析数据的主成分,在不丢失过多信息的情况下,通过映射将高维数据投影到较低纬度的数据中去。主成分的计算矩阵的主成分是由其协方差矩阵的特征向量,按照对应的特征值大小排序得到的。最大的特征值就是第一主成分,第二大的特征值就是第二主成分,以此类推。方差与协方差方差:用于度量一组数据的离散程度,是各个样本

2021-09-07 09:24:57 1016

原创 【深度学习基础知识 - 49】Kmeans

Kmeans是一个原理较为简单的聚类模型,它的操作步骤是随机选择k个点作为初始类心。计算每个元素和k个类心之间的距离并归类到最近的类里面。以每个类的均值作为新的类心。重复2和3知道所有的类心不再变化。博主会持续更新一些深度学习相关的基础知识以及工作中遇到的问题和感悟,喜欢请关注、点赞、收藏。...

2021-09-06 08:52:34 718

原创 【深度学习基础知识 - 48】贝叶斯网络的特点

贝叶斯网络的特点贝叶斯网络主要引入了两个基本概念:有向无环图和条件概率集合。有向无环图的节点是特征和类别,边是两个特征或者特征和类别之间的关系,并不是彼此独立的。条件概率集合主要的概念是条件独立性,也就是某个节点在给定其父节点的条件下,与其他节点是相互独立的。贝叶斯网络关注的不是因果关系,而是变量间的依赖关系。博主会持续更新一些深度学习相关的基础知识以及工作中遇到的问题和感悟,喜欢请关注、点赞、收藏。...

2021-09-05 14:44:31 1823

原创 【深度学习基础知识 - 47】贝叶斯网络与朴素贝叶斯

朴素贝叶斯要求特征彼此独立,且对被解释的变量影响一致、不能进行变量筛选,即特征之间不能存在依赖关系,且不能给每个特征加权重,通常这种条件是难以满足的。为了解决这个问题,就出现了贝叶斯网络。下表展示了两者之间的对比。对比维度贝叶斯网络朴素贝叶斯假设前提1.各变量都是离散型的2.各特征间有依赖关系3.没一个节点在其前驱节点的值制定后,这个节点条件独立于其所有非直接前驱结点4.贝叶斯网络放宽了每个独立变量的假设1.各特征之间彼此独立2.对于若干条件概率值不存在的问题,一般通过将所有的概

2021-09-04 17:11:03 1214

原创 【深度学习基础知识 - 46】贝叶斯定理与条件概率公式

基本定理贝叶斯基于概率论中的贝叶斯定理,贝叶斯定理就是用先验概率和条件概率求出最终的事件概率。贝叶斯网络可以理解为将模型看作是一个概率密度函数,它可以表示数据的分布,训练过程就是概率分布的参数估计过程,预测过程就是求解条件概率的过程。通过条件概率求得后验概率后验概率可以用条件概率表示,公式为:由此可推导:从条件概率推导贝叶斯定理见公式博主会持续更新一些深度学习相关的基础知识以及工作中遇到的问题和感悟,喜欢请关注、点赞、收藏。...

2021-09-03 08:21:24 1715

原创 【深度学习基础知识 - 45】机器学习中常用的距离计算方法

假设有两个点(x1, y1) (x2, y2)欧氏距离曼哈顿距离余弦距离博主会持续更新一些深度学习相关的基础知识以及工作中遇到的问题和感悟,喜欢请关注、点赞、收藏。

2021-09-02 08:13:20 917

原创 【深度学习基础知识 - 44】逻辑回归实现多分类的方法

方式1在二分类问题上逻辑回归用的激活函数是sigmoid,在多分类的时候可以改为softmax函数。方式2根据每一类别都建立一个二分类器,有多少类别就有多少个逻辑回归分类器。博主会持续更新一些深度学习相关的基础知识以及工作中遇到的问题和感悟,喜欢请关注、点赞、收藏。...

2021-09-02 08:11:22 1013

原创 【深度学习基础知识 - 43】优势比的概念

优势比假设在m个独立自变量,x1、x2…xm的作用下,记事件y取1的概率为:则事件y取0的概率为p = 1 - p,则取1和取0的概率之比为:上式就称为事件的优势比。博主会持续更新一些深度学习相关的基础知识以及工作中遇到的问题和感悟,喜欢请关注、点赞、收藏。...

2021-08-31 08:50:32 2537

原创 【深度学习基础知识 - 42】逻辑回归详解

概念逻辑回归是一个二分类器,函数是sigmoid形式,输出落在0~1之间,输出有概率意义。优点输出值自然落在0~1之间,有概率意义。(不能直接当做概率使用,只是一个置信度)参数代表每个特征对输出的影响,可解释强。缺点逻辑回归本质上还是线性回归,只是特征到结果的映射过程中增加了一层函数映射,即先把特征线性求和,然后使用sigmoid约束至0~1,结果值可以用于二分类或者回国预测,不可用于多分类问题。特征空间大时效果不好。博主会持续更新一些深度学习相关的基础知识以及工作中遇到的问题

2021-08-31 08:49:51 1253

原创 【日常积累 - 05】python pep8 代码规范

目录1. 代码编排2. import3. 空格4. 注释5. 命名规范6. 编码建议1. 代码编排缩进。四个空格,不要使用tab。每行最大长度79,换行使用圆括号。空行。类和函数定义之间空两行;类中的方法定义之间空一行;逻辑无关的段落空一行;其他地方尽量不要再空行。2. importimport按标准、三方和自己编写顺序依次排放,之间空一行。不要一句import多个库。3. 空格尽量避免不必要的空格各种右括号前不加空格。各种左括号后不加空格。逗号、冒号、分号前不加空格。操

2021-08-30 08:47:10 825

原创 【深度学习基础知识 - 41】深度学习快速入门学习资料

给师弟师妹们推荐一些帮助入门的深度学习学习资料:书籍《统计学习方法》- 李航。入门首选书籍,深入浅出,易于理解。《机器学习实战》,又称蜥蜴书,地位等同于《C++ primer》。可以当字典看。《机器学习》- 周志华。又称西瓜书,学有余力可以看。《深度学习》- MIT。又称花书,讲的比较深入,如果想钻研推荐看,也可以当资料查阅。视频资料吴恩达深度学习工程师课程,讲的很容易理解。Hinton机器学习与神经网络中文课,神经网络之父的课程。李飞飞计算机视觉课程,ImageNet发起人。CS

2021-08-29 19:16:22 1244

原创 【深度学习基础知识 - 40】CNN为什么比DNN在图像领域更具优势

原因CNN模型输入的一般都是图像矩阵,然后通过卷积操作进行特征提取,每次卷积都会考虑特征的上下文信息,并且随着模型的加深,从浅层提取的局部特征不断地处理、整合得到深层的高维特征。在这个过程中,特征的整合是缓慢有序发生的。同时,卷及操作还具有平移不变形特性,只管来解释就是:一个物体在图像中的任何区域都能被正确识别。因此,CNN在处理图像特征时候更具优势。DNN的输入时向量形式,并未考虑到图像的结构信息,每一层都会做一个全局的特征提取,但是由于这个过程并非递进的,因此最终的特征质量并不好,因此难以在图像领

2021-08-29 08:44:03 3361

原创 【深度学习基础知识 - 39】BN、LN、WN的比较

BNbatch normalization,使之在激活函数接收输入之前将数据的分布规范到标准正态分布中,使得激活函数的输入值落在对输入比较敏感的区域,也就是梯度较大的区域。从而避免梯度消失、减少训练时间。BN比较适合batch较大的场景,并且数据分布要相对比较接近。WNweigit normalization,主要就是对网络的权重进行正则化,使得网络不要过于复杂,权重不要过大,可以防止过拟合。LNlayer normalization,它相对于BN,不依赖于整个batch,而是针对某一

2021-08-28 10:37:34 1628

原创 【深度学习基础知识 - 38】L1正则化和L2正则化的区别

概念L1正则化就是在损失函数中加的正则化项为模型参数的L1范数。L2正则化就是在损失函数中加的正则化项为模型参数的L2范数。目的通过在损失函数中增加权重正则化项,可以避免模型变得过于复杂或者说防止模型的参数过大,从而提升模型的泛化性能。L1正则化和L2正则化的差异加上L1范数容易得到特征的系数解,也就是很多参数为0,加上L2范数得到的特征解比较平滑,但是同样能保证解中接近于0的比较多。从倒数的角度来看,L1范数在零点处有个突变,也就是极小值点,因此很容易优化到这个极值点上。博主会

2021-08-27 08:48:23 1829

原创 【深度学习基础知识 - 37】解决正负样本不均衡 Focal Loss

正负样本不均衡是检测任务中常见的问题,在目标检测中,大量样本都是不包含目标的负样本,只有少量是包含目标的正样本,而Focal Loss就是为了解决这个问题而提出的。Focal Loss的目的focal loss的主要目的是降低易分类样本的权重,使得模型更加关注困难样本,防止大量的简单样本主导模型的优化方向。Focal Loss的计算方式解决样本数量不均衡,在交叉熵中给交叉熵一个权重,也就是相反类的比重。这样一来,对于少量的样本,权重就比较大,对于大量的样本,权重就比较小。解决难易样本不均衡,

2021-08-26 21:41:18 2446

原创 【深度学习基础知识 - 36】python生成器、迭代器、修饰器

python中的生成器、迭代器和修饰器是深度学习框架源码中常用的语法,本文简单介绍一下它们的概念。生成器生成器就是定义一个算法或者函数,只不过它的返回值是yield,每次调用next()函数都能计算它下一个元素的值,直到抛出异常。可以理解为程序每次执行到yield的时候都会返回结果并且暂停,再次调用next()函数时就会从上次暂停的地方继续执行。迭代器生成器就是迭代器的一种,迭代器首先是可以迭代的,也就是实现了iter方法的对象,而迭代器就是既实现了iter方法又实现了next方法。如列表就是

2021-08-26 08:54:48 1245

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除