《深度学习入门》笔记(一)

第一章、python入门

第一章python入门较为基础简单,这里对于python的介绍、安装等内容不进行赘述,简要介绍下NumPy及Maplotlib需要注意的地方。
1、NumPy
NumPy的数组类(nump.array)中为深度学习中,经常出现的数组及矩阵运算提供了很多便捷的方法。
①由于NumPy是外部库,所以首先导入库:

import numpy as np

其中,as的意思是将numpy作为np导入,相当于起了别名。之后NumPy相关方法均可以通过np来调用。
②生成NumPy数组
使用np.array()方法生成NumPy数组,参数为Python列表,使用方法如下:

>>> x = np.array([1.0, 2.0, 3.0])
>>> print(x)
[ 1. 2. 3.]
>>> type(x)
<class 'numpy.ndarray'>

附:在此介绍使用numpy随机生成指定大小矩阵的方法,在随后多用于初始化权重矩阵。
1、numpy.random.rand(d0,d1,…,dn)

rand函数根据给定维度生成[0,1)之间的数据,包含0,不包含1
dn表格每个维度
返回值为指定维度的array

np.random.rand(4,2)

结果如下:

array([[ 0.02173903,  0.44376568],
       [ 0.25309942,  0.85259262],
       [ 0.56465709,  0.95135013],
       [ 0.14145746,  0.55389458]])

2、numpy.random.randn(d0,d1,…,dn)

randn函数返回一个或一组样本,具有标准正态分布。
dn表格每个维度
返回值为指定维度的array
样例如下:

np.random.randn() # 当没有参数时,返回单个数据
-1.1241580894939212
np.random.randn(4,3,2)
array([[[ 1.27820764,  0.92479163],
        [-0.15151257,  1.3428253 ],
        [-1.30948998,  0.15493686]],
 
       [[-1.49645411, -0.27724089],
        [ 0.71590275,  0.81377671],
        [-0.71833341,  1.61637676]],
 
       [[ 0.52486563, -1.7345101 ],
        [ 1.24456943, -0.10902915],
        [ 1.27292735, -0.00926068]],
 
       [[ 0.88303   ,  0.46116413],
        [ 0.13305507,  2.44968809],
        [-0.73132153, -0.88586716]]])

③numpy的算术问题

>>> x = np.array([1.0, 2.0, 3.0])
>>> y = np.array([2.0, 4.0, 6.0])
>>> x + y # 对应元素的加法
array([ 3., 6., 9.])
>>> x - y
array([ -1., -2., -3.])
>>> x * y # element-wise product
array([ 2., 8., 18.])
>>> x / y
array([ 0.5, 0.5, 0.5])

这里需要注意的是,数组x和数组y的元素个数是相同的,如果元素个数不相等,程序会报错。此外,numpy数组的各个元素可以和标量之间进行计算,这个功能称为广播,在后面运算时常会用到。
下面通过例子来看一下广播:

>>> A = np.array([[1, 2], [3, 4]])
>>> B = np.array([10, 20])
>>> A * B
array([[ 10, 40],
 [ 30, 80]])

图示:
《深度学习入门》笔记(一)_第1张图片
正是因为numpy有广播功能,所以不同形状的数组之间也可以顺利地进行运算。
2、Matplotlib
在学习过程中,图形的绘制和数据的可视化非常重要。
例1:绘制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()显示图形。运行上述代码后,就会显示图sin。
《深度学习入门》笔记(一)_第2张图片
例2:尝试使用pyplot的添加标题和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()

在代码中plot画时定义label参数后,通过legend方法可以添加标签。
《深度学习入门》笔记(一)_第3张图片

你可能感兴趣的:(深度学习系列笔记,深度学习)