MLP激活函数的选择

http://www.cnblogs.com/neopenx/p/4453161.html


ps:供自己后续学习

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是numpy实现mlp的反向传播代码: ``` import numpy as np def relu(x): return np.maximum(x, 0) def softmax(x): exp_x = np.exp(x - np.max(x, axis=1, keepdims=True)) return exp_x / np.sum(exp_x, axis=1, keepdims=True) def cross_entropy(y_pred, y_true): return -np.sum(y_true * np.log(y_pred)) / len(y_pred) def l2_regularization(lmbda, w1, w2): return lmbda / 2 * (np.sum(np.square(w1)) + np.sum(np.square(w2))) def mlp_backward(X, y, w1, b1, w2, b2, learning_rate, lmbda): # forward pass z1 = np.dot(X, w1) + b1 a1 = relu(z1) z2 = np.dot(a1, w2) + b2 a2 = softmax(z2) # compute gradients delta2 = a2 - y delta1 = np.dot(delta2, w2.T) * (z1 > 0) dw2 = np.dot(a1.T, delta2) db2 = np.sum(delta2, axis=0, keepdims=True) dw1 = np.dot(X.T, delta1) db1 = np.sum(delta1, axis=0) # add L2 regularization dw2 += lmbda * w2 dw1 += lmbda * w1 # update weights and biases w2 -= learning_rate * dw2 b2 -= learning_rate * db2 w1 -= learning_rate * dw1 b1 -= learning_rate * db1 # compute loss loss = cross_entropy(a2, y) + l2_regularization(lmbda, w1, w2) return w1, b1, w2, b2, loss ``` 其中,X为输入数据,y为标签,w1和w2为权重矩阵,b1和b2为偏置向量,learning_rate为学习率,lmbda为L2正则化系数。在forward pass中,首先计算第一层的加权和z1和激活函数a1,然后计算第二层的加权和z2和激活函数a2。在backward pass中,首先计算输出层的误差项delta2和隐藏层的误差项delta1,然后根据误差项计算梯度dw2、db2、dw1和db1。最后,加上L2正则化项,更新权重矩阵和偏置向量,并计算损失函数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值