欢迎访问宙启技术站
智能推送

Python中tanh()函数在神经网络中的应用

发布时间:2023-12-11 15:26:15

在神经网络中,tanh()函数常用于激活函数。激活函数是神经网络中非线性变换的函数,它的作用是引入非线性因素,从而使网络能够学习和表达更复杂的函数关系。而tanh()函数就是激活函数中的一种常见选择。

tanh()函数是双曲正切函数,定义为f(x) = (e^x - e^(-x))/(e^x + e^(-x))。它的特点是输出范围在[-1, 1]之间。与sigmoid函数类似,tanh()函数在输入是正数时趋于1,在输入是负数时趋于-1,在输入是0时输出0。

tanh()函数在神经网络中的应用有以下几个方面:

1. 激活函数

在神经网络的每个神经元中,都需要引入激活函数对其输出进行非线性变换。tanh()函数是一种常见的激活函数选择,它的输出范围[-1, 1]比sigmoid函数的输出范围[0, 1]更广,使得神经网络可以表达更大的激活值范围。

以下是一个简单的神经网络代码片段,其中使用了tanh()函数作为激活函数:

import numpy as np

def tanh(x):
    return np.tanh(x)

class NeuralNetwork:
    def __init__(self, input_size, hidden_size, output_size):
        self.input_size = input_size
        self.hidden_size = hidden_size
        self.output_size = output_size
        self.weights1 = np.random.randn(input_size, hidden_size)
        self.weights2 = np.random.randn(hidden_size, output_size)
    
    def forward(self, x):
        hidden = self.tanh_activation(x.dot(self.weights1))
        output = self.tanh_activation(hidden.dot(self.weights2))
        return output
    
    def tanh_activation(self, x):
        return tanh(x)

# 创建一个输入数据为2维,隐藏层大小为3,输出大小为1的神经网络
nn = NeuralNetwork(2, 3, 1)

# 输入数据
x = np.array([1, 2])

# 进行前向计算
output = nn.forward(x)

print(output)

2. 解决回归问题

在神经网络中,tanh()函数常用于解决回归问题。回归问题是指根据输入数据预测一个连续值的问题。tanh()函数在输出范围[-1, 1]之间,可以很好地适应连续值的预测任务。

以下是一个简单的回归问题的例子,其中使用了tanh()函数作为激活函数:

import numpy as np

def tanh(x):
    return np.tanh(x)

class NeuralNetwork:
    def __init__(self, input_size, hidden_size, output_size):
        self.input_size = input_size
        self.hidden_size = hidden_size
        self.output_size = output_size
        self.weights1 = np.random.randn(input_size, hidden_size)
        self.weights2 = np.random.randn(hidden_size, output_size)
    
    def forward(self, x):
        hidden = self.tanh_activation(x.dot(self.weights1))
        output = self.tanh_activation(hidden.dot(self.weights2))
        return output
    
    def tanh_activation(self, x):
        return tanh(x)

# 创建一个输入数据为1维,隐藏层大小为5,输出大小为1的神经网络
nn = NeuralNetwork(1, 5, 1)

# 输入数据
x = np.array([1, 2, 3, 4, 5])

# 目标值
y = np.array([1, 4, 9, 16, 25])

# 进行前向计算
output = nn.forward(x)

print(output)

在上述代码中,我们使用一个简单的数据集,输入数据和目标值分别是[1, 2, 3, 4, 5]和[1, 4, 9, 16, 25],通过神经网络的前向计算,使用tanh()函数作为激活函数,预测输出的连续值。