依上表,输出的为样本为 X 为 4*3,有 4 个样本 3 个属性,每一个样本对于这一个真实值 y,为 4*1 的向量,我们要根据 input 的值输出与 y 值损失最小的输出。
这里,我们选择简单的两层神经网络来求解。
由于输出值的范围在0和1之间,因此前向传播函数采用Sigmoid函数。反向传播函数则是它的导数。
import numpy as np # sigmoid function # deriv=ture 是求的是导数 def nonlin(x,deriv=False): if(deriv==True): return x*(1-x) return 1/(1+np.exp(-x)) # 输入数据集 X = np.array([ [0,0,1], [1,1,1], [1,0,1], [0,1,1] ]) # 已知输出数据集 y = np.array([[0,1,1,0]]).T # 生成随机种子 np.random.seed(1) # 初始化权值 syn0 = 2*np.random.random((3,1)) - 1 # 迭代次数 for iter in xrange(10000): # 前向传播,l0也就是输入层 l0 = X #计算预测值 l1 = nonlin(np.dot(l0,syn0)) # 计算与实际误差 l1_error = y - l1 # 返向求导的值乘以误差得到一小部份误差 l1_delta = l1_error * nonlin(l1,True) # 利用一部份误差,更新权值 syn0 += np.dot(l0.T,l1_delta) print "Output After Training:" print l1
桂ICP备11003301号-1 公安备案号:45040302000027 Copyright @ 2021- 2022 By Sun zi chao
阅读统计: 1.93W 文章数量: 76 运行天数: 416天 返回cmnsoft
● 神经网络常用传递函数
● 用python学习神经网络-01.两层神经网络
● 用python学习神经网络-02.三层神经网络