单层神经网络(感知器)的python实现

构造一个单层网络,激活函数是sigmoid,损失函数是均方根。

参数w0和b0,输入X,输入层L0,输出层L1,预测值Y,lr(n)学习速率


python如下:

import numpy as np

# sigmoid function 
def sig(x):
    return (1/(1+np.exp(-x)))

def deridig(y):
    return y*(1-y)

# input dataset
X = np.array([  [0,0,1],
                [0,1,1],
                [1,0,1],
                [1,1,1] ])

# output dataset
y = np.array([[0,0,1,1]]).T

#
np.random.seed(1)

# initialize weights randomly with mean 0
w0 = 2*np.random.random((3,1)) - 1
b0=1
lr=1
print ('w000',w0)
for iter in range(10000):
    # forward propagation
    l0 = X
    l1 = sig(np.dot(l0,w0)+b0)
    #print ('l1',l1)
    # how much did we miss?
    E_error=(y-l1)*(y-l1)
    # update weights
    w0 += 1*np.dot(l0.T,2*(y-l1) *deridig(l1))
    b0 += 1*2*(y-l1) *deridig(l1)
    #print ('w0',w0)
    
print ("Output After Training:")
print (l1)
print ("w0 After Training:")
print (w0)
print ("b0 After Training:")
print (b0)

循环10000次后的结果:

Output After Training:
[[ 0.00411501]
 [ 0.00384688]
 [ 0.99675082]
 [ 0.99643784]]
w0 After Training:
[[ 5.05661648]
 [-0.2814999 ]
 [-2.84714308]]
b0 After Training:
[[-2.64189825]
 [-2.42804605]
 [ 3.51667531]
 [ 3.70589715]]


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值