自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

肆拾柒分半

日常整理

  • 博客(71)
  • 收藏
  • 关注

原创 手撸网络结构—ResNet

ResNet 核心就是残差学习单元,相比常规神经网络残差学习单元能够避免出现梯度消失的现象。ResNet使用两种残差单元,左图(BasicBlock)对应的是浅层网络,而右图(Bottleneck)对应的是深层网络。在每组残差单元中,第一个单元需要进行下采样从而与单元输出的结果进行匹配。resnet18采用的都是BasicBlock进行的叠加,前两组残差单元如下图:resnet50采...

2020-02-06 17:31:44 5691

原创 可分离卷积-Separable Convolutions

经典卷积层一般卷积神经网络中,卷积运算的是使用与输入的feature map相同channel大小的kernel,kernel的每个通道与输入的每个通道对应卷积然后相加就得到输出feature的一个通道上的一个数据点。因此有对应关系:输入的通道数=每个kernel的通道数输出的通道数=使用的kernel的数目可以计算出这一层的训练参数:N1=K×K×Cin×CoutN_1=K \ti...

2020-01-07 14:03:00 590

原创 手撸网络结构—UNet

用于分类任务的卷积神经网络输出一般都是一个单一的类标签,但是在很多图像视觉任务中往往要求输出信息包含位置信息,比如给图像的每个像素点赋予类别信息。这样就需要使用到fully convolutional network 相较于FCN,UNet不只是简单的将卷积网络的结果直接进行转置卷积,而是结合了前面卷积层的中间计算结果,这样既利用了卷积部分的位置信息又利用了最后的分类信息。UNet网络结构...

2019-12-25 19:05:20 10827 1

原创 手撸网络结构—FCN

FCN in paperConvolutional networks are powerful visual models that yield hierarchies of features. convolutional networks trained end-to-end, pixelsto-pixels, exceed the state-of-the-art in semantic ...

2019-12-17 16:46:35 1962

原创 双线性插值(python实现)

线性插值线性插值从字面上的意思理解就是,采用线性关系计算新插入的值的大小。更直观的,给定一个一元一次函数f(x)f(x)f(x)以及两个已知的点f(x1),f(x2)f(x_1),f(x_2)f(x1​),f(x2​),计算未知点f(x)f(x)f(x)使用斜率的关系f(x2)−f(x1)x2−x1=f(x)−f(x1)x−x1f(x)=(x2−x)x2−x1f(x1)+(x−x1)x2−...

2019-12-17 16:43:15 4271

原创 Python—命令行参数

命令行参数就是在使用命令行运行一个.py文件时,对一些程序中用到的参数进行赋值。如:程序中有一个变量username,在运行程序时输入不同的变量值就会使程序得到不同的执行结果。在python使用命令行参数功能,只需引入argparse模块即可方便的创建命令行参数对象。import argparse# 使用ArgumentParser()创建一个实例化对象ap = argparse.Argu...

2019-11-05 16:26:33 250

原创 OpenCV—Gradient

在图像特征提取中一个很重要的操作就是提取边缘,边缘是指在某个方向上梯度变化很大,而垂直方向上梯度变化很小。以图像中坐标为(x,y)(x,y)(x,y)的像素点灰度值I(x,y)I(x,y)I(x,y)为函数。梯度计算在数学计算中,微分计算公式为:Ix=I(x+δx,y)−I(x,y)δxIy=I(x,y+δy)−I(x,y)δyI_x = \frac {I(x+\delta x,y)-I...

2019-11-04 20:49:38 823

原创 OpenCV—Harris Corner Detection

角点是指在各个方向上灰度值变化都非常大的区域,灰度变化也就是灰度梯度。寻找角点也就是寻找灰度梯度最大的像素点。我们使用一个窗口在图像上滑动来计算灰度的梯度 E(u,v)E(u,v)E(u,v)E(u,v)=∑x,yw(x,y)[I(x+u,y+v)−I(x,y)]2E(u,v)=\sum_{x,y}w(x,y)[I(x+u,y+v)-I(x,y)]^2E(u,v)=x,y∑​w(x,y)[...

2019-11-04 20:44:21 300

原创 OpenCV—Understanding Features

Understanding FeaturesWhat is Features从信息角度来看,图像中的特征即是该图片所携带的信息,可以用来与其他的图像进行区分。在下面的图像中,蓝色的窗口区域是一个均匀的色块,从中可以得到“绿色”信息(无法确定该窗口的位置);黑色窗口区域是一个上下明显的分界,从中可以得到边缘的信息(能够从竖直方向确定该窗口的位置);红色窗口区域是两个方向的分界的交点,从...

2019-11-04 20:38:32 197

原创 CNN Layers

Layers and ImplementsCNN网络主要包括卷积层、池化层、全连接层等。Convolution LayersSingle channel1.No padding给定一张5X5的单通道的灰度图像和一个3X3的卷积核,从左上角开始将对应位置的数字相乘再求和,kernel 依次滑动stride=1,计算得到右侧的结果;输入输出的尺寸关系为:Widthout=⌊Width...

2019-11-03 10:29:22 1340

原创 机器学习—NeuronNetwork(python类实现)

神经网络的训练过程主要包括几个部分:前馈计算损失计算反向传播下面以单隐藏层神经网络为例,结构如下图所示:输入X:特征数为100weights参数 :w1: [100,20]w2:[20,2]激活函数:sigmoid输出y_hat:分类数为2前馈计算:layer1=x⋅w1layer_1=x\cdot w_1layer1​=x⋅w1​activatio...

2019-10-31 12:48:07 598

原创 OpenCV-Transformations

相似性变换内部方位角度保持不变旋转:x1⃗=Rx0⃗=[cosα−sinαsinαcosα][x0​y0]\vec{x_{1}}=R\vec{x_{0}}=\begin{bmatrix}cos\alpha & -sin\alpha \\ sin\alpha & cos\alpha \end{bmatrix}\begin{bmatrix}x_{0}\\ ​y_{0}\e...

2019-10-28 20:16:12 332

原创 OpenCV-Histograms

像素值在整幅图像中的分布情况是该图像的一个重要属性。计算图像直方图直方图是一个简单的表格, 表示一个图像(有时是一组图像) 中具有某个值的像素的数量。也可以把直方图归一化, 即所有箱子的累加和等于1。这时每个箱子的数值表示对应的像素数量占总数的百分比。1.使用cv.calHist()使用cv.calHist()计算每个颜色通道的直方图cv.calcHist函数。 是一个通用的直方图计...

2019-10-28 19:02:04 420

原创 机器学习—LogisticRegression(python类实现)

import numpy as npimport matplotlib.pyplot as pltclass LogisticRegression: """ sigmoid function: 1/(1+exp(-z)) y_hat = sigmoid(w*x+b) loss: -y*log(y_hat)-(1-y)*log(1-y_hat) dw...

2019-10-27 21:07:08 285

原创 机器学习—LinearRegression(python类实现)

import numpy as npimport randomimport matplotlib.pyplot as pltclass LinearRegression: """ y_hat = w*x+b loss: 0.5*(y_hat-y)^2 dw = (y_hat-y)*x db = y_hat-y w = w-learning_...

2019-10-27 21:05:31 396

原创 IO模型

一个输入操作通常包括两个阶段: 等待数据准备好 从内核向进程复制数据阻塞式I/O应用进程被阻塞,直到数据从内核缓冲区复制到应用进程缓冲区中才返回。在阻塞的过程中,其它应用进程还可以执行,因此阻塞不意味着整个操作系统都被阻塞。非阻塞式I/O应用进程执行系统调用之后,内核返回一个错误码。应用进程可以继续执行,但是需要不断的执行系统调用来获知 I/O 是否完成,这种方式称为轮询(polling)...

2019-10-14 21:14:52 164

原创 Redis—基础原理

Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。在关系型数据库如MySQL中,表的结构比较复杂会包含很多个字段。可以使用查询语句实现非常复杂的查询需求,而Redis中只能包含键和值两部分,只能通过键来查询或添加值。Redis 键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。并且Redis的数据是存储在内存中的...

2019-10-14 20:23:53 178

原创 MySQL-索引与数据类型

索引在数据库的查询操作中,为了提高数据查询的效率引入了索引的概念。其中,实现索引有几种不同的方式:哈希表、有序数组、搜索树等。哈希表把数据库中的值放在数组中,采用哈希算法把key映射到一个确定的位置,然后把value放在数组的这个位置。当发生冲突时,采用链表法解决。缺点:只能由于等值查询无法实现范围查询。有序数组把数据库中的值放在一个有序数组中,查询用二分法,时间复杂度:O(log(N...

2019-10-14 15:04:24 307

原创 计算机网络—网络结构模型

计算机网络与计算机的其他输入输出设备一样,只能交换数据。在与其他计算机交换之前必须要制订一套彼此都能理解的协议——网络协议。源计算机发送一个数据包给目标计算机的过程类似与寄信的过程,传送过程中不断地套上一层一层的网络协议。以浏览器为例:客户端浏览器将请求封装为HTTP协议,通过Socket发送到内核;在TCP层创建维护连接的数据结构即将HTTP包加上TCP头,发送给IP层;IP层加上I...

2019-10-14 14:21:46 690

原创 计算机网络—网络中的数据传输

数据在计算机之间传输分为两种情形:源主机与目标主机在同一个局域网中(使用交换机基于MAC地址进行分发);源主机与目标主机都有公网IP(使用路由器基于IP协议进行分发);源主机与目标主机其中有一个只有私有IP(使用路由器基于IP协议进行分发)。第一种情况,主机之间通过交换机连接,使用以太网协议进行通讯。交换机工作在链路层。当交换机刚刚安装配置好之后:交换机收到端口为A,MAC地址为...

2019-10-14 13:35:32 1985

原创 计算机系统原理—进程与线程

多任务多任务:即同时进行多个不同的事务,如一边听音乐一边写文档等。实现多任务涉及到并行与并发两种模式,并行:同一时间点同时执行多个任务;并发:同一个很小的时间片段内执行多个不同的任务。如果一台计算机只有一个单核CPU那么它只能以并发的形式实现多任务。在计算机中,任务是指可被CPU赋予执行权的对象,任务的执行只要依赖寄存器和内存。任务的切换过程就是对不同任务执行时寄存器和内存...

2019-10-13 20:07:17 251

转载 C++基础知识

1.new、delete、malloc、free关系malloc与free是C++/C语言的标准库函数;new与delete是C++的运算符。它们都可用于申请动态内存和释放内存。new调用对象的构造函数,delete会调用对象的析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。2.delet...

2019-10-03 15:43:16 301

原创 Docker-socket—实例

实现思路:1.使用docker创建一个ubuntu容器作为server2.本地创建client3.client 与server实现通讯server端创建一个容器并映射端口docker run -it -name server -p 12345:12345 ubuntu:v2.0#进入创建的容器并新建一个python文件mkdir python_servercd python_se...

2019-10-02 16:15:47 4273

原创 Docker入门

官方定位Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。Docker架构Docker使用客户端-服务器架构。Docker 客户端与Docke...

2019-10-02 16:04:27 137

原创 MySQL数据库索引实现原理

本文来选自王争老师的极客时间—数据结构与算法之美索引的功能需求:1.根据某个值查找数据2.根据区间值来查找某些数据非功能性考虑因素:1.执行效率2.存储空间假设可能的实现方式:跳表跳表是在链表之上加上多层索引构成的。它支持快速地插入、查找、删除数据,对应的时间复杂度是 O(logn)。改造的二叉查找树树中的节点并不存储数据本身,而是只是作为索引。把每个叶子节点串在一条链表上...

2019-09-24 19:14:10 178

原创 #203. 移除链表元素

题目描述:删除链表中等于给定值 val 的所有节点。知识点:链表操作检查边界条件:链表为空链表只包含一个节点链表只包含两个节点处理头节点和尾节点是否有问题思路和代码:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x...

2019-09-24 13:13:35 125

原创 #92.反转链表Ⅱ

题目描述:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。知识点:在扫描链表的过程中记录m与n两个节点位置思路和代码:class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: d...

2019-09-24 09:41:29 154

原创 python实现单例模式

单例模式(Singleton Pattern)负责创建自己的对象,同时确保只有单个对象被创建。class Singleton: _instance = None def __init__(self,pram): print('init the instance') self.pram = pram def __new__(cls,*arg...

2019-09-23 17:10:04 132

转载 TCP的连接与中止(三次握手与四次挥手)

TCP属于传输层,提供可靠的字节流服务。为两台主机提供高可靠性的数据通信。HTTP协议就是基于TCP/IP协议模型来传输信息的。1.三次握手三次握手的必要性:1.为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。2.若只有两次握手,当服务器收到失效连接请求并发送了确认消息。客户端不会给予回应则服务端则一直处于等待状态。2.四次挥手当客户端和服务器之间的数据传送完毕后...

2019-09-23 14:52:16 148

原创 线程与进程

进程与线程的区别概念进程(process) 是资源分配的最小单位。线程(thread) 是程序执行的最小单位。其中资源包括CPU、内存等,一个进程可以由很多个线程组成,线程之间共享该进程的所有资源,每个线程有自己独立的堆栈和局部变量。通信线程之间的通信:共享局部变量进程之间的通信:IPC通讯的方式多任务(多线程与多进程)多任务主要考虑两个因素:1.任务数量:无论是多线程还是多进...

2019-09-23 13:58:34 139

原创 Pandas—resample重采样

重采样指的是将时间序列从一个频率转换到另一个频率的处理过程。pandas对象都带有一个resample方法,它是各种频率转换工作的主力函数。调用resample可以分组数据,然后会调用一个聚合函数(mean,max,min等)import pandas as pdimport numpy as nprng = pd.date_range('2000-01-01', periods=12,...

2019-09-23 09:46:14 1980

原创 pandas—时间序列基础

时间序列基础时间序列(time series)数据是一种重要的结构化数据形式。数据点是根据某种规律定期出现的(比如每15秒、每5分钟、每月出现一次)。时间序列也可以是不定期的,没有固定的时间单位或单位之间的偏移量。时间序列数据的意义取决于具体的应用场景。时间戳(timestamp),特定的时刻。固定时期(period),如2007年1月或2010年全年。时间间隔(interval),由...

2019-09-23 09:37:26 413

原创 爬虫入门——requests

HTTP请求get请求:发送请求来获得服务器上的资源,请求体中不会包含请求数据,请求数据放在协议头中。另外get支持快取、缓存、可保留书签等。post请求:向服务器提交资源让服务器处理,比如提交表单、上传文件等,可能导致建立新的资源或者对原有资源的修改。提交的资源放在请求体中。head请求:本质和get一样,但是响应中没有呈现数据,而是http的头信息,主要用来检查资源或超链接的有效性或是否...

2019-09-22 19:06:22 206

转载 爬虫入门——快速理解HTTP协议

本文摘录自爬虫入门系列(一):快速理解HTTP协议 侵删HTTP 协议是互联网应用中,客户端(浏览器)与服务器之间进行数据通信的一种协议。协议中规定了客户端应该按照什么格式给服务器发送请求,同时也约定了服务端返回的响应结果应该是什么格式。HTTP 协议本身是非常简单的。它规定,只能由客户端主动发起请求,服务器接收请求处理后返回响应结果。1.请求HTTP 请求由3部分组成,分别是请求行、...

2019-09-22 15:39:00 257

原创 #322. 零钱兑换

题目描述:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。说明:你可以认为每种硬币的数量是无限的。知识点:动态规划:多阶段决策最优解模型,每阶段都对应一组状态状态转移方程构造方式:递归+备忘录(反向递归)迭代递推(正向迭代)思路和代码:状态转移方式:采用反向...

2019-09-21 16:04:14 126

原创 #64.最小路径和

题目描述:给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。知识点:动态规划:多阶段决策最优解模型,每阶段都对应一组状态状态转移方程构造方式:递归+备忘录(反向递归)迭代递推(正向迭代)思路和代码:状态转移方式:采用正向迭代def minPathSum(grid): """...

2019-09-20 19:42:50 133

原创 N皇后问题

class Queens: def __init__(self,num=8): """ 传入num指定方格尺寸 :param num: """ self._num = num self._result = [None]*self._num self.lay_queen(0) ...

2019-09-19 15:49:00 170

原创 计算数组逆序数(使用归并排序的分治思想)

分治思想分解解决子问题合并可以使用分治思想的问题有哪些特点:原问题与分解成的子问题具有相同的模式原问题分解成的子问题可以独立求解,子问题之间没有相关性具有分解终止条件可以将子问题合并成原问题,并且合并操作复杂度不能太高以下以面向对象的方式实现归并排序相关功能:class Merge_sorter: def __init__(self): self...

2019-09-19 13:49:00 293

原创 堆与堆排序(python实现)

class Heap: """ 既可以通过单个元素插入的方式建堆 也可以通过build_heap()传入现有列表的方式建堆(建堆时容量要匹配) """ def __init__(self,capacity): """ :param capacity: 堆的容量,可通过现有列表的len传入 """ ...

2019-09-18 15:00:09 202

原创 经典排序算法分析对比(python实现)

# 冒泡排序 O(n^2)#本地排序def bobble_sort(arr): n = len(arr) for i in range(n-1): # 遍历n-1次 for j in range(i+1,n): # 每次遍历中,与首位比较n-i次 if arr[i]&gt...

2019-09-16 15:23:13 197

空空如也

空空如也

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

TA关注的人

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