📅  最后修改于: 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)
上述代码中,我们定义了一个包含两个输入和一个输出节点的多层感知机。其中,weights1
和weights2
分别存储了输入层和隐含层之间、隐含层和输出层之间的权重;bias1
和bias2
则分别存储了隐含层和输出层的偏置。
在对两个神经网络进行前向传播时,我们使用了相同的输入数据([[1, 2]]
),从而获得了相同的输出结果。在这个例子中,我们只是演示了如何构建一个未经过训练的神经网络,并对其进行前向传播得到相同的结果。如果想让神经网络能够真正地进行预测,还需要对其进行反向传播(backpropagation)进行训练。