《Deep Learning from Scratch》鱼书学习笔记 3-2 激活函数

第3章 神经网络

3.2.2 阶跃函数的实现

import numpy as np
def step_function(x):
    y = x > 0
    return y.astype(np.int)

x = np.array([-1.0, 1.0, 2.0])
x
array([-1.,  1.,  2.])
y = step_function(x)
y
array([0, 1, 1])
import matplotlib.pylab as plt
x = np.arange(-5.0, 5.0, 0.1)  # 定义一个-5到5的等差数列0.1的数据
y = step_function(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1) # 指定y轴的范围
plt.show()

《Deep Learning from Scratch》鱼书学习笔记 3-2 激活函数

3.2.4 sigmoid函数的实现

def sigmoid(x):
    return 1 / (1 + np.exp(-x))
x = np.array([-1.0, 1.0, 2.0])
x
array([-1.,  1.,  2.])
y = sigmoid(x)
y
array([0.26894142, 0.73105858, 0.88079708])
x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1) # 指定y轴的范围
plt.show()

《Deep Learning from Scratch》鱼书学习笔记 3-2 激活函数

3.2.5 sigmoid 函数和阶跃函数的比较

x = np.arange(-5.0, 5.0, 0.1)
y1 = sigmoid(x)
y2 = step_function(x)
plt.plot(x, y1)
plt.plot(x, y2)
plt.ylim(-0.1, 1.1) # 指定y轴的范围
plt.show()

《Deep Learning from Scratch》鱼书学习笔记 3-2 激活函数

相对于阶跃函数只能返回0 或1,sigmoid 函数可以返回0.731 . . .、0.880 . . . 等实数(这一点和刚才的平滑性有关)

两者的结构均是“输入小时,输出接近0(为0);随着输入增大,输出向1 靠近(变成1)”。

不管输入信号有多小,或者有多大,输出信号的值都在0 到1 之间。

3.2.7 ReLU函数

def relu(x):
    return np.maximum(0, x)  # maximum函数会从输入的数值中选择较大的那个值进行输出
y = relu(x)
plt.plot(x, y)
plt.show()

《Deep Learning from Scratch》鱼书学习笔记 3-2 激活函数

3.3 多维数组的运算

如果掌握了NumPy多维数组的运算,就可以高效地实现神经网络。因此,本节将介绍NumPy多维数组的运算,然后再进行神经网络的实现。

3.3.2 矩阵乘法

A = np.array([[1,2], [3,4]])
A.shape
(2, 2)
B = np.array([[5,6], [7,8]])
B.shape
(2, 2)
np.dot(A, B)  # np.dot()接收两个NumPy数组作为参数,并返回数组的乘积
array([[19, 22],
       [43, 50]])
A = np.array([[1,2], [3, 4], [5,6]])
B = np.array([7,8])
np.dot(A, B)
array([23, 53, 83])
B2 = np.array([[7,8], [7, 8]])
np.dot(A, B2)
array([[21, 24],
       [49, 56],
       [77, 88]])

注意:np.array()方法按列表的元素(可以为单个数值或者列表)的按列进行排列
如:A = np.array([[1,2], [3, 4], [5,6]]) 按照列表[1, 2]…依次按列组合
B = np.array([7,8])按照数值7…依次按列组合


上一篇:deep learning on flink 环境配置


下一篇:32.3 按之字形顺序打印二叉树