第二章.神经网络
感知机存在如何设置合适的权重问题,神经网络的出现就是为了解决感知机存在的问题,神经网络的一个重要性质:它可以自动的从数据中学习到合适的权重参数。
①.感知机数学公式:
③.刚才使用的h(x)函数就会将输入信号的总和转换为输出信号,这种函数一般称为激活函数 (作用:在于决定如何来激活输入信号的总和)
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False # 解决负号不显示的问题
# 阶跃函数的实现
def sign(x):
return np.array(x > 0, dtype=int)
x_data = np.arange(-5.0, 5.0, 0.1)
y_data = sign(x_data)
plt.figure(figsize=(6, 4))
plt.plot(x_data, y_data, 'r')
plt.ylim(-0.1, 1.1)
plt.title('阶跃函数')
plt.show()
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False # 解决负号不显示的问题
# Sigmoid函数的实现
def Sigmoid(x):
return 1 / (1 + np.exp(-x))
x_data = np.arange(-5.0, 5.0, 0.1)
y_data = Sigmoid(x_data)
plt.figure(figsize=(6, 4))
plt.plot(x_data, y_data, 'r')
plt.ylim(-0.1, 1.1)
plt.title('Sigmoid函数')
plt.show()
①.平滑度不同:阶跃函数是急剧变化的,Sigmoid函数是连续性变化的
②.返回值不同:阶跃函数只能返回0或1,Sigmoid函数返回与函数相关的一系列实数
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False # 解决负号不显示的问题
# ReLU函数的实现
def ReLU(x):
return np.maximum(0, x)
x_data = np.arange(-5.0, 5.0, 0.1)
y_data2 = ReLU(x_data)
plt.figure(figsize=(6, 4))
plt.plot(x_data, y_data2, 'r')
plt.title('ReLU函数')
plt.show()