给出一个numpy实现多层前馈神经网络的代码
时间: 2023-02-09 13:15:58 浏览: 99
```
import numpy as np
class NeuralNetwork:
def __init__(self, layers, neurons):
"""
layers: list, 每层神经元个数,例如[2,3,1]表示3层网络,第1层2个神经元,第2层3个神经元,第3层1个神经元
"""
self.layers = layers
self.neurons = neurons
self.weights = []
self.biases = []
# 初始化权重和偏置
for i in range(len(layers) - 1):
self.weights.append(np.random.randn(layers[i], layers[i+1]))
self.biases.append(np.random.randn(layers[i+1]))
def sigmoid(self, x):
return 1 / (1 + np.exp(-x))
def forward(self, input_data):
"""
input_data: array-like, 输入数据
"""
activations = [input_data]
for i in range(len(self.layers) - 1):
z = np.dot(activations[i], self.weights[i]) + self.biases[i]
a = self.sigmoid(z)
activations.append(a)
return activations
# 创建一个3层网络,第1层2个神经元,第2层3个神经元,第3层1个神经元
nn = NeuralNetwork([2, 3, 1], 1)
# 随机生成一组输入数据
input_data = np.random.randn(2)
# 计算网络输出
output = nn.forward(input_data)
```