以下是使用Python编写的一个基本的BP神经网络,并使用ReLU函数进行测试:

import numpy as np

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.rand(hidden_size, input_size)
        self.weights2 = np.random.rand(output_size, hidden_size)
        
    def sigmoid(self, x):
        return 1 / (1 + np.exp(-x))
    
    def relu(self, x):
        return np.maximum(0,x)
    
    def forward(self, input):
        hidden = self.relu(np.dot(self.weights1, input))
        output = self.sigmoid(np.dot(self.weights2, hidden))
        return output
    
    def backward(self, input, target, output, learning_rate=0.1):
        error = target - output
        delta2 = error * output * (1 - output)
        delta1 = np.dot(self.weights2.T, delta2) * (1 - self.relu(np.dot(self.weights1, input)))        
        self.weights2 += learning_rate * np.outer(delta2, self.relu(np.dot(self.weights1, input)))
        self.weights1 += learning_rate * np.outer(delta1, input)
        
    def train(self, input, target, epochs):
        for i in range(epochs):
            for j in range(len(input)):
                output = self.forward(input[j])
                self.backward(input[j], target[j], output)

# test the neural network with ReLU function
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([0, 1, 1, 0])

nn = NeuralNetwork(2, 3, 1)
nn.train(X, y, 10000)

for i in range(len(X)):
    print("Input: ", X[i], " Target: ", y[i], " Output: ", nn.forward(X[i]))

在这个例子中,我们使用了一个包含一个隐藏层的神经网络,并使用ReLU函数作为激活函数。我们使用反向传播算法来训练网络并得出预测结果。

我们使用XOR问题来测试神经网络,其中我们拥有4个输入数据,每个数据都有两个特征。每个数据都对应一个目标值,我们希望神经网络能够根据输入数据预测出目标值。最后我们将预测值与目标值进行比较,以评估神经网络的性能。

在这个例子中,神经网络可以正确地预测出所有目标值,说明ReLU函数在神经网络中的表现良好

python编辑实现bp神经网络测试relu函数

原文地址: https://www.cveoy.top/t/topic/co9U 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录