也许是最简单的BP神经网络python实现

前菜

  1. 这是个最基本的bp神经网络,今天我们就用python的numpy来实现它!
    也许是最简单的BP神经网络python实现

  2. sigmoid函数:
    也许是最简单的BP神经网络python实现

也许是最简单的BP神经网络python实现

话不多说,上代码!

from numpy import exp, array, random, dot

# 训练数据 输入
training_set_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])
# 训练数据 输出
training_set_outputs = array([[0, 1, 1, 0]]).T
# seed是限制随机数,使其生成的都是同一个
random.seed(1)
# 生成随机数,三行一列
synaptic_weight = 2 * random.random((3, 1)) - 1
# 迭代一万次,进行训练
for iteration in range(10000):
    # 将训练集的输入和权重dot进行矩阵相乘,结果输入到sigmoid函数中
    output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weight))))
    # 权重调整采用误差加权导数公式
    synaptic_weight += dot(training_set_inputs.T, (training_set_outputs - output) * output * (1 - output))
# synaptic_weight是最终的权重,array([1,0,0])是测试数据,同样是sigmoid函数
print(1 / (1 + exp(-dot(array([1, 0, 0]), synaptic_weight))))

除了注释,实际9行代码。

BP神经网络就这么简单?不过如此?
非也!这连冰山一角都算不上。(冰山一角,是水的密度为1,冰的密度是0.9,所以冰的1/10会露出在水面之上)

持续关注吧!
peace&love

上一篇:(Training 8)Codeforces Round #692


下一篇:2020-2021 Winter holiday Training Round 2