2022.12.21 今天发的太早了,以后发的晚一点,作为今天的补充吧。
感知机与神经网络的区别,感知机在设定权重的工作是由人工决定的,而神经网络的一个重要性质就是他可以自动的从数据中学习到适合的权重参数;感知机与神经网络的连接方式没有任何差异。
感知机是通过添加权重运算后进行求和后作为输入信号到神经元,而神经网络在神经元会有“激活函数”将输入信号的总和转化为输出信号。
激活函数是连接感知机和神经网络的桥梁
import numpy as np import matplotlib.pyplot as plt # 阶跃函数的图形 def step_function(x): return np.array(x > 0, dtype=np.int) # x>0 是一个判断,他会输出bool值true、false,为了得出函数图像我们必须把他转化成int值true=1,false=0 x = np.arange(-5, 5, 0.1) y = step_function(x) plt.plot(x, y) plt.ylim(-0.1, 1.1) plt.show() # sigmoid函数的实现 def sigmoid(x1): return 1 / (1 + np.exp(-x1)) x1 = np.arange(-5, 5, 0.1) y1 = sigmoid(x1) plt.plot(x1, y1) plt.ylim(-0.1, 1.1) plt.show() # ReLU函数 Rectified Linear Unit # def ReLU(x2): # return np.maximum(0, x2) # np.maximum(0,x) 会让只有0的数组与x的数组逐个比较,而输出 # # # x2 = np.arange(-10, 10, 1) # y2 = ReLU(x2) # plt.plot(x2,y2) # plt.ylim(-0.1, 10) # plt.show() def relu(x2): for i in range(20): if x2[i] > 0: x2[i] = x2[i] else: x2[i] = 0 x2 = np.arange(-10, 10, 1) x21 = np.arange(-10, 10, 1) relu(x2) print(x21, x2) plt.plot(x21, x2) plt.ylim(-0.1, 10) plt.show()