秒懂神经网络并利用一行Python代码建立——代码详细参数思维导图,个人见解,希望可以帮助小白

本文主要是介绍秒懂神经网络并利用一行Python代码建立——代码详细参数思维导图,个人见解,希望可以帮助小白,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

神经网络

  • 0、原理
    • 0.1、一个简单的例子
    • 0.2、神经网络的核心结构是什么呢?
    • 0.3、建立神经网络
    • 0.4、笔者对神经网络结构及其计算原理的理解
  • 1、Python建立神经网络
  • 2、Python代码参数详细解释
  • 3、推荐书单《Python神经网络编程》
  • ★佐佑思维二维码★

0、原理

神经网络就是利用计算器的计算功能来实现一种预测!

这个预测结果的本质就是数字

0.1、一个简单的例子

1

一台计算机对”3×4“的输入进行处理,它的处理也许就是将乘法转化为相对更简单的加法,如何输出结果”12“

其实神经网络的核心就是在修改中间部分,将其按照一定的结构编写,最终输出预测的结果。

0.2、神经网络的核心结构是什么呢?

神经网络来源于大脑,相信大家在中学的生物课上一定学过。
它的基本结构单元类似于大脑神经元:
2就像上面这样,它简化一下就成了神经网络最基本的单元:神经元模型
3

  • 神经元模型的输入是经由轴突传递而来的自变量 x 0 x_0 x0 x 1 x_1 x1 x 2 x_2 x2
  • 通过突触传递到下个神经元的树突
  • 到达细胞体进行刺激信号的整合处理:在细胞体中接收输入变量的是一个线性模型 ,其中 w i w_i wi表示权值 b b b表示截距,通常对应着神经元的激活阈值,即当“信号刺激”达到一定程度(这个一定程度就是阈值)传递信号
  • 接下来是一个非线性的激活函数 f f f(经常采用sigmoid函数,如下图),它将控制是否对外发送信号,对应大脑神经元里的轴突,得到最后的输出 ,这个值将通过突触传递给下一个神经元模型

激活函数:当函数的自变量大于某个阈值时则等于1,否则等于0,为保证输出为连续值,实际经常采用sigmoid函数,它把可能在较大范围内变化的输入变量挤压到(0, 1)输出范围内。

4

  • 与人体神经元一样,一个神经元模型可以有多个输出箭头,且输出值都是一样的。

如果你已经看懂上面的图,那么恭喜你已经了解了神经网络最基本的部分了。

0.3、建立神经网络

神经网络其实就是神经元模型联结在一起,形成多层结构,常见结构形式如下图。每层神经元与下一层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接。这样的神经网络结构通常称为“多层前馈神经网络”。

5

  • 神经网络包含输入层隐藏层以及输出层
  • 一个神经网络模型只有一个输入层,只负责传递
  • 一个神经网络可以有多个隐藏层,负责传输并分析数据
  • 一个神经网络里只有一个输出层,只负责输出结果

0.4、笔者对神经网络结构及其计算原理的理解

神经网络的学习过程,就是根据训练数据来调整神经元之间的链接权值以及每个功能神经元的阈值

最常用的是误差逆传播算法,它的详细的计算公式不作列举,因为大多数研究者只是把它当作一个工具,简单理解它的原理即可。

原理图如下,感受一下:
6笔者的理解,简洁陈述如下:

  • 整个神经网络就是在两组变量间搭建起一个桥梁
  • 神经网络的计算原理就是利用已知的变量值组(各自对应关系)计算出网络中的链接权值阈值(笔者理解这个过程为“找规律”),然后预测未知的变量值
  • 那这个“找规律”它是怎么找的呢?笔者这里简单说说最为常见的误差你传播算法:它的出现是因为寻找规律不是一蹴而就的,就像我们从小做算术题一样,不断犯错,不断批评,如何才能记住,还有我们做找规律的脑筋急转弯,都是一次次不断地犯错、改进,在错误中成长,从而进步。误差逆传播算法就利用的这个道理。
    1. 首先找到一个性能指标,叫作预测值(已知变量值组的输入变量值输入到网络后的输出值)与真实值(已知的对应变量值,也叫标记值)间的误差,误差大家应该都有所了解吧!但是它的定义公式有很多种,针对不同的问题各有利弊,最为常见的就是均方误差
      E k = 1 2 ∑ j = 1 l ( y 预 测 值 − y 真 实 标 记 值 ) E_k=\frac{1}{2}\sum_{j=1}^{l}\left ( y_{预测值}-y_{真实标记值} \right ) Ek=21j=1l(yy)

    2. 就像人一样,每个人都是一个不同的个体,对于刚出生的婴儿也各有不同,那对于神经网络也一样,所以就需要我们随机给定一个初始的权值和阈值

    3. 人在出生后需要不断地学习和成长,才能去认知和感知这个世界,神经网络也一样,它也需要学习,不过它是对数字的学习,输入第一组数值后,会出现一个误差,误差逆传播就是将误差分摊逐级反算回每级每个神经元上

    4. 利用这个误差,修改权值和阈值

    5. 神经网络要想在错误中成长,不断进步,就得不断地改进。所以每次输入一个值都会进行一次误差的修改,然后不断“成熟起来”,都说学无止境,所以你给它的已知数据越多,它的结果越好。

1、Python建立神经网络

建立在你理解神经网络的基础上,你就可以直接利用Python现有的scikit-learn库一步即可建立神经网络。

#输入训练集
train_X= input_data; train_y= output_data
#建立神经网络的一行代码
clf = MLPRegressor(activation='logistic', alpha=0.0001, batch_size=200, beta_1=0.9,beta_2=0.99, hidden_layer_sizes=(5,), learning_rate='constant', learning_rate_init=0.001, max_iter=200, momentum=0.9, nesterovs_momentum=True, power_t=0.5, random_state=4, shuffle=True, solver='lbfgs', tol=0.0001, validation_fraction=0.1, verbose=False, warm_start=False)
#拟合训练集并输出模型
print("模型:",clf.fit(train_X,train_y))

输出结果:

模型:MLPRegressor(activation='logistic', alpha=0.0001, batch_size=200, beta_1=0.9, beta_2=0.99, early_stopping=False, epsilon=1e-08, hidden_layer_sizes=(5,), learning_rate='constant', learning_rate_init=0.001, max_iter=200, momentum=0.9, nesterovs_momentum=True, power_t=0.5, random_state=4, shuffle=True, solver='lbfgs', tol=0.0001, validation_fraction=0.1, verbose=False, warm_start=False)

2、Python代码参数详细解释

怎么样?上面的代码是不是看得眼花缭乱,没关系,我给大家总结好了Sklearn.neural_network.MLPRegressor函数参数的思维导图,附有详细解释:

7这个照片文件有24M左右,无法上传(CSDN限制为5M),可能大家会看不清,没关系,笔者已经将它的BMP格式文件和Xmind文件都放到了佐佑思维VX公众号(回复 “MLP参数思维导图免费获取)和我的CSDN资源里,想要的可去免费提取,(Xmind导图.exe寻找帮助,请联系佐佑思维公众号)!

3、推荐书单《Python神经网络编程》

本书通俗易懂,可以为大部分的人解释神经网络的原理,尤其是对计算机编程一窍不通的人,内容来源于简单的生活实例,是一本极佳的书籍!

提问或寻书帮助,请联系佐佑思维公众号,我们一起共同进步!

★佐佑思维二维码★

佐佑思维

这篇关于秒懂神经网络并利用一行Python代码建立——代码详细参数思维导图,个人见解,希望可以帮助小白的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/367797

相关文章

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性: