【3.5 python中的numpy实现3层的神经网络】

3.5 python中的numpy实现3层的神经网络


在Python中使用NumPy库实现一个三层神经网络(输入层、一个隐藏层、输出层)需要手动编写前向传播和可能的激活函数。这里,我将提供一个简单的例子,其中使用Sigmoid作为激活函数(尽管在实际应用中,ReLU可能更为常用)。

首先,你需要安装NumPy库(如果你还没有安装的话):

pip install numpy

然后,你可以按照以下方式编写代码:

import numpy as np

def sigmoid(x):
    """Sigmoid激活函数"""
    return 1 / (1 + np.exp(-x))

def sigmoid_derivative(x):
    """Sigmoid函数的导数,用于反向传播"""
    return x * (1 - x)

class NeuralNetwork:
    def __init__(self, input_size, hidden_size, output_size):
        # 初始化权重和偏置
        self.W1 = np.random.randn(input_size, hidden_size)
        self.b1 = np.zeros((1, hidden_size))
        self.W2 = np.random.randn(hidden_size, output_size)
        self.b2 = np.zeros((1, output_size))

    def forward_propagation(self, X):
        # 前向传播
        self.Z1 = np.dot(X, self.W1) + self.b1
        self.A1 = sigmoid(self.Z1)
        self.Z2 = np.dot(self.A1, self.W2) + self.b2
        self.A2 = sigmoid(self.Z2)
        return self.A2

# 示例:使用3层神经网络
# 假设输入层有2个神经元,隐藏层有3个神经元,输出层有1个神经元
nn = NeuralNetwork(input_size=2, hidden_size=3, output_size=1)

# 假设的输入数据(假设有4个样本)
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])

# 前向传播
output = nn.forward_propagation(X)
print("Output:", output)

请注意,这个简单的例子没有包括反向传播和权重更新,这是训练神经网络所必需的。为了训练网络,你需要实现反向传播算法来更新权重和偏置,这通常涉及计算损失函数的梯度,并使用这些梯度来更新网络的参数。

此外,对于更复杂的任务,你可能需要考虑使用更高级的优化算法(如Adam、RMSprop等),而不是简单的梯度下降,以及正则化技术来防止过拟合。

对于实际应用,推荐使用像TensorFlow或PyTorch这样的深度学习框架,它们提供了更高级别的抽象和自动微分等特性,可以大大简化神经网络的实现和训练过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wang151038606

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值