深度学习入门之前置知识
python安装
网上教程很多,就不多说了
python解释器
就是算术运算,数据类型,变量,列表,字典,布尔型,if语句,for语句以及函数这些
python脚本文件
想进行一连串处理时,可以将python程序保存为文件,然后集中的运行该文件
保存为文件
比如说建一个test.py文件
终端运行,移到test.py所在的位置下,然后将test.py文件名作为参数,运行python命令
我个人觉得还是走vscode里运行方便一点
类
int和str等数据类型都是“内置”的数据类型,现在来定义新的类。
python中使用class关键字来定义类,类要遵循以下格式(模板)
class 类名:
def _init__(self,参数,...): # 构造函数
...
def 方法名1(self,参数,...): # 方法1
...
def 方法名2(self,参数,...): # 方法2
...
这里的__init__是进行初始化的方法,也成为构造函数,只有生成类的实例时被调用一次
举个例子
class Man:
def __init__(self,name):
self.name = name
print("Initialized")
def hello(self):
print("Hello "+ self.name + "!")
def goodbye(self):
print("Good-bye " + self.name + "!")
m = Man("Peter")
m.hello()
m.goodbye()
运行终端输出
这里定义了一个新类Man。上面类Man生成了实例(对象)m。
类Man的构造函数(初始化方法)会接收参数name,然后用这个参数初始化实例变量self.name。实例变量是存储在各个示例中的变量。python中可以像self.name这样,通过在self后面添加属性名来生成或访问实例变量。
numpy
在深度学习实现中,经常出现矩阵和数组的计算,numpy.array提供了很多便捷的方法
导入numpy
numpy是外部库,,首先要导入
import numpy as np
写成这样就可通过np来调用
生成numpy数组
需要使用np.array()方法。np.array()接收python列表作为参数,生成numpy数组(numpy.ndarray)
import numpy as np
x = np.array([1.0,2.0,3.0])
print(x)
print(type(x))
numpy的算术运算
import numpy as np
x = np.array([1.0,2.0,3.0])
y = np.array([2.0,4.0,6.0])
print(x + y)
print(x * y)
print(x / y)
元素个数要相同,不然会报错
numpy的N维数组
numpy不仅可以生成一维数组,也可以生成多维数组
import numpy as np
A = np.array([[1,2],[3,4]])
print(A)
print(A.shape)
print(A.dtype)
这里就生成了一个2*2的矩阵A。矩阵A的形状可以通过shape查看,矩阵元素的数据类型可以通过dtype查看
算术运算和之前的一样,在相同形状的矩阵内以对应元素的方式进行,也可以通过标量对矩阵进行算术运行
广播
import numpy as np
A = np.array([[1,2],[3,4]])
print(A)
print(A * 10)
22的矩阵A与标量10进行乘法运算。中间过程就是标量10被拓展成22的形状,再与矩阵A进行乘法运算,这个功能就叫广播
访问元素
元素的索引从0开始,对各个元素的访问可按如下方式进行
import numpy as np
A = np.array([[24,13],[53,18],[36,21]])
print(A)
print(A[0]) # 第0行
print(A[0][1]) # (0,1)的元素
也可以使用for语句来访问各个元素
for row in A:
print(row)
除了索引操作,还可以使用数组访问各个元素
import numpy as np
A = np.array([[24,13],[53,18],[36,21]])
A = A.flatten() # 将x转换为一维数组
print(A)
print(A[np.array([0,2,4])]) # 获取索引为0,2,4的元素
运用这个标记法,可以获取满足一定条件的元素
import numpy as np
A = np.array([[24,13],[53,18],[36,21]])
A = A.flatten() # 将x转换为一维数组
print(A > 15)
print(A[A > 15])
matplotlib
图形的绘制和数据的可视化十分重要,matplotlib就是用于绘制图形的库
绘制sin函数
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.arange(0,6,0.1) # 以0.1为单位,生成0到6的数据
y = np.sin(x)
# 绘制图形
plt.plot(x,y)
plt.show()
使用numpy的arange方法生成[0,0.1,0.2,…,5.8,5.9]的数据,将其设为x,对x的各个元素,应用numpy的sin函数np.sin(),将x,y的数据传给plt.plot方法,然后绘制图形,最后通过plt.show()显示图形。
pyplot的功能
追加cos函数,添加标题和x轴标签名等功能
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.arange(0,6,0.1) # 以0.1为单位,生成0到6的数据
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制图形
plt.plot(x,y1,label="sin")
plt.plot(x,y2,linestyle="--",label="cos") # 用虚线绘制
plt.xlabel("x") # x轴标签
plt.ylabel("y") # y轴标签
plt.title('sin & cos') # 标题
plt.legend()
plt.show()
显示图像
pyplot中还提供了用于显示图像的方法imshow(),可以使用imread()
import matplotlib.pyplot as plt
from matplotlib.image import imread
img = imread('lena.jpg') # 读入图像
plt.imshow(img)
plt.show()
踩坑记录
报错1
AttributeError: module ‘numpy’ has no attribute ‘array’
是说在numpy文件中没找到array属性,这可能是将文件名命名为代码中使用过的第三方库的名称。然后代码编译的时候,会读取到编写的这个程序进行执行,发现没有相关的属性,进而报错。
报错2
使用type方法没有结果
命令行交互式你输入则解释一句,并直接输出运行结果
脚本中则需要使用print
print(type(id))
报错3
TypeError: Field elements must be 2- or 3-tuples, got ‘3’
np.array([1,2],[3,4])写法形式错误,应该还有一个中括号np.array([[1,2],[3,4]])
- 点赞
- 收藏
- 关注作者
评论(0)