11 2018 档案

摘要:断言 凡是用print()来辅助查看的地方,都可以用断言(assert)来替代: assert的意思是,表达式n != 0应该是True,否则,根据程序运行的逻辑,后面的代码肯定会出错。 如果断言失败,assert语句本身就会抛出AssertionError。 启动Python解释器时可以用-O参数 阅读全文 »
posted @ 2018-11-27 20:50 刘-皇叔 阅读(639) 评论(0) 推荐(0) 编辑
摘要:try try .... except ... else 一个try语句可以有多个except语句。 当try块包含可能引发不同类型的异常的语句时,这就很有用。 还可以提供一个通用的except子句,它处理任何异常。 在except子句之后,可以包含一个else子句。 如果try:block中的代码 阅读全文 »
posted @ 2018-11-27 20:43 刘-皇叔 阅读(464) 评论(0) 推荐(0) 编辑
摘要:由于Python是动态语言,根据类创建的实例可以任意绑定属性。 给实例绑定属性的方法是通过实例变量,或者通过self变量: 但是,如果Student类本身需要绑定一个属性呢?可以直接在class中定义属性,这种属性是类属性,归Student类所有: 当我们定义了一个类属性后,这个属性虽然归类所有,但 阅读全文 »
posted @ 2018-11-27 17:43 刘-皇叔 阅读(755) 评论(0) 推荐(0) 编辑
摘要:在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。 继承可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只需要新增自己特有 阅读全文 »
posted @ 2018-11-27 17:30 刘-皇叔 阅读(162) 评论(0) 推荐(0) 编辑
摘要:在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能 阅读全文 »
posted @ 2018-11-27 17:20 刘-皇叔 阅读(357) 评论(0) 推荐(1) 编辑
摘要:面向对象简介 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP 阅读全文 »
posted @ 2018-11-27 16:47 刘-皇叔 阅读(701) 评论(0) 推荐(0) 编辑
摘要:序列化 在程序运行的过程中,所有的变量都是在内存中,可以随时修改变量,但是一旦程序结束,变量所占用的内存就被操作系统全部回收。我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flatt 阅读全文 »
posted @ 2018-11-27 16:16 刘-皇叔 阅读(197) 评论(0) 推荐(0) 编辑
摘要:操作文件和目录的函数一部分放在os模块中,一部分放在os.path模块中。 查看当前目录的绝对路径: 创建一个目录:os.mkdir() 删除一个目录:os.rmdir() os.path.join() 把两个路径合成一个时,不要直接拼字符串,而要通过os.path.join()函数,这样可以正确处 阅读全文 »
posted @ 2018-11-27 16:00 刘-皇叔 阅读(243) 评论(0) 推荐(0) 编辑
摘要:打开文件对象 在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。 打开一个文件对象,使用Py 阅读全文 »
posted @ 2018-11-27 15:30 刘-皇叔 阅读(358) 评论(0) 推荐(0) 编辑
摘要:模块 在Python中,一个.py文件就称之为一个模块(Module)。 模块是一组Python代码的集合,可以使用其他模块,也可以被其他模块使用。 import语句 可以通过在其他Python源文件中执行import语句来将任何Python源文件用作模块。 当解释器遇到 import 语句,如果模 阅读全文 »
posted @ 2018-11-27 14:33 刘-皇叔 阅读(207) 评论(0) 推荐(0) 编辑
摘要:偏函数 在Python的functools模块众多的功能中,其中有一个就是偏函数,我们称之为 partial function。 当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。 int()函数可 阅读全文 »
posted @ 2018-11-27 12:02 刘-皇叔 阅读(499) 评论(0) 推荐(0) 编辑
摘要:装饰器 python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象(函数的指针)。 实质: 是一个函数。 参数:是你要装饰的函数名(并非函数调用)。 返回:是装饰完的函数名(也非函数调用)。 作用:为已经存在的对象添加额外的功能 阅读全文 »
posted @ 2018-11-27 12:00 刘-皇叔 阅读(1153) 评论(0) 推荐(0) 编辑
摘要:嵌套函数与非局部变量 在函数中定义另一个函数称为嵌套函数。嵌套函数可以访问包围范围内的变量。 nonlocal关键字 使用nonlocal关键字可以修改外层函数中变量的值: 输出: 闭包闭包也称词法闭包,如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是 阅读全文 »
posted @ 2018-11-27 11:27 刘-皇叔 阅读(1883) 评论(0) 推荐(1) 编辑
摘要:filter filter()函数用于过滤序列。filter()接收一个函数和一个序列。filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。filter()函数返回的是一个Iterator,也就是一个惰性序列,所以要强迫filter()完成计 阅读全文 »
posted @ 2018-11-27 10:41 刘-皇叔 阅读(456) 评论(0) 推荐(0) 编辑
摘要:map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。 例如: 输出: map()传入的第一个参数是f,即函数对象本身。由于结果r是一个Iterator,Iterator是惰性序列,因此通过list( 阅读全文 »
posted @ 2018-11-27 10:25 刘-皇叔 阅读(532) 评论(0) 推荐(0) 编辑
摘要:变量可以指向函数 函数本身也可以赋值给变量,即:变量可以指向函数: 输出: 函数名也是变量 对于abs()这个函数,完全可以把函数名abs看成变量,它指向一个可以计算绝对值的函数。 如果把abs指向其他对象: 输出: 高阶函数 一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数。 阅读全文 »
posted @ 2018-11-27 10:08 刘-皇叔 阅读(127) 评论(0) 推荐(0) 编辑
摘要:return语句 return [expression]语句退出一个函数,可选地将一个表达式传回给调用者。没有参数的return语句与return None相同。 变量范围 变量的范围决定了可以访问特定标识符的程序部分。Python中有两个变量的基本范围:全局变量局部变量 全局与局部变量 在函数体内 阅读全文 »
posted @ 2018-11-27 09:52 刘-皇叔 阅读(2181) 评论(0) 推荐(0) 编辑
摘要:匿名函数 python 使用 lambda 来创建匿名函数。 所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。 lambda 只是一个表达式,函数体比 def 简单很多。 lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。 lambda 阅读全文 »
posted @ 2018-11-27 09:46 刘-皇叔 阅读(296) 评论(0) 推荐(0) 编辑
摘要:break break语句用于提前终止当前循环。放弃循环后,直接执行循环块下一个语句。break语句可以在while和for循环中使用。如果使用嵌套循环,则break语句将停止执行最内层循环,并在块之后开始执行代码的下一行。 输出: continue continue语句将控制返回到当前循环的开头。 阅读全文 »
posted @ 2018-11-27 09:24 刘-皇叔 阅读(1137) 评论(0) 推荐(0) 编辑
摘要:语法 Python中的for语句能够遍历任何序列的项目,基本语法: for循环中使用else语句 如果else语句与for循环一起使用,则只有在for循环正常终止(而不是遇到break语句)时才执行else块。 搜索列表中的偶数的用法: 输出: range()函数 内置的函数range()是对一系列 阅读全文 »
posted @ 2018-11-27 08:54 刘-皇叔 阅读(3435) 评论(0) 推荐(0) 编辑
摘要:语法 Python中while语句的一般形式: 需要注意的是:在Python中没有do..while循环。 无限循环 如果条件从不变为FALSE,则循环变为无限循环。 输出: 在while循环中使用else语句 如果else语句与while循环一起使用,则在条件变为false时执行else语句。 输 阅读全文 »
posted @ 2018-11-27 08:42 刘-皇叔 阅读(388) 评论(0) 推荐(0) 编辑
摘要:参数组合 在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。 在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。 阅读全文 »
posted @ 2018-11-26 18:48 刘-皇叔 阅读(1282) 评论(0) 推荐(0) 编辑
摘要:可变参数 可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。 在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。 我们以数学题为例子,给定一组数字a,b,c……,请计算a2 + b2 + 阅读全文 »
posted @ 2018-11-26 18:24 刘-皇叔 阅读(2382) 评论(0) 推荐(1) 编辑
摘要:必选参数 位置参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。 修改后的power(x, n)函数有两个参数:x和n,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数x和n。 默认参数 默认参数可以简化函数的调用。设置默认参数时必选参数在前,默认参数在后。 有多个 阅读全文 »
posted @ 2018-11-26 16:45 刘-皇叔 阅读(1205) 评论(0) 推荐(0) 编辑
摘要:函数定义 简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择 阅读全文 »
posted @ 2018-11-26 15:54 刘-皇叔 阅读(5867) 评论(0) 推荐(0) 编辑
摘要:列表生成式(List Comprehensions)是用来创建 list 的生成式。 列表生成式: 列表生成式中使用if语句: 列表生成式中的多重循环: 列表生成式中同时迭代k和value: 输出: 阅读全文 »
posted @ 2018-11-26 11:33 刘-皇叔 阅读(271) 评论(0) 推荐(0) 编辑
摘要:generator 如果一个函数至少包含一个yield声明(当然它也可以包含其他yield或return),那么它就是一个generator。 yield和return都会让函数返回一些东西,区别在于,return声明彻底结束一个函数,而yield声明是暂停函数,保存它的所有状态,并且后续被调用后会 阅读全文 »
posted @ 2018-11-26 11:11 刘-皇叔 阅读(591) 评论(0) 推荐(0) 编辑
摘要:可迭代(Iterable)对象与迭代器(Iterator) 可迭代对象 凡是可以返回一个迭代器的对象都可称之为可迭代对象。 判断对象是否Iterable: 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式。 任何实现了__iter__和__next__()方法的对象都是迭代器,_ 阅读全文 »
posted @ 2018-11-26 09:58 刘-皇叔 阅读(1105) 评论(0) 推荐(0) 编辑
摘要:Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。 if 语句 一般形式如下所示: Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。 注意: 每个条件后面要使用冒号 :,表示接下来是满足条件 阅读全文 »
posted @ 2018-11-25 19:22 刘-皇叔 阅读(219) 评论(0) 推荐(0) 编辑
摘要:切片操作的区间是左闭右开。 阅读全文 »
posted @ 2018-11-23 16:02 刘-皇叔 阅读(2778) 评论(0) 推荐(0) 编辑
摘要:创建集合 集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。 集合间的运算 集合内置方法 为集合添加元素:add() 移除集合中的所有元素:clear() 拷贝 阅读全文 »
posted @ 2018-11-23 09:06 刘-皇叔 阅读(367) 评论(0) 推荐(0) 编辑
摘要:创建字典和访问字典 创建字典 字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}中。 键必须是唯一的,但值则不必。 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。 访问字典 阅读全文 »
posted @ 2018-11-22 12:57 刘-皇叔 阅读(351) 评论(0) 推荐(0) 编辑
摘要:创建元组和访问元组 创建元组 Python 的元组与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号,列表使用方括号。 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。 创建空元组: 创建只有一个元素的元组: 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算 阅读全文 »
posted @ 2018-11-22 12:49 刘-皇叔 阅读(362) 评论(0) 推荐(0) 编辑
摘要:创建列表与访问列表 创建列表 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。 列表的数据项不需要具有相同的类型 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。 访问列表 使用下标索引来访问列表中的值,索引从0开始。 也可以使用方括号的形式截取字符。 更 阅读全文 »
posted @ 2018-11-22 08:57 刘-皇叔 阅读(354) 评论(0) 推荐(0) 编辑
摘要:将字符串的第一个字符转换为大写:capitalize() 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数:count(str,beg=0,end=len(string)) bytes 对象的解码:bytes.decode(enco 阅读全文 »
posted @ 2018-11-19 14:50 刘-皇叔 阅读(297) 评论(0) 推荐(0) 编辑
摘要:格式化符号 格式化字符及其ASCII码:%c 格式化字符串:%s 格式化整数:%d 格式化无符号整型:%u 格式化无符八进制数:%o 格式化无符十六进制数:%x,%X 格式化浮点数:%f 科学计数法格式化浮点数:e,E 格式化操作辅助指令 左对齐:- 输出正数的符号:+ 显示数字前面的0而不是采用空 阅读全文 »
posted @ 2018-11-19 12:34 刘-皇叔 阅读(653) 评论(0) 推荐(0) 编辑
摘要:转义字符 反斜杠:\\ 单引号:\’ 双引号:\” 响铃:\a 退格(Backspace):\b 空:\000 换行:\n 纵向制表符:\v 横向制表符:\t 回车:\r 换页:\f 十六进制ASCII码形式转义输出:\xyy 字符串运算符 字符串连接:+ 重复输出字符串:* 索引形式获取字符串中的 阅读全文 »
posted @ 2018-11-19 11:34 刘-皇叔 阅读(1243) 评论(0) 推荐(0) 编辑
摘要:字符串创建与访问 创建字符串 字符串可以使用单引号''或双引号""来表示。 只要给变量赋值一个字符串变量就创建了一个字符串。 python中没有单字符类型,单字符也是使用字符串表示。 访问字符串 可以使用索引访问单个字符。 可以使用slice访问多个字符。 字符串编码 在Python3中,所有的字符 阅读全文 »
posted @ 2018-11-19 11:19 刘-皇叔 阅读(862) 评论(0) 推荐(0) 编辑
摘要:运算符优先级从高到低排列: 阅读全文 »
posted @ 2018-11-19 09:38 刘-皇叔 阅读(670) 评论(0) 推荐(0) 编辑
摘要:算术运算符 加:+ 减:- 乘:* 除:/ 取模:% 求幂:** 取整除:// 比较运算符 等于:== 不等于:!= 小于:< 大于:> 小于等于:<= 大于等于:>= 赋值运算符 简单赋值:= 加法赋值:+= 减法赋值:-= 乘法赋值:*= 除法赋值:/= 取模法赋值:%= 幂赋值:**= 取整除 阅读全文 »
posted @ 2018-11-19 08:53 刘-皇叔 阅读(215) 评论(0) 推荐(0) 编辑
摘要:给随机数生成种子,默认的种子是系统时钟:seed(x) 生成0-1.0之间的随机小数:random() 生成a-b之间的随机小数:uniform(a,b) 生成a-b之间的随机整数:randint(a,b) 生成a-b之间以c递增的数:randrange(a,b,c) 从列表中随机返回一个数:cho 阅读全文 »
posted @ 2018-11-17 09:39 刘-皇叔 阅读(1100) 评论(0) 推荐(0) 编辑
摘要:基本运算 加:x+y 减:x-y 乘:x*y 精确除法:x/y (结果是浮点类型,即使整除结果也是浮点类型) 地板除:x//y (结果只保留整数部分) 取余:x%y 幂:x**y,pow(x,y) 取正:+(x) 取负:-(x) 取绝对值:abs(x) 求商取余复合操作:divmod(x,y) ma 阅读全文 »
posted @ 2018-11-17 09:34 刘-皇叔 阅读(2189) 评论(0) 推荐(0) 编辑
摘要:基本数字类型 Python3 支持 int、float、bool、complex(复数)。 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。 浮点 阅读全文 »
posted @ 2018-11-17 09:05 刘-皇叔 阅读(509) 评论(0) 推荐(0) 编辑
摘要:变量 Python中的变量不需要声明。 变量在使用之前必须赋值,变量被赋值之后才被创建。 变量没有任何类型。 一个变量可以通过赋值指向不同类型的对象。 多个变量赋值 多个变量赋同一个值,赋值顺序由后向前: 同时指定不同变量不同的值: 标准数据类型 Python3 中有六个标准的数据类型: Numbe 阅读全文 »
posted @ 2018-11-17 08:41 刘-皇叔 阅读(387) 评论(0) 推荐(0) 编辑
摘要:import 在 python 用 import 或者 from...import 来导入相应的模块。 将整个模块(somemodule)导入,格式为: import somemodule 从某个模块中导入某个函数,格式为: from somemodule import somefunction 从 阅读全文 »
posted @ 2018-11-16 16:16 刘-皇叔 阅读(507) 评论(0) 推荐(0) 编辑
摘要:缩进 使用缩进来表示代码块,不需要使用大括号 {} 。同一个代码块的语句必须包含相同的缩进空格数。 多行语句 Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠(\)来实现多行语句: 在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(\),例如: 空行 空行与代码缩 阅读全文 »
posted @ 2018-11-16 15:57 刘-皇叔 阅读(2393) 评论(0) 推荐(0) 编辑
摘要:单行注释 使用# 多行注释 使用多个# 使用''' 使用""" 阅读全文 »
posted @ 2018-11-16 15:27 刘-皇叔 阅读(404) 评论(0) 推荐(0) 编辑
摘要:标识符 第一个字符必须是字母表中字母或下划线_ 。 标识符的其他的部分由字母、数字和下划线组成。 标识符对大小写敏感。 python保留字 保留字即关键字,不能把用作任何标识符。 Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字: 输出: 阅读全文 »
posted @ 2018-11-16 14:33 刘-皇叔 阅读(1400) 评论(0) 推荐(0) 编辑
摘要:表示方法 用双引号或者单引号括起来。 可以用变量表示,也可以直接使用。 格式化输出 整数:%d 浮点数:%f 十六进制数:%x 字符串:%s 若想输出%,需要使用%%的形式 字符串的基本操作函数 字符串中所有字母转换成大写:upper() 字符串中所有字母转换成小写:lower() 字符串中首字母大 阅读全文 »
posted @ 2018-11-16 12:02 刘-皇叔 阅读(103) 评论(0) 推荐(0) 编辑
摘要:输出 使用print可以直接输出任意类型数据: 需要输出空格时,使用逗号分开。 输入 输入使用input函数,输入的内容形式为字符串: 阅读全文 »
posted @ 2018-11-15 15:50 刘-皇叔 阅读(446) 评论(0) 推荐(0) 编辑
摘要:冯.诺依曼结构 计算机由五大部件组成:存储器、控制器、运算器、输入设备、输出设备。 计算机内部统一采用二进制形式保存数据和指令。 存储程序思想:程序由指令组成并和数据一起存放在存储器中, 机器按程序指定的逻辑顺序, 把指令从存储器中读出来并逐条执行, 从而自动完成程序描述的处理工作。 程序语言分类 阅读全文 »
posted @ 2018-11-15 15:33 刘-皇叔 阅读(570) 评论(0) 推荐(0) 编辑
摘要:一维到三维推广( 1D and 3D generalizations of models) 2D 卷积 你可能会输入一个 14×14 的图像,并使用一个 5×5 的过滤器进行卷积,接下来你看到了 14×14 图像是如何与 5×5 的过滤器进行卷积的,通过这个操作你会得到 10×10 的输出。 如果你 阅读全文 »
posted @ 2018-11-10 20:29 刘-皇叔 阅读(450) 评论(0) 推荐(0) 编辑
摘要:风格代价函数(Style cost function) 比如你有这样一张图片,现在你选择了某一层l,比如这一层去为图片的风格定义一个深度测量,现在我们要做的就是将图片的风格定义为l层中各个通道之间激活项的相关系数。 现在你将l层的激活项取出,这是个${n_H} \times {n_W} \times 阅读全文 »
posted @ 2018-11-10 19:32 刘-皇叔 阅读(735) 评论(0) 推荐(0) 编辑
摘要:内容代价函数(Content cost function) 风格迁移网络的代价函数有一个内容代价部分,还有一个风格代价部分。 J(G)=αJcontent(C,G)+βJstyle(S,G) 假如说,你用隐含层l来计算内容代价,如果l是个很小的数 阅读全文 »
posted @ 2018-11-10 16:16 刘-皇叔 阅读(384) 评论(0) 推荐(0) 编辑
摘要:代价函数(Cost function) 要构建一个神经风格迁移系统,让我们为生成的图像定义一个代价函数,你接下看到的是,通过最小化代价函数,你可以生成你想要的任何图像。 给你一个内容图像C,给定一个风格图片S,而你的目标是生成一个新图片G。为了实现神经风格迁移,你要做的是定义一个关于G的代价函数J用 阅读全文 »
posted @ 2018-11-10 15:52 刘-皇叔 阅读(404) 评论(0) 推荐(0) 编辑
摘要:什么是深度卷积网络 ? (What are deep ConvNets learning?) 假如你训练了一个卷积神经网络,是一个 Alexnet,轻量级网络,你希望将看到不同层之间隐藏单元的计算结果。 从第一层的隐藏单元开始,假设你遍历了训练集,然后找到那些使得单元激活最大化的一些图片,或者是图片 阅读全文 »
posted @ 2018-11-10 15:18 刘-皇叔 阅读(1843) 评论(0) 推荐(0) 编辑
摘要:什么是神经风格转换?( What is neural style transfer?) 使用 C来表示内容图像 ,S表示风格图像 ,G表示表示生成的图像。 第一幅图像C是斯坦福大学,S是梵高的星空,G是最终生成的图像。第一幅图像C是旧金山的金门大桥,S是毕加索的画,G是最终生成的图像。为了实现神经风 阅读全文 »
posted @ 2018-11-10 14:41 刘-皇叔 阅读(568) 评论(0) 推荐(0) 编辑
摘要:面部验证与二分类 (Face verification and binary classification) 另一个训练神经网络的方法是选取一对神经网络,选取 Siamese 网络,使其同时计算这些嵌入,比如说 128 维的嵌入,或者更高维,然后将其输入到逻辑回归单元,然后进行预测,如果是相同的人, 阅读全文 »
posted @ 2018-11-10 14:33 刘-皇叔 阅读(627) 评论(0) 推荐(0) 编辑
摘要:Triplet 损失 要想通过学习神经网络的参数来得到优质的人脸图片编码,方法之一就是定义三元组损失函数然后应用梯度下降。 为了应用三元组损失函数,你需要比较成对的图像,比如这个图片,为了学习网络的参数,你需要同时看几幅图片,对于前两张图片,你想要它们的编码相似,因为这是同一个人,对于后两张图片,你 阅读全文 »
posted @ 2018-11-10 11:36 刘-皇叔 阅读(3679) 评论(0) 推荐(3) 编辑
摘要:Siamese 网络( Siamese network) 你经常看到这样的卷积网络,输入图片x(1) ,然后通过一些列卷积,池化和全连接层,最终得到这样的特征向量,有时这个会被送进 softmax 单元来做分类,但是在这里不这样做,我们关注的是最终输出的向量,假设它是128维,它是由网 阅读全文 »
posted @ 2018-11-10 09:25 刘-皇叔 阅读(444) 评论(0) 推荐(0) 编辑
摘要:One-Shot 学习( One-shot learning) 人脸识别所面临的一个挑战就是你需要解决一次学习问题,这意味着在大多数人脸识别应用中,你需要通过单单一张图片或者单单一个人脸样例就能去识别这个人。所以在一次学习问题中,只能通过一个样本进行学习,以能够认出同一个人。大多数人脸识别系统都需要 阅读全文 »
posted @ 2018-11-10 09:04 刘-皇叔 阅读(1990) 评论(0) 推荐(1) 编辑
摘要:候选区域( Region proposals (Optional)) 滑动窗法方法使用训练过的分类器,在这些窗口中全部运行一遍,然后运行一个检测器,看看里面是否有车辆,行人和摩托车。现在你也可以运行一下卷积算法,这个算法的其中一个缺点是,它在显然没有任何对象的区域浪费时间。 编号1,2的区域显然没有 阅读全文 »
posted @ 2018-11-10 08:47 刘-皇叔 阅读(919) 评论(0) 推荐(0) 编辑
摘要:YOLO 算法(Putting it together: YOLO algorithm) 假设你要训练一个算法去检测三种对象,行人、汽车和摩托车,你还需要显式指定完整的背景类别。这里有 3 个类别标签,如果你要用两个 anchorbox,那么输出y就是 3×3×2×8,其中 3×3 表示 3×3 个 阅读全文 »
posted @ 2018-11-10 08:44 刘-皇叔 阅读(545) 评论(0) 推荐(0) 编辑
摘要:Anchor Boxes 假设你有这样一张图片,对于这个例子,我们继续使用 3×3 网格,注意行人的中点和汽车的中点几乎在同一个地方,两者都落入到同一个格子中。所以对于那个格子,如果y输出这个向量: 你可以检测这三个类别,行人、汽车和摩托车,它将无法输出检测结果,所以我必须从两个检测结果中选一个。 阅读全文 »
posted @ 2018-11-10 08:41 刘-皇叔 阅读(2171) 评论(0) 推荐(1) 编辑
摘要:非极大值抑制(Non-max suppression) 假设你需要在这张图片里检测行人和汽车,你可能会在上面放个 19×19 网格,理论上这辆车只有一个中点,所以它应该只被分配到一个格子里,左边的车子也只有一个中点,所以理论上应该只有一个格子做出有车的预测。 实践中当你运行对象分类和定位算法时,对于 阅读全文 »
posted @ 2018-11-08 22:51 刘-皇叔 阅读(446) 评论(0) 推荐(0) 编辑
摘要:交并比(Intersection over union) 交并比(loU)函数做的是计算两个边界框交集和并集之比。两个边界框的并集是这个区域,就是属于包含两个边界框区域(绿色阴影表示区域),而交集就是这个比较小的区域(橙色阴影表示区域),那么交并比就是交集的大小,这个橙色阴影面积,然后除以绿色阴影的 阅读全文 »
posted @ 2018-11-08 21:10 刘-皇叔 阅读(3279) 评论(0) 推荐(0) 编辑
摘要:Bounding Box 预测(Bounding box predictions) 滑动窗口法的卷积实现虽然效率更高,但仍然存在问题,不能输出最精准的边界框。 在滑动窗口法中,你取这些离散的位置集合,然后在它们上运行分类器,在这种情况下,这些边界框没有一个能完美匹配汽车位置。 其中一个能得到更精准边 阅读全文 »
posted @ 2018-11-08 19:54 刘-皇叔 阅读(1002) 评论(0) 推荐(0) 编辑
摘要:卷积的滑动窗口实现(Convolutional implementation of sliding windows) 假设对象检测算法输入一个 14×14×3 的图像,图像很小。在这里过滤器大小为 5×5,数量是 16, 14×14×3 的图像在过滤器处理之后映射为 10×10×16。然后通过参数为 阅读全文 »
posted @ 2018-11-08 19:48 刘-皇叔 阅读(4459) 评论(0) 推荐(0) 编辑
摘要:目标检测(Object detection) 假如你想构建一个汽车检测算法,步骤是,首先创建一个标签训练集,也就是x和y表示,你一开始可以使用适当剪切的图片,就是整张图片x几乎都被汽车占据,你可以照张照片,然后剪切,剪掉汽车以外的部分,使汽车居于中间位置,并基本占据整张图片。 有了这个标签训练集,你 阅读全文 »
posted @ 2018-11-08 19:44 刘-皇叔 阅读(511) 评论(0) 推荐(1) 编辑
摘要:特征点检测(Landmark detection) 假设你正在构建一个人脸识别应用,出于某种原因,你希望算法可以给出眼角的具体位置。 眼角坐标为(x,y) ,你可以让神经网络的最后一层多输出两个数字lx,ly,作为眼角的坐标值。如果你想知道两只眼睛的四个眼角的具体位置,那么从左到 阅读全文 »
posted @ 2018-11-07 22:05 刘-皇叔 阅读(467) 评论(0) 推荐(0) 编辑
摘要:目标定位( Object localization) 图片分类任务就是算法遍历图片,判断其中的对象是不是某个指定的类别,这就是图片分类。 定位分类问题。意味着我们不仅要用算法判断图片中是不是一辆汽车,还要在图片中标记出它的位置,用边框或红色方框把汽车圈起来。“定位”的意思是判断汽车在图片中的具体位置 阅读全文 »
posted @ 2018-11-07 21:11 刘-皇叔 阅读(1345) 评论(0) 推荐(0) 编辑
摘要:计算机视觉现状( The state of computer vision) 图像识别其实是如何看图片的问题,并且告诉你这张图是不是猫,而对象检测则是看一幅图,你画一个框,告诉你图片里的物体,比如汽车等等。因为获取边框的成本比标记对象的成本更高,所以我们进行对象检测的数据往往比图像识别数据要少。 当 阅读全文 »
posted @ 2018-11-07 21:03 刘-皇叔 阅读(558) 评论(0) 推荐(0) 编辑
摘要:数据扩充(Data augmentation) 大部分的计算机视觉任务使用很多的数据,所以数据扩充是经常使用的一种技巧来提高计算机视觉系统的表现。在实践中,更多的数据对大多数计算机视觉任务都有所帮助,不像其他领域,有时候得到充足的数据,但是效果并不怎么样。但是,当下在计算机视觉方面,计算机视觉的主要 阅读全文 »
posted @ 2018-11-07 20:37 刘-皇叔 阅读(685) 评论(0) 推荐(0) 编辑
摘要:迁移学习(Transfer Learning) 如果你要做一个计算机视觉的应用,相比于从头训练权重,或者说从随机初始化权重开始,如果你下载别人已经训练好网络结构的权重,你通常能够进展的相当快,用这个作为预训练,然后转换到你感兴趣的任务上。 举个例子,假如说你要建立一个猫咪检测器,用来检测你自己的宠物 阅读全文 »
posted @ 2018-11-07 20:34 刘-皇叔 阅读(344) 评论(0) 推荐(0) 编辑
摘要:Inception 网络( Inception network) 这是一个28×28×192 的输入,先通过一个 1×1的层,再通过一个 5×5 的层, 1×1 的层可能有 16 个通道,而 5×5 的层输出为 28×28×32,共32 个通道。 也可以过一个3×3 的卷积层,这样的话 3×3 的层 阅读全文 »
posted @ 2018-11-07 20:30 刘-皇叔 阅读(440) 评论(0) 推荐(0) 编辑
摘要:谷歌 Inception 网络简介( Inception network motivation) 构建卷积层时,你要决定过滤器的大小究竟是 1×1, 3×3 还是 5×5,或者要不要添加池化层。而 Inception 网络的作用就是代替你来决定,虽然网络架构因此变得更加复杂,但网络表现却非常好。 例 阅读全文 »
posted @ 2018-11-06 21:49 刘-皇叔 阅读(2234) 评论(0) 推荐(0) 编辑
摘要:网络中的网络以及 1×1 卷积( Network in Network and 1×1 convolutions) 过滤器为 1×1,这里是数字 2,输入一张 6×6×1 的图片,然后对它做卷积,起过滤器大小为 1×1×1,结果相当于把这个图片乘以数字 2,所以前三个单元格分别是 2、 4、 6 等 阅读全文 »
posted @ 2018-11-06 20:51 刘-皇叔 阅读(542) 评论(0) 推荐(0) 编辑
摘要:残差网络为什么有用?( Why ResNets work?) 一个网络深度越深,它在训练集上训练的效率就会有所减弱,这也是有时候我们不希望加深网络的原因。而事实并非如此,至少在训练 ResNets网络时,并非完全如此,举个例子: 设有一个大型神经网络,其输入为X,输出激活值a[l]阅读全文 »
posted @ 2018-11-06 20:45 刘-皇叔 阅读(8182) 评论(0) 推荐(1) 编辑
摘要:残差网络(Residual Networks (ResNets)) 非常非常深的神经网络是很难训练的,因为存在梯度消失和梯度爆炸问题。 跳跃连接( Skip connection),它可以从某一层网络层获取激活,然后迅速反馈给另外一层,甚至是神经网络的更深层。我们可以利用跳跃连接构建能够训练深度网络 阅读全文 »
posted @ 2018-11-06 20:38 刘-皇叔 阅读(682) 评论(0) 推荐(0) 编辑
摘要:经典网络(Classic networks) LeNet-5 假设你有一张 32×32×1 的图片, LeNet-5 可以识别图中的手写数字,比如像这样手写数字 7。 LeNet-5 是针对灰度图片训练的,所以图片的大小只有 32×32×1。 使用 6 个 5×5的过滤器,步幅为 1。由于使用了 6 阅读全文 »
posted @ 2018-11-06 20:33 刘-皇叔 阅读(435) 评论(0) 推荐(0) 编辑
摘要:为什么使用卷积?(Why convolutions?) 和只用全连接层相比,卷积层的两个主要优势在于参数共享和稀疏连接: 假设有一张 32×32×3 维度的图片,假设用了 6 个大小为 5×5 的过滤器,输出维度为 28×28×6。32×32×3=3072, 28×28×6=4704。我们构建一个神 阅读全文 »
posted @ 2018-11-05 22:47 刘-皇叔 阅读(1090) 评论(0) 推荐(0) 编辑
摘要:卷积神经网络示例 (Convolutional neural network example) 假设,有一张大小为 32×32×3 的输入图片,这是一张 RGB 模式的图片,你想做手写体数字识别。 32×32×3 的 RGB 图片中含有某个数字,比如 7,你想识别它是从 0-9 这 10 个字中的哪 阅读全文 »
posted @ 2018-11-05 21:55 刘-皇叔 阅读(1099) 评论(0) 推荐(0) 编辑
摘要:池化层(Pooling layers) 除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性。 假如输入是一个 4×4 矩阵,用到的池化类型是最大池化( max pooling)。执行最大池化的树池是一个 2×2 矩阵。执行过程非常简单,把 4×4 的输入拆 阅读全文 »
posted @ 2018-11-05 13:46 刘-皇叔 阅读(5656) 评论(0) 推荐(0) 编辑
摘要:简单卷积网络示例 (A simple convolution network example) 假设你有一张图片,你想做图片分类或图片识别,把这张图片输入定义为,然后辨别图片中有没有猫,用 0 或 1 表示,这是一个分类问题,我们来构建适用于这项任务的卷积神经网络。针对这个示例,我用了一张比较小的图 阅读全文 »
posted @ 2018-11-04 21:31 刘-皇叔 阅读(975) 评论(0) 推荐(0) 编辑
摘要:单层卷积网络( One layer of a convolutional network) 假设使用第一个过滤器进行卷积,得到第一个 4×4 矩阵。使用第二个过滤器进行卷积得到另外一个 4×4 矩阵。 最终各自形成一个卷积神经网络层,然后增加偏差,它是一个实数,通过 Python 的广播机制给这 1 阅读全文 »
posted @ 2018-11-04 20:54 刘-皇叔 阅读(1013) 评论(0) 推荐(0) 编辑
摘要:三维卷积(Convolutions over volumes) 假如说你不仅想检测灰度图像的特征,也想检测 RGB 彩色图像的特征。彩色图像如果是 6×6×3,这里的 3指的是三个颜色通道,你可以把它想象成三个 6×6图像的堆叠。为了检测图像的边缘或者其他的特征,不是把它跟原来的 3×3 的过滤器做 阅读全文 »
posted @ 2018-11-04 19:13 刘-皇叔 阅读(5362) 评论(0) 推荐(1) 编辑
摘要:卷积步长( Strided convolutions) 卷积中的步幅是另一个构建卷积神经网络的基本操作。 如果你想用 3×3 的过滤器卷积这个 7×7 的图像,和之前不同的是,我们把步幅设置成了2。你还和之前一样取左上方的 3×3 区域的元素的乘积,再加起来,最后结果为 91。 只是之前我们移动蓝框 阅读全文 »
posted @ 2018-11-04 16:17 刘-皇叔 阅读(7067) 评论(0) 推荐(0) 编辑
摘要:Padding 如果你用一个 3×3 的过滤器卷积一个 6×6 的图像,你最后会得到一个 4×4 的输出,也就是一个 4×4 矩阵。那是因为你的 3×3 过滤器在 6×6 矩阵中,只可能有 4×4 种可能的位置。这背后的数学解释是,如果我们有一个n×n的图像,用f×f的过滤器做卷积,那么输出的维度就 阅读全文 »
posted @ 2018-11-04 15:42 刘-皇叔 阅读(897) 评论(0) 推荐(0) 编辑
摘要:更多边缘检测内容( More edge detection) 区分正边和负边,这实际就是由亮到暗与由暗到亮的区别,也就是边缘的过渡: 这张 6×6 的图片,左边较亮,而右边较暗,将它与垂直边缘检测滤波器进行卷积,检测结果就显示在了右边这幅图的中间部分。 接下来的矩阵颜色被翻转了,变成了左边比较暗,而 阅读全文 »
posted @ 2018-11-04 15:39 刘-皇叔 阅读(683) 评论(0) 推荐(0) 编辑
摘要:边缘检测示例( Edge detection example) 在人脸识别过程中神经网络的前几层是如何检测边缘的,然后,后面的层有可能检测到物体的部分区域,更靠后的一些层可能检测到完整的物体。 这是一个 6×6 的灰度图像。因为是灰度图像,所以它是 6×6×1 的矩阵: 为了检测图像中的垂直边缘,你 阅读全文 »
posted @ 2018-11-04 15:34 刘-皇叔 阅读(1623) 评论(0) 推荐(0) 编辑
摘要:计算机视觉( Computer vision) 计算机视觉时要面临一个挑战,就是数据的输入可能会非常大。 假设操作的都是 64×64 的小图片,实际上,它的数据量是 64×64×3,因为每张图片都有 3 个颜色通道。如果计算一下的话,可得知数据量为 12288,所以我们的特征向量维度为 12288。 阅读全文 »
posted @ 2018-11-04 15:28 刘-皇叔 阅读(710) 评论(0) 推荐(0) 编辑
摘要:是否要使用端到端的深度学习?(Whether to use end to-end learning?) 假设你正在搭建一个机器学习系统,你要决定是否使用端对端方法,我们来看看端到端深度学习的一些优缺点,这样你就可以根据一些准则,判断你的应用程序是否有希望使用端到端方法。 优点: 端到端学习真的只是让 阅读全文 »
posted @ 2018-11-04 11:37 刘-皇叔 阅读(1031) 评论(0) 推荐(0) 编辑
摘要:什么是端到端的深度学习?(What is end-to-end deep learning?) 端到端学习到底是什么呢?简而言之, 以前有一些数据处理系统或者学习系统,它们需要多个阶段的处理。那么端到端深度学习就是忽略所有这些不同的阶段,用单个神经网络代替它。 以语音识别为例,你的目标是输入x,比如 阅读全文 »
posted @ 2018-11-04 11:34 刘-皇叔 阅读(8276) 评论(0) 推荐(0) 编辑
摘要:多任务学习(Multi-task learning) 在迁移学习中,你的步骤是串行的,你从任务A里学习只是然后迁移到任务B。在多任务学习中,你是同时开始学习的,试图让单个神经网络同时做几件事情,然后希望这里每个任务都能帮到其他所有任务。 假设你在研发无人驾驶车辆,那么你的无人驾驶车可能需要同时检测不 阅读全文 »
posted @ 2018-11-04 11:33 刘-皇叔 阅读(1142) 评论(0) 推荐(0) 编辑
摘要:迁移学习(Transfer learning) 深度学习中,最强大的理念之一就是,有的时候神经网络可以从一个任务中习得知识,并将这些知识应用到另一个独立的任务中。所以例如,也许你已经训练好一个神经网络,能够识别像猫这样的对象,然后使用那些知识,或者部分习得的知识去帮助您更好地阅读 x 射线扫描图,这 阅读全文 »
posted @ 2018-11-04 11:30 刘-皇叔 阅读(431) 评论(0) 推荐(0) 编辑
摘要:定位数据不匹配(Addressing data mismatch) 数据不匹配的问题没有完全系统的解决方案,但我们可以看看一些可以尝试的事情。如果我发现有严重的数据不匹配问题,我通常会亲自做错误分析,尝试了解训练集和开发测试集的具体差异。技术上,为了避免对测试集过拟合,要做错误分析,你应该人工去看开 阅读全文 »
posted @ 2018-11-04 11:27 刘-皇叔 阅读(408) 评论(0) 推荐(0) 编辑
摘要:不匹配数据划分的偏差和方差(Bias and Variance with mismatched data distributions) 我们继续用猫分类器为例,我们说人类在这个任务上能做到几乎完美,所以贝叶斯错误率或者说贝叶斯最优错误率,我们知道这个问题里几乎是 0%。所以要进行错误率分析,你通常需 阅读全文 »
posted @ 2018-11-04 11:24 刘-皇叔 阅读(445) 评论(0) 推荐(0) 编辑
摘要:在不同的划分上进行训练并测试( Training and testing on different distributions) 在深度学习时代,越来越多的团队都用来自和开发集、测试集分布不同的数据来训练,这里有一些微妙的地方,一些最佳做法来处理训练集和测试集存在差异的情况,我们来看看。 假设你在开 阅读全文 »
posted @ 2018-11-04 11:21 刘-皇叔 阅读(338) 评论(0) 推荐(0) 编辑
摘要:快速搭建你的第一个系统,并进行迭代( Build your first system quickly, then iterate) 如果你正在开发全新的机器学习应用,我通常会给你这样的建议,你应该尽快建立你的第一个系统原型,然后快速迭代。 所以我希望这些策略有帮助,如果你将机器学习算法应用到新的应用 阅读全文 »
posted @ 2018-11-04 11:18 刘-皇叔 阅读(345) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示