用 Python 从零开始创建神经网络(一):编码我们的第一个神经元
编码我们的第一个神经元
- 引言
- 1. A Single Neuron:
- Example 1
- Example 2
- 2. A Layer of Neurons:
- Example 1
引言
本教程专为那些对神经网络已有基础了解、但尚未动手实践过的读者而设计。尽管网上充斥着各种教程,但很多内容要么过于简略,要么直接进入高级主题,让初学者难以跟上。本指南将带领你从零开始,用 Python 构建一个简单的神经网络模型,逐步拆解每一步,帮助你真正理解神经网络的工作原理,为今后的深入学习打下坚实基础。
1. A Single Neuron:
最简单基础的单个神经元:
Example 1
inputs = [1, 2, 3]
weights = [0.2, 0.8, -0.5]
bias = 2
output = (inputs[0]*weights[0] + inputs[1]*weights[1] + inputs[2]*weights[2] + bias)
print("output:", output)
>>>
output: 2.3

代码的可视化:https://nnfs.io/bkr/
Example 2
inputs = [1.0, 2.0, 3.0, 2.5]
weights = [0.2, 0.8, -0.5, 1.0]
bias = 2.0
output = (inputs[0]*weights[0] +inputs[1]*weights[1] +inputs[2]*weights[2] +inputs[3]*weights[3] + bias)
print(output)
>>>
output: 2.3
output: 4.8

代码的可视化:https://nnfs.io/djp/
2. A Layer of Neurons:
一层神经元:
Example 1
假设我们有这样一个场景:一层有 3 个神经元,4 个输入。
inputs = [1, 2, 3, 2.5]weights1 = [0.2, 0.8, -0.5, 1]
weights2 = [0.5, -0.91, 0.26, -0.5]
weights3 = [-0.26, -0.27, 0.17, 0.87]bias1 = 2
bias2 = 3
bias3 = 0.5outputs = [# Neuron 1:inputs[0]*weights1[0] +inputs[1]*weights1[1] +inputs[2]*weights1[2] +inputs[3]*weights1[3] + bias1,# Neuron 2:inputs[0]*weights2[0] +inputs[1]*weights2[1] +inputs[2]*weights2[2] +inputs[3]*weights2[3] + bias2,# Neuron 3:inputs[0]*weights3[0] +inputs[1]*weights3[1] +inputs[2]*weights3[2] +inputs[3]*weights3[3] + bias3]print("outputs:", outputs)
>>>
outputs: [4.8, 1.21, 2.385]

代码的可视化:https://nnfs.io/mxo/
在这段代码中,我们有三组权重和三个偏差,它们定义了三个神经元。每个神经元都“连接”到相同的输入。不同之处在于每个神经元对输入应用的权重和偏差是分开的。这称为全连接神经网络——当前层的每个神经元都与前一层的每个神经元相连。这是一种非常常见的神经网络类型,但应该注意,并非一定要像这样完全连接。到目前为止,我们只展示了一个包含很少神经元的单层的代码。想象一下编码更多层和更多神经元,这将变得非常具有挑战性。相对于使用我们当前的方法,我们可以使用循环来扩展并动态处理输入和层的大小。我们已将分开的权重变量转换为一个权重列表,这样我们可以遍历它们,并且我们改变了代码使用循环而不是硬编码的操作。
inputs = [1, 2, 3, 2.5]
weights = [[0.2, 0.8, -0.5, 1],[0.5, -0.91, 0.26, -0.5],[-0.26, -0.27, 0.17, 0.87]]
biases = [2, 3, 0.5]# Output of current layer
layer_outputs = []
# For each neuron
for neuron_weights, neuron_bias in zip(weights, biases):# Zeroed output of given neuronneuron_output = 0# For each input and weight to the neuronfor n_input, weight in zip(inputs, neuron_weights):# Multiply this input by associated weight# and add to the neuron’s output variableneuron_output = neuron_output + n_input*weight# Add biasneuron_output = neuron_output + n_input*weight# Put neuron’s result to the layer’s output listlayer_outputs.append(neuron_output)print("layer_outputs:", layer_outputs)print(list(zip(weights, biases)))
print(list(zip(weights, biases))[0])
print(type(list(zip(weights, biases))[0]))
>>>
layer_outputs: [4.8, 1.21, 2.385][([0.2, 0.8, -0.5, 1], 2), ([0.5, -0.91, 0.26, -0.5], 3), ([-0.26, -0.27, 0.17, 0.87], 0.5)]
([0.2, 0.8, -0.5, 1], 2)
<class 'tuple'>
这做的和之前一样,只是以一种更动态和可扩展的方式。如果你在某个步骤感到困惑,可以打印print()出对象来看看它们是什么以及发生了什么。zip()函数让我们能够同时迭代多个可迭代对象(在这种情况下是列表)。再次说明,我们所做的就是,对每个神经元(上述代码中的外层循环,遍历神经元的权重和偏差),取每个输入值与该输入相关联的权重相乘(上述代码中的内层循环,遍历输入和权重),将所有这些相加,然后在最后加上一个偏差。最后,将神经元的输出发送到层的输出列表中。
相关文章:
用 Python 从零开始创建神经网络(一):编码我们的第一个神经元
编码我们的第一个神经元 引言1. A Single Neuron:Example 1Example 2 2. A Layer of Neurons:Example 1 引言 本教程专为那些对神经网络已有基础了解、但尚未动手实践过的读者而设计。尽管网上充斥着各种教程,但很多内容要么过于简略&#x…...
低代码开发
低代码(Low Code)是一种软件开发方法,它通过可视化界面和少量的编码来快速构建应用程序。低代码平台的核心理念是通过抽象和最小化手工编码的方式,加速软件开发和部署的过程。 定义 低代码是一种软件开发方法,它允许…...
sql server 文件和文件组介绍
sql server 文件和文件组介绍 数据库文件和文件组 - SQL Server | Microsoft Learn...
caozha-CEPCS(新冠肺炎疫情防控系统)
caozha-CEPCS,是一个基于PHP开发的新冠肺炎疫情防控系统,CEPCS(全称:COVID-19 Epidemic Prevention and Control System),可以应用于单位、企业、学校、工业园区、村落等等。小小系统,希望能为大…...
1Panel修改PostgreSQL时区
需求 1Panel安装的PostgreSQL默认是UTC时区,需要将它修改为上海时间 步骤 进入PostgreSQL的安装目录 /opt/1panel/apps/postgresql/postgresql/data打开postgresql.conf文件 修改: log_timezone Asia/Shanghai timezone Asia/Shanghai保存后重启…...
开发一个CRM系统难吗?CRM系统的实现步骤
越来越多企业意识到了,客户关系管理(CRM)系统已成为企业提升客户体验、推动销售增长的必备工具。一个高效的CRM系统不仅能够帮助企业优化客户数据管理,还能提升客户满意度,增强客户忠诚度,从而推动业务的持…...
kafka常见面试题总结
Kafka 核心知识解析 一、Kafka 消息发送流程 Kafka 发送消息涉及两个线程:main 线程和 sender 线程。在 main 线程中,会创建一个双端队列 RecordAccumulator,main 线程负责将消息发送给 RecordAccumulator,而 sender 线程则从 R…...
前端知识点---Javascript中检测数据类型函数总结
文章目录 01 typeof 运算符02 instanceof 运算符03 Array.isArray()04 Object.prototype.toString.call()05 constructor 属性06 isNaN() 和 Number.isNaN() (常用)07 isFinite() 和 Number.isFinite()08 typeof null 是 "object" 的问题 01 typeof 运算符 返回值是…...
aspose如何获取PPT放映页“切换”的“持续时间”值
aspose如何获取PPT放映页“切换”的“持续时间”值 项目场景问题描述问题1:从官方文档和资料查阅发现并没有对切换的持续时间进行处理的方法问题2:aspose的依赖包中,所有的关键对象都进行了混淆处理 解决方案1、找到ppt切换的持续时间对应的混…...
【MQTT】代理服务比较RabbitMQ、Mosquitto 和 EMQX
前言 目前要处理大量设备同时频繁发送数据的情况,MQTT协议确实是一个更优的选择,因为它特别适合需要低带宽和高效能的物联网应用,下面是对目前主流协议的对比 数据截止日期:2024年11月10日 基础设施 后端: springclo…...
【C#/C++】C++/CL中String^的含义和举例,C++层需要调用C#层对象时...
示例: String^ IDataServer::GetParam(String^ aParamName){ /// }在 C/CLI 中,String^ 和 IDataServer::GetParam(String^ aParamName) 这种写法是一种混合了 C 和 .NET 的语法,用于在 C 中操作 .NET 对象。C/CLI 是微软扩展的 C 语言&…...
Python学习从0到1 day26 第三阶段 Spark ② 数据计算Ⅰ
人总是会执着于失去的,而又不珍惜现在所拥有的 —— 24.11.9 一、map方法 PySpark的数据计算,都是基于RDD对象来进行的,采用依赖进行,RDD对象内置丰富的成员方法(算子) map算子 功能:map算子…...
【详细】如何优雅地删除 Docker 容器与镜像
内容预览 ≧∀≦ゞ 镜像与容器的区别删除容器和镜像的具体步骤1. 删除容器步骤 1:查看当前运行的容器步骤 2:停止容器步骤 3:删除容器 2. 删除镜像步骤 1:查看镜像列表步骤 2:删除镜像 3. 删除所有容器和镜像 使用 1Pa…...
Spring Spring Boot 常用注解总结
在 Java 开发中,Spring 和 Spring Boot 框架广泛应用于企业级应用开发。这两个框架提供了丰富的注解,使得开发更加高效和便捷。本文将对 Spring 和 Spring Boot 中常用的注解进行总结。 一、Spring 常用注解 1. Component 作用:用于将普通的…...
Flink独立集群+Flink整合yarn
Flink独立集群的搭建: 1、上传解压配置环境变量 # 1、解压 tar -xvf flink-1.15.4-bin-scala_2.12.tgz # 2、修改环境变量 export FLINK_HOME/usr/local/soft/flink-1.15.4 export PATH$PATH:$FLINK_HOME/bin 2、修改配置文件 cd /usr/local/soft/flink-1.15.4/…...
动态规划 之 简单多状态 dp 问题 算法专题
一. 按摩师 按摩师 状态表示 根据经验 题目要求 dp[i] 表示: 选择到i位置时, 此时的最长预约时长 但是根据题目又分成两种情况: f[i] : 选择到 i 位置的时候, nums[i] 必选, 此时的最长预约时长 g[i] : 选择到 i 位置的时候, nums[i] 不选, 此时的最长预约时长状态转移方程 …...
qt QPixmapCache详解
1、概述 QPixmapCache是Qt框架中提供的一个功能强大的图像缓存管理工具类。它允许开发者在全局范围内缓存QPixmap对象,从而有效减少图像的重复加载,提高图像加载和显示的效率。这对于需要频繁加载和显示图像的用户界面应用来说尤为重要,能够…...
Redis中的持久化
什么是 Redis 持久化? Redis 是一个内存数据库,也就是说它主要把数据存储在内存中,这样可以实现非常高的读写速度。通常,内存数据库是非常快速且高效的,但它也有一个很大的问题:数据丢失的风险。因为当 Red…...
Unity 如何优雅的限定文本长度, 包含对特殊字符,汉字,数字的处理。实际的案例包括 用户昵称
常规限定文本长度 ( 通过 UntiyEngine.UI.Inputfiled 附带的长度限定 ) 痛点1 无法对中文,数字,英文进行识别,同样数量的汉字和同样数量的英文像素长度是不一样的,当我们限定固定长度后,在界面上的排版不够美观 痛点2…...
SMO+PLL滑膜观测器、MARS模型参考自适应观测器simulink仿真
模型内容介绍: (1)SMOPLL滑膜观测器通过SMO估计电机的转速和位置信息,并利用PLL技术对这些信息进行跟踪和校正,以实现高精度的电机控制; (2)MARS是一种基于模型参考自适应控制理论…...
7款AI论文写作工具推荐:爱毕业aibiye等平台提供自动排版及LaTeX模板适配
工具快速对比排名(前7推荐) 工具名称 核心功能亮点 处理时间 适配平台 aibiye 学生/编辑双模式降AIGC 1分钟 知网、万方等 aicheck AI痕迹精准弱化查重一体 ~20分钟 知网、格子达、维普 askpaper AIGC率个位数优化 ~20分钟 高校检测规则通…...
Pixel Epic · Wisdom Terminal参数详解:显存配额与智力同步率调优指南
Pixel Epic Wisdom Terminal参数详解:显存配额与智力同步率调优指南 1. 认识像素史诗 智识终端 像素史诗 (Pixel Epic) 是一款基于 AgentCPM-Report 大模型构建的高端研究报告辅助终端。它将枯燥的科研过程转化为一场充满像素美学的RPG冒险,让用户以…...
Java应用等保三级合规改造:3天完成代码层、配置层、运维层全栈优化(附Checklist)
第一章:Java应用等保三级合规改造全景图等保三级是国家网络安全等级保护制度中面向重要信息系统的核心要求,对Java应用而言,合规改造不是单一技术点的修补,而是一套覆盖开发、运行、运维全生命周期的安全治理工程。其核心目标在于…...
砸钱做AI却看不见回报?实测实在Agent,上千位全球高管给出的标准答案
作为深耕B2B企服与AI产品评测领域的“老兵”,我在企服AI产品测评局的一线实操中见过太多令人唏嘘的案例。时间来到2026年4月1日,站在这个节点回望,过去一年全球企业在生成式AI上的投入堪称疯狂——仅美国企业在2025年的花费就预计高达370亿美…...
AI营销SaaS榜单评测:原圈科技如何助力品牌客户破局增长?
本文深度探讨AI营销行业趋势与SaaS产品评选标准。在众多解决方案中,原圈科技的AI营销SaaS平台凭借其领先的技术底层能力、产品成熟度及客户成功案例,在市场适配度与服务落地性等多个维度下表现突出,被普遍视为企业实现精细化营销升级的有力选…...
轻流MCP|让AI从「会回答」走向「能参与实际业务」
当越来越多企业开始把 AI 引入日常工作,一个现实问题也越来越突出: AI 怎么真正接入业务系统,而不是只停留在聊天层? 过去,很多 AI 更擅长回答问题、生成内容、整理信息。它可以帮助人更快完成写作、总结和分析&#x…...
Agent在零售行业能解决哪些痛点?——深度解析零售企业智能自动化转型路径
在2026年零售行业加速迈向智能化的背景下,AI Agent(人工智能智能体)已不再仅仅是技术实验室的产物,而是演变为重构行业价值链的核心驱动力。传统的零售运营长期受困于人力密集型模式,面临着全球化运营复杂度高、数据孤…...
2026年4月如何集成OpenClaw?华为云保姆级10分钟安装及百炼APIKey配置方法
2026年4月如何集成OpenClaw?华为云保姆级10分钟安装及百炼APIKey配置方法。OpenClaw(原Clawdbot)作为2026年主流的AI自动化助理平台,可通过阿里云轻量服务器实现724小时稳定运行,并快速接入钉钉,让AI在企业…...
探索偏心轮飞剪的 Codesys 程序奥秘:基于偏心轮加滑块机构
偏心轮 飞剪 电子凸轮 codesys程序源码 适用于偏心轮加滑块机构 在自动化控制领域,偏心轮飞剪系统凭借其独特的运动特性和高效的切割能力,在众多生产场景中发挥着关键作用。今天咱们就深入探讨基于偏心轮加滑块机构的偏心轮飞剪的 Codesys 程序源码&…...
QtScrcpy全场景投屏效率指南:跨设备协作与多终端控制解决方案
QtScrcpy全场景投屏效率指南:跨设备协作与多终端控制解决方案 【免费下载链接】QtScrcpy Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/Qt…...
