包头不包尾
包头不包尾
写代码开发的工作,做为一场战争的话,
写出来的代码,相当于士兵与武器
故,数据结构与算法是一名程序开发人员的必备的基本功,不是一
算法,就是让计算机把问题解决出来,计算的方法
算法是计算机处理信息的本质,因为计算机程序本质是一个算法来告诉计算机确切的步骤来执行一个指定的任务。
一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用
算法是独立存在的一种解决问题的方法与思想
对于算法而言,实现的语言并不重要,重要的是思想。
算法可以有不同的语言描述实现版本(如C描述,C++描述,python描述等),我们现在是在python语言进行描述实现
算法的五大特性:
输入:算法具有0个或多个输入
输出:算法至少有1个或多个输出
有穷性:算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在接受的时间内完成
确定性:算法中的每一步都有确定的含义,不会出现二义性
可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成
_eq()_ 比较对象值
python是非常适合做超大数的计算,而不会造成“整数溢出”,这也是pytthon特别适合科学运算的特点
1、整型
数字:加法,减法,乘法,浮点数除法,整数除法,模(取余),幂
2、浮点型
3、布尔型
4、字符串型
内置的数据类型
divmod(13,3)
python里面,是不支持常量的
归纳式迁移学习(Inductive Transfer Learning)最常用,其中又分为两类:Multi task learning、Self-taught learning。Multi task learning是源域和目标域都有标签,Self-taught learning是源域没标签,目标域有标签。
多任务迁移学习可以将自编码器中的encoder部分拿出来用,所谓自编码器(auto encoder)就是自己学自己,端对端的对象都是自己,从而训练出一对表达能力很强的encoder和decoder。
堆与栈的本质,需要与java一起理解
python是动态类型语言
变量不需要显式声明类型,根据变量引用的对象,python解释器自动确定数据类型
每个对象,都是有类型的,只支持该类型支持的操作
1、ctrl +s 保存代码
2、“四个空格”表示一个缩进
目前,常用的编辑器一般设置成:tab制表符就是4个空格
写注释的习惯
python官方,有写代码的风格
requires_grad设置为False
1. 辨别named_parameters和parameters
net = nn.Linear(2, 3) print("以下是named_parameters") for i, j in net.named_parameters(): print(i, j) print("——————————我是一条分割线——————————") print("以下是parameters") for q in net.parameters(): print(q)
输出结果:
以下是named_parameters
weight Parameter containing:
tensor([[-0.6697, 0.2564],
[-0.1950, -0.2708],
[-0.5232, -0.0067]], requires_grad=True)
bias Parameter containing:
tensor([-0.5722, 0.1416, 0.4618], requires_grad=True)
——————————我是一条分割线——————————
以下是parameters
Parameter containing:
tensor([[-0.6697, 0.2564],
[-0.1950, -0.2708],
[-0.5232, -0.0067]], requires_grad=True)
Parameter containing:
tensor([-0.5722, 0.1416, 0.4618], requires_grad=True)
2. 如何固定参数
for p in net.parameters(): p.requires_grad = False for k, v in net.named_parameters(): if v.requires_grad: print(k, v)
无输出
fine turning:迁移学习的一种,固定特征抽取的参数,仅修改分类器FC layer的参数,属于以下分类中的第3种。
迁移学习(以VGG为例):
1. pretrained VGG特征抽取器+删除掉原来VGG中的FC layer分类器,用机器学习分类器(SVM/贝叶斯)来替换
2. pretrained VGG特征抽取器+修改 FC layer(比如将原1000分类的改为100分类)
注:第2种方法中特征抽取器和FC layer的参数都在更新
3. 固定pretrained VGG特征抽取器+修改 FC layer
注:第3种方法中只有FC layer参数在更新,即默认特征抽取已经被训练的很好了
4. 多个不同的pretrained特征抽取器+FC layer(使用的不多)
开发环境,英文是IDE
Integrated Development Environment 集成开发环境
核心内容,都是python.exe的解释器
1、对于初学者,不要纠结是哪个开发环境,只要心理平静,都可以做到消化吸引
2、不同的IDE核心,都是Python.exe的解释器
IDIE
Pycharm
wingIDE
Eclipse
IPython
Python是一种解释型,面向对象的语言。
随着人工智能越来越热,python越来越热
python的特点:
1、可读性强:
2、简洁、简洁、简洁
研究证明,程序号每天可编写的有效代码数是有限的。完成同样功能能只用一半的代码,其实就是提高了一倍的生产率。
Python是由C语言开发,但是不再有C语言中指针等复杂数据类型,
Python的简洁性让开发难度和代码幅度降低,开发任务大大简化。程序号再也不需要关注复杂的语法,而是关注任务本身
程序员再也不需要关注复杂的语法,而是关注任务本身
1、java
编大多数的高级语音,是面向对象的
java与python都是跨平台的语言
python会被编译成与操作系统相关的二进制代码,然后再解释执行。这种方式和java类似,大大提高了执行速度,也实现了跨平台
java虚拟机,也是可以编译成与操作系统相关的二进制代码
6.丰富的库(丰富的标准库,多种多样的扩展库)
7.可扩展性。可嵌入到C到C++语言,
怎么理解为胶水式语言呢????
python是怎么与C整合呢
什么时候不应该用Python
1、Python解释执行,性能较低
Python版本与兼容问题解决方案
Python3:
2008年发布。Python3有个较大的提升,不兼容Python2.
所以学习从Python3开始,才是未来的主流。
使用C语言的解释器,效率最高。
Max pooling 采样取各样区内最大
avg pooling 取平均
regression 找到函数输出
stride 步长
padding 填充0
layer 层
PASCAL VOL
MS COCO
O' = O - learningrate*gradient
a.shape