非numpy版的阶跃函数

In [1]:
def fn(x):
    if x<=0:
        return 0
    if x>0:
        return 1

numpy版的阶跃函数

In [11]:
def step_function(x:np.array):
    y = x > 0
    return y.astype(np.int)
print(step_function(np.arange(-0.5,0.5,0.1)))
[0 0 0 0 0 0 1 1 1 1]

以上使用了NumPy中的“技巧”,对x这个NumPy数组进行了不等号运算,由于最后的y在经过了不等号运算后为bool类型的数组,所以使用了astype方法将其转换为int类型数组


以下我们将用matplotlab库来画出阶跃函数

In [14]:
import numpy as np
import matplotlib.pyplot as plt

def fn(x:np.array):
    return np.array(x>0,dtype=np.int)
x=np.arange(-5.0,5.0,0.1)
y=fn(x)
plt.plot(x,y)
plt.ylim(-0.1,1.1)
plt.show()

sigmoid函数

In [16]:
import numpy as np
import matplotlib.pyplot as plt

def sigmoid(x):
    y=1/(1+np.exp(-x))
    return y

x=np.arange(-5.0,5.0,0.1)
y=sigmoid(x)
plt.plot(x,y)
plt.ylim(-0.1,1.1)
plt.show()

ReLu函数

In [17]:
import numpy as np
import matplotlib.pyplot as plt

def ReLu(x):
    return np.maximum(0,x)

x=np.arange(-5.0,5.0,0.1)
y=ReLu(x)
plt.plot(x,y)
plt.ylim(-0.1,5.0)
plt.show()

三层神经元测试对应的代码(对应笔记中的图3-14)

In [21]:
import numpy as np
x=np.array([1,2])#输入层
w=np.array([[1,3,5],[2,4,6]])
Y=np.dot(x,w)
print(Y)
[ 5 11 17]