本关任务:通过对激活函数知识的学习,使用 Python 编写指定的激活函数。
为了完成本关任务,你需要掌握:
神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数)。 激活函数是计算神经网络中非常重要的一环,激活函数增加了神经网络模型的非线性特征,倘若神经网络中不存在激活函数,那么无论神经网络的深度有多少层 ,最终均是若干次的矩阵相乘,若输入输出依然存在线性关系,则对于机器学习就失去了意义 。
线性函数线性函数十分的简单,就是我们常见的函数,其数学形式如下:
其中a
和b
均为常数。
Sigmoid 函数是一个有着优美s
形曲线的数学函数,在逻辑回归、人工神经网络中有着广泛的应用。其数学形式如下:
其对应的图像如图1所示:
图1 Sigmoid 函数图像
优点:
缺点:
在使用numpy
实现 Sigmoid 函数时,en
可以使用numpy.exp(n)
函数实现:
Tanh 函数
import numpy as np
e_10 = np.exp(10) # e^10
Tanh 函数也叫双曲正切函数,其数学形式如下:
其对应的图像如图2所示:
图2 Tanh 函数图像
优点:
缺点: Tanh 函数依旧存在由于饱和性产生的梯度消失问题。
ReLU 函数ReLU 函数的数学形式如下:
其对应的图像如图3所示:
图3 ReLU 函数图像
优点:
缺点:
随着训练的进行,可能权重无法更新的情况。
对于实现 ReLU 函数,可以尝试使用numpy.where(arr,a,b)
,具体使用可以参考numpy.where()使用方法。
编程要求
根据提示,在右侧编辑器 Begin-End 区间补充代码,完成 Sigmoid 函数、Tanh 函数以及 Relu 函数的编写,只有三个函数同时正确时,才能提交成功。
测试说明平台会对你编写的代码进行测试:
测试输入:无
预期输出:
True
开始你的任务吧,祝你成功!
import numpy as np
class ActivationFunction(object):
def sigmoid(self,x):
"""
Sigmoid 函数
:param x: 函数的输入,类型为list
:return: y, 函数的计算结果
"""
########## Begin ##########
y = 1/(1+np.exp(-x))
########## End ##########
return y
def tanh(self,x):
"""
Tanh 函数
:param x: 函数的输入,类型为list
:return: y, 函数的计算结果
"""
########## Begin ##########
y = (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))
########## End ##########
return y
def ReLU(self,x):
"""
ReLU 函数
:param x: 函数的输入,类型为list
:return: y, 函数的计算结果
"""
########## Begin ##########
y = np.where(x>0,x,0)
########## End ##########
return y
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站题目:第2关:激活函数-创新互联
标题来源:https://www.cdcxhl.com/article30/djhiso.html
成都网站建设公司_创新互联,为您提供企业建站、软件开发、外贸建站、Google、动态网站、网站维护
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联