神经网络学习过程之(前馈神经网络)




def sigmoid(x):
  '''用的是逻辑斯蒂曲线,当然根据需要也可以用线性整流函数'''
  return 1/(1+np.exp(-x))

def ReLU(a,Inactive):
    '''线性整流函数:0和a的最大值取其一,当a超过一个域值的时候就会激发,否则择不激发,输出0,效率比logistic/逻辑斯蒂曲线要高,适合特别深的神经网络'''
    return a.max() < Inactive and 0 or a.max()

def softmax(x): 
  '''柔性最大值传输函数'''
  exp = np.exp(x-x.max())
  return exp/exp.sum()

def identity(x):
  '''可以调整,获得更好的精度'''
  return x
  
def network():
  network = dict()
  network["W1"] = abs(np.random.randn(2,3)) #第一层权重
  network["b1"] = abs(np.random.randn(1,3)) #第一层偏置
  network["W2"] = abs(np.random.randn(3,2)) #第二层权重
  network["b2"] = abs(np.random.randn(1,2)) #第二层偏置
  network["W3"] = abs(np.random.randn(2,2)) #第三层权重
  network["b3"] = abs(np.random.randn(1,2)) #第三层偏置
  return network

def forward(network,x):
  W1, W2 ,W3 = network["W1"],network["W2"],network["W3"]
  b1 ,b2 ,b3 = network["b1"],network["b2"],network["b3"]
  Z_func = lambda x,w,b : sigmoid(np.dot(x,w)+b)
  z1 = Z_func(x,W1,b1)
  z2 = Z_func(z1,W2,b2)
  a3 = np.dot(z2,W3)+b3
  y = softmax(identity(a3),2)
  return y

network = network()
x = np.array([1.0,2])
y = forward(network,x)
y
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值