Python知识汇总
2022-04-02 11:51:01 7 举报
AI智能生成
登录查看完整内容
为你推荐
查看更多
关于Python的知识汇总,持续更新
作者其他创作
大纲/内容
计算机基础
操作系统
计算机基础知识
注:记得安装时勾上Add Python3.X to PATH
官网:http://www.python.org/download/
右键我的电脑–>选择属性–>选择高级系统设置–>选择右下角的环境变量
复制python的路径->双击环境变量里PATH->点击新建->将python路径粘贴到新建里->保存
如果报错,则需要配置环境变量
命令提示窗:输入python查看是否安装成功
选择community版本
官网:https://www.jetbrains.com/pycharm/download/#section=windows
File>>Settings>>Editor>>File and Code Templates>>Python Script
编辑默认代码开头
安装详情介绍可参考:https://www.pycharm.com.cn/
安装pycharm
python环境搭建
默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件
第一个字母必须是字母或者下划线
查看所有保留字import keywordprint(keyword.kwlist
有一些单词被赋予了特定的意义,这些单词在给任何对象命名的时候都不可以使用
保留字
行与缩进
id(obj)
查看变量的内存地址
type(obj)
查看对象的数据类型
导入整个模块
import
导入模块的指定成员
from...import
模块导入
注:浮点数的计算存在误差,例如,n1 = 1.1n2 = 2.2print(n1 + n2)>>>3.300000000000003
解决方法:导入decimal模块from decimal import Decimalprint(Decimal(\"1.1\")+Decimal(\"2.2\"))>>>3.3
数字类型
字符串不可改变,python允许空字符串出现,不包含任何字符,且长度为0
d='abc 啦啦啦'len(d)>>>6
计算字符串包含多少字符
len()
使用+将多个字符串拼接起来。例如:’aa’+ ’bb’ ==>’aabb’
将多个字面字符串直接放到一起实现拼接。例如:’aa’’bb’==>’aabb’
字符串拼接
使用*可以实现字符串复制:>>> a = 'Sxt'*3>>> a'SxtSxtSxt'
字符串复制
不换行打印,end = “任意字符串”:>>>print(\"sxt\
end=''
输入内容
input()
字符串替换
replace()
>>> a = \"to be or not to be\
可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)
字符串分割
split()
与split相反
字符串合并
join()
>>>a='abcde'>>>a.startwith('a')True
以指定字符串开头
startwith()
>>>a='abcde'>>>a.endwith('e')True
以指定字符串结尾
endwith()
>>>a='abcdeabcde'>>>a.find('c')2
第一次出现指定字符的位置
如果str不在string中,则返回-1
find(str)
>>>a='abcdeabcde'>>>a.rfind('c')7
最后一次出现指定字符的位置
rfind()
str – 指定检索的字符串;beg – 开始索引,默认为0;end – 结束索引,默认为字符串的长度。
返回指定字符的位置索引
该方法与 python find()方法一样,只不过如果str不在 string中会报一个异常
返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常
查找
>>>a='abcdeabcde'>>>a.count('c')2
指定字符出现了几次
count()
>>> \"*s*x*t*\".lstrip(\"*\")'s*x*t*'
去除字符串左边指定信息
lstrip()
>>> \"*s*x*t*\".rstrip(\"*\")'*s*x*t'
去除字符串右边指定信息
rstrip()
>>> \"*s*x*t*\".strip(\"*\")'s*x*t'>>> \" sxt \".strip()'sxt'
去除首尾指定信息
strip()
返回字符串中最大的字母
max()
返回字符串中最小的字母
min()
table – 翻译表,翻译表是通过 maketrans() 方法转换而来
translate()函数做的就是接收一个映射表,然后把字符串中含有的映射表的键全都换成映射的值
translate(table)
以指定的编码格式编码字符串。errors参数可以指定不同的错误处理方案。
是否为字母或数字
isalnum()
是否只由字母组成(含汉字)
isalpha()
是否只由数字组成
isdigit()
是否为空白符
isspace()
是否为大写字母
isupper()
是否为小写字母
islower()
判断
>>> \"sxt100\".isalnum()True>>> \"sxt 尚学堂\".isalpha()True>>> \"234.3\".isdigit()False>>> \"23423\".isdigit()True>>> \"aB\".isupper()False>>> \"A\".isupper()True>>> \"\\t\\".isspace()True
>>>a='abc aBBD'>>>a.capitatize()'Abc abbd'
capitalize()
>>>a='abc aBBD'>>>a.title()'Abc Abbd'
title()
>>>a='abc aBBD'>>>a.upper()'ABC ABBD'
upper()
>>>a='abc aBBD'>>>a.lower()'abc abbd'
lower()
>>>a='abc aBBD'>>>a.swapcase()'ABC Abbd'
swapcase()
大小写转换
>>> a=\"SXT\
字符串居中,指定字符填补,默认空,如果指定的长度小于字符串的长度则返回原字符串
字符串居左,指定字符填补,默认空,如果指定的长度小于字符串的长度则返回原字符串
字符串居右,指定字符填补,默认空,如果指定的长度小于字符串的长度则返回原字符串
>>>a.zfill(5)'00SXT'
返回指定长度的字符串,原字符串右对齐,前面填充0
zfill(width)
格式排版
函数
字符串首个字符索引为0,之后为1、2、3...
字符串末尾字符索引为-1,往前为-2、-3...
索引
提取整个字符串
[:]
从 start 索引开始到结尾
[start:]
从头开始知道 end-1
[:end]
从 start 到 end-1
[start:end]
从 start 提取到end-1,步长是 step
[start:end:step]
[起始偏移量 start:终止偏移量 end:步长 step]
>>>a='abcde'>>>a[0]'a'>>>a[-1]'e'>>>a[:]'abcde'>>>a[1:]'bcde'>>>a[:-1]'abcd'>>>a[2:4]'cd'>>>a[0:5:2]'ace'
切片slice
字符串
变量无类型
a=b=c=1
多个变量赋值
List(列表)
Dictionary(字典)
Set(集合)
Number(数字)
String(字符串)
Tuple(元组)
标准数据类型
可变数据
不可变数据
type()不会认为子类是一种父类类型
isinstance()会认为子类是一种父类类型
使用del语句删除一些对象引用
其他
float(x) 将x转换到一个浮点数
str(x)将对象 x 转换为字符串
repr(x)将对象 x 转换为表达式字符串
tuple(s)将序列 s 转换为一个元组
list(s)将序列 s 转换为一个列表
set(s)转换为可变集合
frozenset(s)转换为不可变集合
二进制数字前面加上“0b”是为了识别为二进制;“0o”为八进制;“0x”为十六进制;默认为十进制
print(chr(0b100111001011000))>>>乘
chr(x)将一个整数转换为一个字符
print(ord(\"乘\"))>>>20056
ord(x)将一个字符转换为它的整数值
hex(x)将一个整数转换为一个十六进制字符串
oct(x)将一个整数转换为一个八进制字符串
Python数据类型转换
基本数据类型
Python中单行注释以 # 开头
多行注释用三个单引号 ''' 或者三个双引号 """ 将注释括起来
注释
两个对象相加
+
两个对象相减
-
两个数相乘或是返回一个被重复若干次的字符串
*
x 除以 y
/
取模 - 返回除法的余数
%
a**b 为a的b次方
幂 - 返回x的y次幂
**
取整除 - 向下取接近商的整数
//
算术运算
按位与
&
只要对应的二个二进位有一个为1时,结果位就为1,否则为0。
按位或
|
当两对应的二进位相异时,结果为1,否则为0。
按位异或
^
按位取反
~
运算数的各二进位全部左移若干位,由\"<<\"右边的数指定移动的位数,高位0丢弃,低位补0。
左移运算
<<
把\">>\"左边的运算数的各二进位全部右移若干位,\">>\"右边的数指定移动的位数,正数补0,负数补1
右移运算
>>
位运算
最基本的赋值运算
=
x+=y 相当于 x=x+y
加赋值
+=
x-=y 相当于 x=x-y
减赋值
-=
x*=y 相当于 x=x*y
乘赋值
*=
x/=y 相当于 x=x/y
除赋值
/=
x%=y 相当于 x=x%y
取余数赋值
%=
x**=y 相当于 x=x**y
幂赋值
**=
x//=y 相当于 x=x//y
取整数赋值
//=
赋值运算
等于
==
大于
>
小于
<
大于等于
>=
小于等于
<=
不等于
!=
逻辑运算
包含
in
不包含
not in
成员运算
是
is
非
is not
身份运算
python是一种面向对象的语言,python中对象包含三种基本要素:id(返回的是对象的地址)、type(返回的是对象的数据类型)及value(对象的值)
is比较的是两个对象的地址值,也就是说两个对象是否为同一个实例对象;而==比较的是对象的值是否相等,其调用了对象的__eq__()方法。
仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。Python 支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线(_)、字母和数字)会启用字符串驻留机制驻留机制
>>> a = \"abd_33\">>> b = \"abd_33\">>> a is bTrue>>> c = \"dd#\">>> d = \"dd#\">>> c is dFalse>>> str1 = \"aa\">>> str2 = \"bb\">>> str1+str2 is \"aabb\"False>>> str1+str2 == \"aabb\"True
字符串驻留机制
is 与 == 区别
span style=\"font-size: inherit;\
%操作符
>>> b = \"名字是:{0},年龄是{1}。{0}是个好小伙\">>> b.format(\"高淇\
str.format
f-Strings
外框
Template
字符串格式化
Template Strings
Literal String Interpolation
New Style str.format
Python3.6+?
User_supplied format strings?
格式化经验法则
浮点数通过 f,整数通过 d 进行需要的格式化
数字格式化
if语句
while循环
while 循环使用 else 语句
for循环
break和continue语句及循环中的else子句
pass 语句
条件控制
打开文件
open
print(\"helloworld\
在文件里输入内容
fp.close()
关闭文件
close
以只读模式打开文件,并将文件指针指向文件头;如果文件不存在会报错
r
注:r+会覆盖当前文件指针所在位置的字符,如原来文件内容是\"Hello,World\",打开文件后写入\"hi\"则文件内容会变成\
在r的基础上增加了可写功能
r+
以只写模式打开文件,并将文件指针指向文件头;如果文件存在则将其内容清空,如果文件不存在则创建
w
注:w+与r+的不同是,w+在打开文件时就会先将文件内容清空,不知道它有什么用
在w的基础上增加了可读功能
w+
以只追加模式打开文件,并将文件指针指向文件尾部,若文件不存在则创建
a
注:a+与r+的不同是,a+只能写到文件末尾(无论当前文件指针在哪里)
在a的基础上增加了可读功能
a+
在读写而二进制文件,需要与上面几种模式搭配使用,如ab,wb,ab+
b
文件打开模式
一次读取文件所有内容,返回一个str或每次最多读取指定长度的内容,返回一个str
read()
一次读取文件所有内容,按行返回一个list
readlines()
每次只读取一行内容
readline()
将指针移动到指定字节的位置
seek(n)
获取当前文件指针所在字节的位置
tell()
刷新缓冲区数据,将缓冲区的数据立即写入文件
flush()
返回文件下一行,这个方法也是file对象实例可以被当做迭代器使用的原因
next()
将字符串写入文件,没有返回值
write(n)
文件读取的方法
文件读写
换行
\
回到该行初始位置print(\"hello\world)>>>world
回车
每4个字符,为一个制表位,如果四个字符占满,则重新计算一个制表位print(\"hello\\tworld\")>>>hello worldprint(\"helloooo\\tworld\")>>>helloooo world
制表符
\\t
print(\"hello\\bworld\")>>>hellworld
退格
\\b
print(\"老师说:\\\"大家好\\\"\")
对特殊字符进行转义
反斜线
\\
print(r'hello\world')>>>hello\world
原字符,不希望字符串中的转义字符起作用,就在字符串前加上r或R
r或R
转义字符
基础语法
python入门
ADT
面向对象基本概念、类与对象的成员(属性和方法))
封装
继承与派生
多态与抽象基类
三大特性
初级
高级
面向对象
类名必须符合“标识符”的规则;一般规定,首字母大写,多个单词使用“驼峰原则”。
类体中我们可以定义属性和方法。
属性用来描述数据,方法(即函数)用来描述这些数据相关的操作
>>>class Student:>>> company = \"SXT\
名称固定,必须为:init()
第一个参数固定,必须为:self。 self 指的就是刚刚创建好的实例对象
构造函数通常用来初始化实例对象的实例属性,如下代码就是初始化实例属性:name和 score
init()方法:初始化创建好的对象,初始化指的是:“给实例属性赋值”
new()方法: 用于创建对象,但我们一般无需重定义该方法
如果我们不定义__init__方法,系统会提供一个默认的__init__方法。如果我们定义了带参的__init__方法,系统不创建默认的__init__方法
init()
class 类名: 类体
类
作为参数传递
作为返回值
函数进阶
模块与包&自定义第三方模块
异常处理机制&自定义异常类
迭代器和生成器
自定义上下文管理器
高级语法
并发基本原理与进程理论基础
创建多进程
进程间通信原理
线程理论基础,同步互斥基本原理
详解python的GIL的线程锁
并发网络通信模型
IO并发:阻塞IO、非阻塞IO、IO多路复用、异步IO
并发与多线程
字节串与文件的读写操作
文件读写的其他操作
文件管理函数
Python文件处理
网络编程基础与OSI模型详解
面向连接的传数服务
面向无连接的传数服务
传输层服务
tcp套接字
udp套接字
socket套接字编程
http协议基础概念详解
IO网络编程
基础概念及元字符使用、正则匹配规则
Python re模块
正则表达式
Python高级编程
网页解析
数据抓取
以谷歌为例,地址栏输入about:version,找到“用户代理”字段
打开任意网页,查看源码,点击network,随便点击一个浏览器请求,点击headers,下滑找到UserAgent,如果没有,换个请求查找。
from faker import Factoryf = Factory.create()headers = { 'user-agent': f.user_agent()}
代理库:faker
userAgent
爬虫基础
向请求中添加请求头
str.add_header()
打开网址
urllib.request.urlopen()
读取网址,并解码
response.read().decode('utf-8')
请求网址
urllib.request
将汉字变为unicode格式
urllib.parse.quote()
编码
urllib.parse.urlencode().encode('utf-8)
urllib.parse
1:get请求方式的参数必须编码,参数是拼接到url后面,编码之后不需要调用encode方法2:post请求方式的参数必须编码,参数是放在请求对象定制的方法中,编码之后需要调用encode方法。
urllib
get
post
header
requests
爬虫核心技巧
模拟登录
验证码识别
APP 爬取
爬虫进阶
Beautiful Soup框架
异步加载
Ajax
网页中JavaScript渲染问题
PyQuery
xPath
selenium
反爬
进阶技能
Scrapy框架
分布式爬虫
逆向解密
爬虫高阶
Python爬虫
数组创建
索引/切片/布尔查询
数组运算/变换
随机数操作
数值模拟项目
数值计算
掌握numpy的核心ndarray
创建数据、数据类型和dtype选项
numpy自带的数组高效创建方法
算数运算、矩阵积、自增和自减
函数和聚合函数
基本操作
索引机制和切片操作
数组迭代、条件和布尔数组、形状变换
数组操作之连接数组、数组切分
常用概念之对象的副本或视图、向量化和广播机制
结构化数组
二进制文件的读写、文本文件的读写
进阶
numpy
函数应用和映射、排序和排位次
相关性和协方差、处理NaN数据
等级索引和分级
基础操作
Series对象、Index对象
DataFrame的概念、定义方法,选取元素、赋值、所属关系
索引对象的其他功能
数据结构之间的运算
数据结构
基础
读取csv或文本文件中的数据
用正则表达式解析txt文件、从txt文件中读取部分数据、将数据写入csv文件、写入数据到html文件中
写入数据到html文件中,从互联网网页或网页文件中读取数据
读写Excel文件、读写JSON格式的数据、读写HDF5格式文件
进行python对象序列化读写pickle文件
对接数据库
数据读写
数据合并、数据拼接、组合数据、轴向旋转、如何删除DataFrame列和行
删除重复元素
映射替换元素
用映射来添加元素
用映射重命名轴标签
数据转换
数据离散化、面元划分、数据异常检验和过滤
数据排序、随机取样、部分常用字符串处理方法、正则表达式、数据聚合、组迭代
数据处理
pandas
数据分析
Matplotlib扩展库安装和库架构
Jupyter Notebook的安装和使用
使用关键字参数和处理多个图形的方法
给图表添加更多元素--标题、轴标签、图例
解决绘图中的中文乱码问题
在绘图中处理显示合适的日期数据
深入理解绘制图表的内容,例如线性图
绘制直方图--hist()
多样化绘制柱形图
绘制饼图、高级图表
三维图形的绘制,例如mplot3D工具集
绘制子图网格
超链接
Matplotlib可视化
seaborn可视化
pyechart可视化
Bokeh交互式可视化库
可视化项目
可视化
只读属性和访问权限
了解多继承的MOR算法
_new_与self
运算符重载和函数重写
深层属性管理
面向对象的底层原理,自定义元类编程
开闭原则
单一职责
依赖倒转
接口隔离
迪米特法则
里氏替换
六大设计原则
简单工厂模式
工厂方法模式
抽象工厂模式
建造者模式
原型模式
单例模式
。。。
创建型模式
适配器模式
装饰模式
结构型模式
解释器模式
责任链模式
行为型模式
面向对象设计和面向对象编程
深入了解面向对象
MySQL基本了解和环境搭建
数据库管理
MySQL数据类型
数据表管理
表数据基本操作之CRUD
查询语句
聚合操作
索引操作
外键约束和表关联关系
SQL语句
MySQL视图
函数与存储过程
数据库事务控制
MySQL数据库
服务器与客户端原理和技术
CS和BS架构
服务器与客户端
什么是HTML和基本结构
注释及网页头部标签使用
常用的字符实体及标题文字
img标签的使用及标签属性
常用块级元素及行级元素、超链接及属性、列表、表格、表单元素、选项框元素
多媒体等进阶内容
HTML
CSS介绍及基本使用
属性及基本布局演示
样式表的使用方式
选择器、样式优先级规则、列表、表单的使用
盒子模型
显示特性、元素溢出、表格元素及相关样式
CSS定位、权重
PS辅助测量与取色
前端页面开发流程
CSS
JavaScript基本了解和使用
变量、数据类型及基本语法规范
运算符、函数、条件语句、对象
获取和操作元素的方法、事件属性及匿名函数
数组及操作方法
循环语句、字符串、调试
定时器、变量作用域、正则
预解析
JS
前端
Flask、web farmework、WSGI、jinjia2是什么
虚拟环境搭建、Flask安装
Flask基本使用
路由的使用
正则转换器、接收请求参数
跳转方式
Flask路由
数据传递
过滤器-测试器
逻辑处理
模板继承、全局错误视图
模板使用--jinjia2
model定义、字段类型
CURD,分页
关联关系:1对1、1对多、多对多
Flask-model
cookie、session
静态资源的使用和响应
状态保持
企业级微型框架--Flask
Django的安装和虚拟环境搭建
Django项目创建
模板templates的使用
创建APP的核心操作
入门
MTV模式和基本开发流程
URL路由的基本操作和进阶
请求处理
Django视图和URL路由配置
model层的开发过程
模型字段的高级使用
model层的核心操作
基本查询
条件查询
关联关系下的常见操作
model的关联关系
Django模型进阶
请求对象和响应对象的使用
view跳转的高级使用
cookie和session的使用
反向解析
请求与响应
模板的基本使用方法
DTL的基本使用、标签的使用
静态资源的管理方式
Django模板必备知识
企业级开发框架--Django
MySQL、linux-Python等软件的安装
环境搭建
文件基本操作指令
用户、组管理指令
文件属性操作指令
查进程相关指令及VI指令
网络相关指令
软件安装指令
操作指令
linux系统
Django安装、wsgi协议、uwsgi服务器安装使用
在uwsgi中部署Django项目
Nginx使用
负载均衡-动静分离
生产环境及项目部署
什么是NoSQL、Redis,传统结构模式及分布式结构
Redis数据库安装及基本数据类型
数据类型
持久化操作
数据类型-持久化
aof重写
Redis集群搭建
Python-Redis客户端-JSON序列化
JSON解析、通信完整代码演示
Redis-Django-View缓存
Redis-Django模板缓存、session管理
集群搭建
redis数据库
后端
Web开发(前/后端)
自动化测试基本认识
Webdriver自动化原理、HTML和Web元素、Beautifulsoup
frame切换、css选择器、选择框的操作
xpath
浏览器查看信息
弹出框处理
web自动化实战
Selenium
Appium自动化原理和环境搭建、自动化配置项
界面元素的查看、选择app界面元素
UIAutomator API
滑动界面操作
WebView自动化
通知和案件操作
Appium
基础概念、HTTP协议
Postman工具构造API请求和文档等操作
接口测试流程
cookie、session、token
Python数据库操作
API测试自动化
API接口
RF自动化测试的常见操作
RF
自动化测试
数据预处理
特征选择
特征融合
特征工程
基础操作和核心原理
Hive数据仓库工具原理和常见操作
Sqoop数据ETL工具
Hadoop分布式系统基础架构
原理、架构、基本组件、数据结构、表
安装部署、常用操作、SQL工具、Phoenix、升级和数据迁移、Shell常用命令、Hive
Hbase分布式存储系统
Spark原理、与Hadoop的区别、Spark生态圈
Spark MLlib机器学习
Spark GraphX图计算
Spark Streaming流式计算
Spark编程及常用函数
Spark分布式集群环境安装搭建
Spark分布式内存计算
Word2Vec词向量模型
learning to rank排序学习算法
逻辑回归算法
决策树算法
随机森林算法
GBDT梯度提升决策树算法
SVM支持向量机算法
贝叶斯算法
序列模式挖掘prefixSpan算法
Spark分布式机器学习
Spark
K-近邻算法
决策树
朴素贝叶斯算法
Logistic 回归
SVM 支持向量机
CART 分类树
Softmax 回归
分类
线性回归
CART 回归树
回归
Boosting
随机森林
AdaBoost
GBDT
XGBoost
集成学习
监督学习
K-means
层次聚类
聚类
无监督学习
算法模型
准确率
召回率
P-R 曲线
ROC
AUC
MSE
模型评估
机器学习
输入层
标准卷积
空洞卷积
分组卷积
可变形卷积
可分离卷积
卷积层
pooling层是仿照人的视觉系统进行降维(降采样),用更高层的抽象表示图像特征。
定义
下采样
降维
减少参数
避免过拟合,提高模型泛化能力
作用
计算图像区域的平均值作为该区域池化后的值
平均池化
选图像区域的最大值作为该区域池化后的值
最大池化
类型
对时序数据的最大池化
MaxPooling1D
对空域数据的最大池化
MaxPooling2D
对3D(空域,或时空域)数据的最大池化
MaxPooling3D
对时序数据的平均池化
AveragePooling1D
对空域数据的平均池化
AveragePooling2D
对3D(空域,或者时空域)数据的平均池化
AveragePooling3D
对时序数据的全局最大池化
GlobalMaxPool1D
对空域数据的全局最大池化
GlobalMaxPool2D
对3D(空域,或者时空域)数据的全局最大池化
GlobalMaxPool3D
对时序数据的全局平均池化
GlobalAveragePooling1D
对空域数据的全局平均池化
GlobalAveragePooling2D
对3D(空域,或者时空域)数据的全局平均池化
GlobalAveragePooling3D
池化层
双线行插值
转置卷积(反卷积)
反池化
上采样层
全链接层
层次结构
zero one loss
cross entropy loss
mse loss
logistic loss
focal loss
center loss
wing loss
dice loss
hinge loss
arcface loss
损失函数
分支主题
Sigmoid
relu
tanh
ReLU
Leaky ReLU
softmax
激活函数
随机梯度下降算法
SGD
随机梯度下降算法-动量优化
SGDM
牛顿加速梯度算法
NAG
自适应学习率优化算法
AdaGrad
AdaDelta
Adam
Nadam
什么是优化器
优化器
1. 水平镜像
2. 垂直镜像
3. 水平垂直镜像
4. 平移
5. 旋转
6. 裁剪
7. 仿射变换
几何变换
色彩增强(通过调节对比度和亮度)
颜色变换
高斯噪声
噪声注入
混合图像
随机擦除
生成对抗网络(GAN)生成数据
数据增强
噪声增强
输入端
L1/L2范数正则化
作用原理
增加Dropout层
BN和Dropout一起使用时会产生负面影响
增加BN层
模型上
早停
特征选择/降维
训练策略
过拟合解决办法
不合适的激活函数
初始化权值过大
产生原因
用其他激活函数替换sigmoid
利用BN将分布变换到激活函数敏感的区域
解决方案
梯度消失和梯度爆炸
1.零均值;2.方差归一化
输入归一化
1.求均值;2.求标准差;3.一个batch内归一化
加快训练速度
防止梯度消失
防止过拟合
优点
batch很小时效果不好
适用于深度固定的神经网络,对RNN无效
缺点
批归一化(BN)
对同一层神经元的输入进行归一化,不同的输入样本有不同的均值和方差
层归一化(LN)
对每个样本进行归一化,注重单个样本分布的均匀和独立,适用于图像风格化
实例归一化(IN)
在BN的基础上,将channel分为group,每个group内归一化,解除batchsize的影响
组归一化(GN)
归一化
优化技巧
深度学习基础
去均值
PCA/白化
局部连接
参数共享
深度表达
特点
1*1卷积
用多个小卷积核代替大卷积核
普通卷积
转置卷积
双线性插值
反卷积
上采样方法
激活层
全连接层
层级结构
正确分类样本占总样本比例
根据TP/TN/FP/FN计算,每个类别预测情况的记录
混淆矩阵
精确率(precision)
召回率(recall)
指标
取P=R时的平衡点值,越大越好
曲线越往右上越好
曲线下方的面积大小,越大越好
计算F1-score,值越大越好
评价方式
PR曲线
固定不同的分类阈值,测试假正类率和真正类率(召回率)
绘图方式
ROC曲线越接近左上角,该分类器的性能越好
AUC,ROC曲线下方面积
适用于样本不均衡
ROC曲线
评价指标
代表性网络:LeNet-5
介绍:用于手写字符识别
LeNet(1995)
介绍:获得了ILSVRC 2012年的冠军,引入dropout、relu
AlexNet(2012)
代表性网络:VGG-16、VGG-19
介绍:全部使用3*3的小卷积核,通过加深网络结构来提升性能,引入多尺度训练
VGGNet(2014)
Inception V1
BN层
Inception V2
Inception V3(2015)
Inception V4(2016)
Inception-ResNet-v2(2016)
代表性网络:
GoogLeNet(2014)
代表性网络:ResNet-50
ResNet(2015)
介绍:2017CVPRBestPaper,将每一层卷积后的特征都加起来
DenseNet(2017)
介绍:ImageNet 2017冠军,在channels的维度上加入attention机制,压缩和提取
SENet(2017)
经典网络结构
迁移学习
数据生成
主动学习
小样本
数据采集达到均衡
对类别设置优化权重
样本不均衡
应用难点
设置权重
网络更深、特征图更大
改进方向
图片分类
RCNN
Fast R-CNN
Faster R-CNN
Mask R-CNN
FAF R-CNN
RCNN家族
两阶段检测模型
YOLO v1
......
YOLO v5
YOLO家族
SSD
DSSD
FSSD
ESSD
DES
...
SSD家族
一阶段检测模型
RFCN家族
FPN家族
RetinaNet家族
Anchor-free家族
Others
目标检测网络
目标分割
目标跟踪
轻量化网络
卷积神经网络(CNN)
RNN
LSTM
GRU
BRNN
NTM
seq2seq
RNN+CTC
循环神经网络(RNN)
GAN
DCGAN
CGAN
CycleGAN
CoGAN
ProGAN
WGAN
SAGAN
BigGAN
StyleGAN
生成对抗网络(GAN)
GCNN
DCNN
ChebNet
图神经网络(GNN)
Tensorflow
Pytorch
Paddle
深度学习框架
深度学习
Python
收藏
收藏
0 条评论
回复 删除
下一页