如何用python构建简单神经网络?

news2024/9/19 19:03:09

今天,我们将运用Python来搭建一个简单的神经网络模型!并深入浅出地探索其背后的运作原理。

多输入

提及神经网络时,我们可以将其视为一个高度灵活的函数来理解和应用。

为了做出准确的预测,我们需要构建能够同时组合多个输入的神经网络。,神经网络完全具备这种能力。

拥有多个输入意味着我们也将拥有多个权重,

我们的新神经网络将能够在每次预测时同时接受多个输入。

这使得网络能够结合各种形式的信息来做出更明智的决策,但使用权重的基本机制并未改变。

我们仍然会对每个输入进行处理,就像通过各自的“音量旋钮”一样。换句话说,我们将每个输入乘以它自己的权重。

这里的新特性是,由于我们有多个输入,我们需要将它们的各自预测值相加。因此,我们首先将每个输入乘以其对应的权重,然后将所有局部预测值相加。

这被称为输入的加权和,简称加权和。也有人称之为点积,我们稍后会看到这一点。

Python代码

weights = [0.1, 0.2, 0]

def neural_network(input,weights):
    pred = w_sum(input,weights)
    return pred

 def w_sum(a,b):
  assert(len(a) == len(b))
  output = 0
  for i in range(len(a)):
    output += (a[i] * b[i])
  return output


fingers = [8.5, 9.5, 9.0]
wlrec = [0.65, 0.8,0.8,0.9]
nfans = [1.2, 1.3, 0.5, 1.0]

input = [fingers[0], wlrec[0], nfans[0]]

prediction = neural_network(input,weights)

print(prediction)

我们使用Jupyter笔记本运行这个示例,旨在将启动成本降到最低。

Jupyter Notebook地址:

https://jupyter.org/try-jupyter/notebooks/?path=notebooks/Intro.ipynb

一个由WASM驱动的、在浏览器中运行的Jupyter。

接下来我们需要了解背后一个非常重要的逻辑概念——点积(Dot Product)。

点积

理解点积(加权和)的工作原理及其背后的原因,是真正掌握神经网络如何进行预测的关键部分之一。

简而言之,点积能给我们两个向量之间相似性的概念。这在GPT等模型中尤为重要。比如这些例子:

代码

  • 两个完全相同的向量之间的加权和(w_sum(c,c))最大。

  • 相反,因为a和b没有重叠的权重,所以它们的点积为零。

  • 最有趣的加权和可能是c和e之间的,因为e有一个负权重,这个负权重抵消了它们之间的正相似性。

  • 但是,e与自身的点积会产生数字2,尽管e有负权重(双负变正)。

让我们来熟悉一下点积操作的各种性质。

点积的一些快速数学性质

有时,你可以将点积的性质等同于逻辑与(AND)操作。考虑a和b:

a = [ 0, 1, 0, 1]
 b = [ 1, 0, 1, 0]
  • 如果你问a[0]和b[0]是否都有值,答案是“否”。

  • 如果你问a[1]和b[1]是否都有值,答案仍然是“否”。

  • 因为这对所有四个值都成立,所以最终得分等于0。

  • 每个值都没有通过逻辑与的检验。

 b = [ 1, 0, 1, 0]
 c = [ 0, 1, 1, 0]

b和c之间有一个列共享了相同的值。这通过了逻辑与(AND)测试,因为b[2]和c[2]都有权重。

正是这一列(且仅这一列)使得分数上升至1。

 c = [ 0, 1, 1, 0]
 d = [.5, 0,.5, 0]

幸运的是,神经网络也能够模拟部分逻辑与(AND)操作,虽然这种表述不太准确。

在这个例子中,c和d与b和c共享同一列,但由于d在该列的权重只有0.5,所以最终得分仅为0.5。

在神经网络中建模概率时,我们会利用这一性质。

 d = [.5, 0,.5, 0]
 e = [-1, 1, 0, 0]

在这个类比中,负权重往往意味着逻辑非(NOT)操作,因为任何正权重与负权重配对都会导致分数下降。

此外,如果两个向量都有负权重(如w_sum(e,e)),则神经网络会执行双非(double NOT)操作,反而增加权重。

另外,你也可以说这是在逻辑与之后的逻辑或(OR),因为如果任何一行显示权重,分数就会受到影响。

因此,对于w_sum(a,b),如果(a[0] AND b[0]) OR (a[1] AND b[1])等成立,那么w_sum(a,b)将返回一个正分数。如果有一个值是负的,那么那一列就相当于执行了逻辑非。

阅读示例

这为我们提供了一种粗略地解读权重的方法。

这些例子假设你正在执行w_sum(input,weights),而这些if语句的“那么”部分是抽象的“那么给予高分”。

 weights = [ 1, 0, 1] => if input[0] OR input[2]
 weights = [ 0, 0, 1] => if input[2]
 weights = [ 1, 0, -1] => if input[0] OR NOT input[2]  
 weights = [ -1, 0, -1] => if NOT input[0] OR NOT input[2]
 weights = [ 0.5, 0, 1] => if BIG input[0] or input[2]

注意在最后一行中,weight[0] = 0.5意味着对应的input[0]必须更大才能补偿较小的权重。

非常重要的一点是,这些只是权重!

权重是“连接”神经元的线。

预测

预测本身不过是调整权重以匹配某个函数。

我们将深入探讨函数匹配的实际含义,神经网络做出预测时意味着什么呢?

weights = [0.1, 0.2, 0]

input = [fingers[0], wlrec[0], nfans[0]]

prediction = neural_network(input,weights)

粗略地说,它意味着网络根据输入与权重的相似度给输入打出高分。

请注意,在以下示例中,nfans在预测中被完全忽略,因为与之关联的权重为0。

最敏感的预测因子是wlrec,因为它的权重为0.2,但高分的主要因素是脚趾数量(ntoes),不是因为它的权重最高,而是因为输入与权重的组合值远高于其他。

结论

另外还有几个需要注意点:

你不能随意打乱权重的顺序,因为它们需要处于特定的位置。

此外,权重值和输入值共同决定了对最终得分的整体影响。

最后,负权重会导致某些输入降低最终预测值(反之亦然)。

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

学习路线

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2143778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

吸浮毛宠物空气净化器推荐,希喂、小米、有哈宠物空气净化器测评

养猫需谨慎,不然就要做猫奴一辈子啦!上次堂妹来我家住几天,刚开始还担心和猫处不来,不敢去摸它,走的时候已经约好下次来看它的时间,笑死我了。毕竟猫咪这么可爱,很少有人可以抵抗它的魅力。 这不…

Zabbix 2024 中国峰会在上海举办,Databuff 携最业界领先研发成果重磅亮相

9月13日,Zabbix中国峰会在上海圆满结束。会上共进行了18场技术演讲,共有超过500人参加了本次盛会。 大会开始,Zabbix创始人Alexei Vladishev介绍了Zabbix7.0新功能以及未来的发展蓝图。 随后,乘云数字CEO向成钢分享了《如何打造开…

JVM 调优篇7 调优案例4- 线程溢出

一 线程溢出 1.1 报错信息 每个 Java 线程都需要占用一定的内存空间,当 JVM 向底层操作系统请求创建一个新的 native 线程时,如果没有足够的资源分配就会报此类错误。报错信息:java.lang.outofmemoryError:unable to create new Native Thr…

集群软件在linux上的安装

前置准备 为了保证各个服务器之间的正常通信,要完成集群化环境的前置准备,包括创建多台虚拟机,配置主机名映射,SSH免密登录等等。 配置多个虚拟机 配置多台Linux虚拟机 安装集群化软件,首要条件就是要有多台Linux服务…

web基础—dvwa靶场(四)​File Inclusion

File Inclusion(文件包含) 有些 web 应用程序允许用户指定直接文件流的输入,或允许用户将文件上载到服务器。稍后 web 应用程序访问 web 应用程序上下文中用户提供的输入。通过这样种操作,web 应用程序允许恶意文件执行。 如果选择要包含的文件是目标计…

【系统方案】智慧园区数字园区整体解决全套方案(PPT,Word原件等)

智慧园区建设要点可归纳为以下几点: 基础设施建设:构建高速、稳定的网络基础设施,部署物联网设备,实现园区内设备的互联互通,为智慧化应用提供基础支撑。 数据平台建设:建立统一的数据中心,整合…

Linux中安装maven

Linux中安装maven 1.下载2.安装3.配置环境变量4.maven相关配置 1.下载 下载地址:https://maven.apache.org/download.cgi 2.安装 指定位置上传压缩包: 解压: tar -zxvf apache-maven-3.9.5-bin.tar.gz修改解压缩后的文件名: mv apac…

c++刷题

17.电话号码的组合 来源于题解思路&#xff1a; 继承 CC14 KiKi设计类继承 #include <iostream> #include <memory> using namespace std; class Shape{ private:int x;int y; };class Rectangle:public Shape { public:Rectangle(int length,int width):Shape…

从AI应用排行榜选择AI产品(9月)

2024年9月13日&#xff0c;OpenAI公司宣布推出其全新的AI模型&#xff1a;o1&#xff0c;在数学、编程和科学问题的解决处理能力上取得了显著进步。该模型通过自我对弈强化学习&#xff08;Self-play RL&#xff09;和思维链&#xff08;Chain of Thought, CoT&#xff09;技术…

[C语言]连子棋游戏

文章目录 一、前言二、游戏思路三、游戏方法1、初始化2、判断胜利3、交互4、电脑下棋 四、核心方法说明1、初始化游戏2、销毁棋盘3、显示游戏4、电脑下棋5、用户下棋6、判断游戏状态7、游戏交互 五、游戏效果展示与源码分享1、游戏效果2、源代码 一、前言 对于指针和数组理解尚…

Qt:智能指针QScopedPointer 的使用(以及如何写一个QScopedPointer )

前言 本文讲述QScopedPointer 的使用&#xff0c;以及自己如何写一个QScopedPointer . 正文 QScopedPointer 的常用方法 以下是 QScopedPointer 的一些常用方法及其详细说明&#xff1a; 构造函数&#xff1a; QScopedPointer<T> ptr(new T);用于创建一个 QScopedPoi…

【C/C++】涉及string类的经典OJ编程题

【C/C】涉及string类的经典OJ编程题 一. 把字符串转化成整数&#xff08;atoi&#xff09;解法一&#xff1a;&#xff08;不用long&#xff09;完整代码&#xff1a;解法二&#xff1a;&#xff08;用long&#xff09; 二.字符串相加代码实现&#xff08;含注释&#xff09;&a…

【RabbitMQ】RabbitMQ 概述

RabbitMQ 概述 前⾔什么是MQMQ的作⽤为什么选择RabbitMQ1. Kafka2. RocketMQ3. RabbitMQ 前⾔ Rabbit 也是⼀个公司名. MQ ( message queue ) 消息队列 的意思 , RabbitMQ 是 Rabbit 企业下的⼀个消息队列产品. RabbitMQ 是⼀个实现了 AMQP 的 消息队列 服务,是当前主流的消息…

IBM中国研发部裁员:全球化背景下的中国IT产业挑战与机遇

文章目录 每日一句正能量前言整体分析人才发展裁员对中国IT人才市场的影响&#xff1a;IT从业者提升竞争力的策略&#xff1a; 产业未来后记 每日一句正能量 一切美好的事物都是曲折地接近自己的目标&#xff0c;一切笔直都是骗人的&#xff0c;所有真理都是弯曲的&#xff0c;…

如何写出军工级的代码?

编写军工级代码意味着要达到极高的可靠性、安全性、可维护性和效率&#xff0c;这通常涉及到严格的标准和流程。以下是一些关键点&#xff0c;帮助你编写军工级的代码&#xff1a; 1. 遵循严格的开发流程 军工项目通常需要遵循特定的软件开发标准&#xff0c;例如&#xff1a;…

iptables限制网速

1、使用hashlimit来限速 #从eth0网卡进入INPUT链数据&#xff0c;使用模块hashlimit 限制网速为100kb/s或2mb/s,超过限制的数据包会被DROP。OUTPUT链同理&#xff0c;mode为srcip&#xff0c;有4个mode选项: srcip&#xff08;默认匹配每个源地址IP&#xff0c;配置指定源地址…

VisionPro - 基础 - 00 模板匹配技术和在VP中的使用 - PMAlign - PatMax - (1)

前言 模板匹配是机器视觉领域&#xff0c;尤其是工业视觉领域内&#xff0c;自动化经常要使用的一个视觉算法应用模式。在VP里面&#xff0c;有几种简单的模版匹配的算子&#xff0c;这里大致介绍一下VP的PatMax。 在视觉应用领域&#xff0c;搜索匹配的特征是经常要用到的方…

面试突击-多线程和IO专题(至尊典藏版)

多线程和IO专题 一、多线程专题 1.介绍下进程和线程的关系 进程:一个独立的正在执行的程序 线程:一个进程的最基本的执行单位,执行路径 多进程:在操作系统中,同时运行多个程序 多进程的好处:可以充分利用CPU,提高CPU的使用率 多线程:在同一个进程(应用程序)中同时…

【微服务】Eureka的自我保护机制

Eureka的自我保护模式正是一种针对网络异常波动的安全保护措施&#xff0c;使用自我保护模式能使Eureka集群更加的健壮&#xff0c;稳定的运行。 在正常情况下&#xff0c;Eureka客户端会定期向Eureka服务器发送心跳&#xff0c;以表明它仍然存活和可用。如果Eureka服务器在配…

你认为嵌入式软件开发的尽头是什么?

嵌入式软件开发的“尽头”是一个富有哲理且多维度的概念&#xff0c;因为它不仅关乎技术发展的极限&#xff0c;还涉及到行业应用、市场需求、技术融合与创新等多个方面。从几个不同的视角来看&#xff1a; 技术极限&#xff1a;从纯技术的角度来看&#xff0c;嵌入式软件开发…