Neural Network中的Activation function作用

本文探讨了神经网络中激活函数的重要性,包括tanh、sigmoid和ReLU等主要类型。tanh函数取值范围在-1到1之间,sigmoid函数呈现S型且值域在0到1,ReLU函数则将所有负值置零,仅保留正值。
摘要由CSDN通过智能技术生成

激活函数的作用

谈到激活函数,必须要提到回归的问题,我们做线性回归的目的是为了优化权重。由于每次输入新的数据都要进行调整权重,做回归的主要目的是将目标特征更明显,将区别较大的噪声排除掉。因此,我们引入了激活函数。由于在线性回归中要求输入是可微的,也就是说要求输入为线性的,但现实的输入往往是非线性的,加入激活函数不但具备去噪的作用,而且可以将非线性输入变为线性输入。


这是一个定义了神经网络的类,下面是一个简单的例子: ```python class NeuralNetwork: def __init__(self, input_nodes, hidden_nodes, output_nodes): # 初始化输入层、隐藏层和输出层的节点数 self.input_nodes = input_nodes self.hidden_nodes = hidden_nodes self.output_nodes = output_nodes # 初始化权重矩阵,使用随机值填充 self.weights_input_hidden = np.random.normal(0.0, self.hidden_nodes**-0.5, (self.hidden_nodes, self.input_nodes)) self.weights_hidden_output = np.random.normal(0.0, self.output_nodes**-0.5, (self.output_nodes, self.hidden_nodes)) # 定义激活函数 self.activation_function = lambda x: 1/(1+np.exp(-x)) def train(self, inputs_list, targets_list): # 将输入和目标值转换为二维数组 inputs = np.array(inputs_list, ndmin=2).T targets = np.array(targets_list, ndmin=2).T # 计算隐藏层的输入信号 hidden_inputs = np.dot(self.weights_input_hidden, inputs) # 计算隐藏层的输出信号 hidden_outputs = self.activation_function(hidden_inputs) # 计算输出层的输入信号 final_inputs = np.dot(self.weights_hidden_output, hidden_outputs) # 计算输出层的输出信号 final_outputs = self.activation_function(final_inputs) # 计算输出层误差 output_errors = targets - final_outputs # 计算隐藏层误差 hidden_errors = np.dot(self.weights_hidden_output.T, output_errors) * hidden_outputs * (1 - hidden_outputs) # 更新权重 self.weights_hidden_output += self.learning_rate * np.dot((output_errors * final_outputs * (1 - final_outputs)), hidden_outputs.T) self.weights_input_hidden += self.learning_rate * np.dot((hidden_errors * hidden_outputs * (1 - hidden_outputs)), inputs.T) def query(self, inputs_list): # 将输入转换为二维数组 inputs = np.array(inputs_list, ndmin=2).T # 计算隐藏层的输入信号 hidden_inputs = np.dot(self.weights_input_hidden, inputs) # 计算隐藏层的输出信号 hidden_outputs = self.activation_function(hidden_inputs) # 计算输出层的输入信号 final_inputs = np.dot(self.weights_hidden_output, hidden_outputs) # 计算输出层的输出信号 final_outputs = self.activation_function(final_inputs) return final_outputs ``` 这个类实现了一个简单的三层神经网络,包括一个输入层、一个隐藏层和一个输出层。它包括以下方法: - `__init__(self, input_nodes, hidden_nodes, output_nodes)`:初始化神经网络,包括输入层、隐藏层和输出层的节点数,以及权重矩阵和激活函数。 - `train(self, inputs_list, targets_list)`:训练神经网络,更新权重矩阵。 - `query(self, inputs_list)`:使用训练好的神经网络进行预测,输出一个结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值