# 神经网络——[图一]
# 可以自动从数据中学习到合适的权重参数
# 例子 for example
# 输入层,中间层,输出层
import numpy as np
import matplotlib.pylab as plt
# 阶跃函数 在numpy中的技巧使用
x = np.array([-1.0, 1.0, 2.0])
print(x)
y = x > 0 # 通过条件转变为布尔类型
print(y)
y = y.astype(np.int_) # 把数组元素布尔类型 转换为 int64 类型
print(y)
# 使用 numpy技巧实现阶跃函数
def step_function_of_numpy(i):
return np.array(i > 0, dtype=np.int_)
# 普通实现阶跃函数
def step_function(i):
i = x > 0
return i.astype(np.int_)
# 阶跃函数可视化 0 为界,输出从0切换到1值呈阶梯式变化,阶跃函数
# a = np.arange(-5.0, 5.0, 0.1)
# b = step_function_of_numpy(a)
# plt.plot(a, b)
# plt.ylim(-0.5, 5)
# plt.show()
# sigmoid 函数实现
def sigmoid(i):
return 1 / (1 + np.exp(-i))
c = np.array([-1.0, 1.0, 2.0])
print(sigmoid(c))
a = np.arange(-5.0, 5.0, 0.1)
b = sigmoid(a)
plt.plot(a, b)
plt.ylim(-0.5, 5)
plt.show()
# sigmoid 函数和阶跃函数的比较 ——【共同点是都是非线性函数】【】
# sigmoid随着输入发生连续性变化(流动的数是连续的实数信号导致平滑性),而阶跃函数随着输入发生急剧性变化(输入数直接变化)
# ReLU Rectified Linear Unit 函数——输入大于0,直接输出该值,输入小于等于0,输出0
def relu(i):
return np.maximum(0, i) # 选择较大的值进行输出
《深度学习入门——基于python的理论实践》