当前位置: 首页 > news >正文

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

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


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

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

pip install numpy

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

import numpy as npdef 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.b1self.A1 = sigmoid(self.Z1)self.Z2 = np.dot(self.A1, self.W2) + self.b2self.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这样的深度学习框架,它们提供了更高级别的抽象和自动微分等特性,可以大大简化神经网络的实现和训练过程。


http://www.mrgr.cn/news/24940.html

相关文章:

  • C++中的for-each循环
  • C++力扣简单算法题整理-2(字符串、数组)
  • 一天认识一个硬件之主板
  • 资源监视器
  • 计算机毕业设计2025题目出炉,如何选择和流程分析看这一篇就够了
  • mysql 学习笔记三
  • MAC 地址简化概念(有线 MAC 地址、无线 MAC 地址、MAC 地址的随机化)
  • 04 Room
  • 软件测试中的黑盒测试方法,包括其定义、目的及主要步骤。
  • 优化你的MySQL查询:12个必备的SQL书写习惯!
  • Git使用—把当前仓库的一个分支push到另一个仓库的指定分支、基于当前仓库创建另一个仓库的分支并推送到对应仓库(mit6828)
  • 设计模式之装饰设计模式
  • 城市道路街景的绿视率计算 绿化率计算(包括街景的获取)
  • 非线性规划及其MATLAB实现
  • 021.PL-SQL控制结构
  • 嵌入式硬件基础知识
  • Centos7.9下的snmp搭建及实例
  • 第 7 篇 Helm 部署 Nacos【详细步骤】
  • Java控制台+activiti+springboot+mybatis实现账务报销工作流程
  • 华为OD机试 - 周末爬山 - 广度优先搜索BFS(Python/JS/C/C++ 2024 E卷 200分)