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
第3关:损失函数
import numpy as np
class Loss(object):
def mean_absolute_loss(self,y_hat,y,n):
"""
平均绝对误差损失
:param y_hat: 预测结果
:param y: 真实结果
:param n: 样本数量
:return: 损失函数计算结果
"""
########## Begin ##########
loss = np.abs(y_hat - y)
loss = np.sum(loss) / n
########## End ##########
return loss
def mean_squared_loss(self,y_hat,y,n):
"""
均方差损失
:param y_hat: 预测结果
:param y: 真实结果
:param n: 样本数量
:return: 损失函数计算结果
"""
########## Begin ##########
loss = (y_hat - y) ** 2
loss = np.sum(loss) / n
########## End ##########
return loss
def cross_entropy_loss(self,y_hat,y,n):
"""
交叉熵损失
:param y_hat: 预测结果
:param y: 真实结果
:param n: 样本个数
:return: 损失函数计算结果
"""
########## Begin ##########
loss = y_hat * np.log2(y) + (1 - y) * np.log2(1 - y)
loss = -np.sum(loss) / n
########## End ##########
return loss