用python写一个神经网络向前传播(3个输入层,一个输出层):1.实现dense函数以及sequential函数的编写 2.通过dense函数初始化神经网络的隐藏层以及sequential函数将隐藏层之间链接起来
时间: 2024-03-11 13:05:21 浏览: 47
python写神经网络
好的,我可以帮你回答这个问题。
首先,我们需要定义一个dense函数,用来初始化每个神经元的权重和偏置。代码如下:
```python
import numpy as np
def dense(input_size, output_size):
# 初始化权重
W = np.random.randn(output_size, input_size) * 0.01
# 初始化偏置
b = np.zeros((output_size, 1))
# 返回权重和偏置
return W, b
```
接下来,我们需要定义一个sequential函数,用来将隐藏层之间链接起来。代码如下:
```python
def sequential(layers):
# 初始化神经网络的权重和偏置
network = []
for i in range(1, len(layers)):
network.append(dense(layers[i-1], layers[i]))
# 返回神经网络
return network
```
这个sequential函数接受一个列表layers,它包含了神经网络每层的大小。例如,如果我们想要创建一个具有3个输入层、5个隐藏层和1个输出层的神经网络,我们可以这样调用sequential函数:
```python
network = sequential([3, 5, 1])
```
这将返回一个包含两个元素的列表network,其中第一个元素是连接第一个和第二个隐藏层的权重和偏置,第二个元素是连接第二个隐藏层和输出层的权重和偏置。
然后,我们可以通过前向传播算法来计算神经网络的输出。代码如下:
```python
def forward(network, X):
# 前向传播
A = X
for W, b in network:
Z = np.dot(W, A) + b
A = 1 / (1 + np.exp(-Z))
# 返回输出
return A
```
这个forward函数接受一个神经网络和一个输入向量X。它使用前向传播算法计算神经网络的输出,并返回该输出。
现在,我们可以使用这些函数来创建一个具有3个输入层、5个隐藏层和1个输出层的神经网络,并计算它对输入向量[1, 2, 3]的输出。代码如下:
```python
# 创建神经网络
network = sequential([3, 5, 1])
# 计算输出
X = np.array([[1], [2], [3]])
output = forward(network, X)
# 打印输出
print(output)
```
这将输出一个形状为(1, 1)的数组,其中包含神经网络对输入向量[1, 2, 3]的输出。
阅读全文