以熟练使用Pytorch完成深度学习模型为目标,简单介绍Pytorch涉及到的Python基础(Python其它知识可以在遇到后再学习,先动手)。喜欢小编的可以加小编的Q群867067945,进群可以领取免费的学习资料哦,群里还有专业的大佬给你解答你的问题
这篇教程并不涉及Python的复杂方法,教程的结构如下:
1.Python实例
2.Python基础
- 2.1 Python数据类型
- 2.2 Python语法
3.Numpy
4.类
5.文件读写
6.错误分析
3.Numpy
3.1Numpy中主要是数组array的计算,数组是一个包含同类型数据的对象,数组有点类似于之前所述的列表。
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=a61c2425a419ebc4c0787691b227cf79/b2086e061d950a7bdd2555841dd162d9f2d3c95b.jpg)
3.2 数组查询与切片是一个比较重要,且常用的方法
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=a4ddd946b8c379317d688621dbc5b784/1724b899a9014c08b22b33e51d7b02087bf4f45b.jpg)
3.3 获取Numpy数组的属性
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=7322658becedab6474724dc8c737af81/d97f9e2f07082838c81dc754af99a9014c08f15b.jpg)
3.4 维数操作
在深度学习中用到的tensor张量与numpy数组比较类似,会涉及到比较多维数上的操作,需要对维数有个比较深刻的认识,这里要注意增加维数与挤压维数比较常用。
如果数组的shape为(5,3,4,5)表示第一维有5个,第二维有3个,第三维有4个,第四维有5个。
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=8c828a7f5cfbfbeddc59367748f1f78e/79d6277f9e2f0708fe153140fe24b899a901f25b.jpg)
3.5 数组条件查询
在图像处理或numpy使用中比较常用的方法是对数组进行条件查询,并对满足条件的值修改。
3.5.1 对数组中满足条件的位置赋值,支持多条件查询
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=a784ac56d8fc1e17fdbf8c397a91f67c/85f40ad162d9f2d3b3013fafbeec8a136327cc5b.jpg)
3.5.1 查找满足条件的数组的位置,用np.where(),同样可以多条件查询.
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=71ee57411d55b3199cf9827d73a88286/57014c086e061d95d4562c786cf40ad162d9ca5b.jpg)
这里np.where返回的是一个x,y坐标数组,如上图表示满足条件的位置在[0,0],[0,2],[1,2]三个点。
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=5234c5b4a04543a9f51bfac42e168a7b/e3950a7b02087bf4ebfc4ca9e5d3572c11dfcf5b.jpg)
练习1.a = np.array([1,2,3.2],dtype=np.int),a等于什么?提示:数据类型与a中不太一样。
练习2. 有两个数组a,b,令a与b的元素中相同且为0的元素更改为255.
a = np.array([[1,0,3],[4,0,6]]), b = np.array([[0,2,3],[4,0,6]])
4.类
先看一下类相关的一些简单描述。
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=ea789d69fcc4b7453494b71efffd1e78/90061d950a7b02089bd924a175d9f2d3572cc85b.jpg)
4.1类的创建与实例化
这里类可以理解为一个模板,比如人是一个类。实例化是用模板创建了一个具体的对象,比如“小明”就是类实例化的一个对象,且有了这个模板后我可以轻而易举的创建无数个实例对象,比如女娲以人类为模板创建了无数的具体的人。
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=22c08514144f78f0800b9afb49300a83/f90828381f30e92461b487715b086e061d95f75b.jpg)
4.2初始化
创建了人类这个模板后,不能是空的,我希望他能有名字,有性别,有出生日期,所以需要再每次实例化一个人的时候赋予他这些属性,就有了初始化。
注意初始化是在每次实例化的时候都会运行的函数。函数名不能自定义,且self表示实例本身,比如实例化了xiaoming后,xiaoming这个对象里面self就表示xiaoming.
def init(self,参数1,参数2…):
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=93d6d59dbc64034f0fcdc20e9fc27980/602f070828381f30310996e9be014c086e06f05b.jpg)
4.3类的属性与实例属性
类的属性或者类的方法调用都是用英文句号“.”表示。
类的属性与实例属性的区别在于它们有没有self.如下图所示,num是类属性,name是实例属性。
类的属性在不实例化也可以调用,但是实例属性只能在实例化后给实例对象调用,因为实例属性在__init__函数中,只有实例化才会运行该函数。
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=d8625680e036afc30e0c3f6d8318eb85/e130e924b899a901972540760a950a7b0208f55b.jpg)
4.4类的方法
类的方法与属性一样,也有类方法与实例方法,一般用到的都是实例方法,所以这里只讲实例方法。
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=54686dd99526cffc692abfba89004a7d/fc087bf40ad162d911fe795c06dfa9ec8a13cd5b.jpg)
4.5类的继承
有时候需要复用一个类A的大多数方法与属性,这时候就可以通过继承A来实现。
4.5.1 父类的定义与普通类的定义一致
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=71492d3f6ff0f736d8fe4c093a54b382/d6381f30e924b899732c627879061d950a7bf65b.jpg)
4.5.2 子类
(1)子类的定义与普通类的定义有所区别,class 子类名(父类名):
(2)在初始化时需要初始化父类的初始化函数。
(3)子类可以调用父类的方法与属性。
![技术分享图片](http://tiebapic.baidu.com/forum/w%3D580/sign=2a1b81b36e310a55c424defc87444387/4699a9014c086e06c0b8240b15087bf40ad1cb5b.jpg)
喜欢小编的可以加小编的Q群867067945,进群可以领取免费的学习资料哦,群里还有专业的大佬给你解答你的问题