📌  相关文章
📜  未经训练的神经网络返回具有随机权重的相同输出 (1)

📅  最后修改于: 2023-12-03 15:10:39.992000             🧑  作者: Mango

未经训练的神经网络返回具有随机权重的相同输出

神经网络是一种模拟人脑功能的计算方式,通过输入大量数据进行训练,从而能够对未知的数据做出预测和分类等操作。但是在神经网络的训练过程中,需要对网络参数进行不断的优化,才能使其达到良好的性能。

如果没有经过训练的神经网络,它的权重和偏置都是随机初始化的,因此无法使用它来进行预测。不过,这个神经网络可以通过前向传播(feedforward)得到一组输出,这组输出与任何其他未训练的神经网络的输出是相同的。

下面的代码片段演示了如何构建一个未经训练的神经网络,并对其进行前向传播,最终输出相同的结果。

import numpy as np

# 构建一个输入有两个节点,输出有一个节点的多层感知机
class NeuralNetwork:
    def __init__(self):
        self.input_size = 2
        self.hidden_size = 5
        self.output_size = 1
        
        # 随机初始化权重和偏置
        self.weights1 = np.random.rand(self.input_size, self.hidden_size)
        self.bias1 = np.random.rand(1, self.hidden_size)
        self.weights2 = np.random.rand(self.hidden_size, self.output_size)
        self.bias2 = np.random.rand(1, self.output_size)
        
    # 前向传播函数
    def forward(self, inputs):
        hidden = np.dot(inputs, self.weights1) + self.bias1
        hidden = np.tanh(hidden)
        output = np.dot(hidden, self.weights2) + self.bias2
        return output

# 创建两个神经网络
nn1 = NeuralNetwork()
nn2 = NeuralNetwork()

# 对两个神经网络分别进行前向传播
inputs = np.array([[1, 2]])
output1 = nn1.forward(inputs)
output2 = nn2.forward(inputs)

# 输出结果
print(output1)
print(output2)

上述代码中,我们定义了一个包含两个输入和一个输出节点的多层感知机。其中,weights1weights2分别存储了输入层和隐含层之间、隐含层和输出层之间的权重;bias1bias2则分别存储了隐含层和输出层的偏置。

在对两个神经网络进行前向传播时,我们使用了相同的输入数据([[1, 2]]),从而获得了相同的输出结果。在这个例子中,我们只是演示了如何构建一个未经过训练的神经网络,并对其进行前向传播得到相同的结果。如果想让神经网络能够真正地进行预测,还需要对其进行反向传播(backpropagation)进行训练。