位置: IT常识 - 正文

神经网络Python实现(9行代码)(神经网络模型python)

编辑:rootadmin
神经网络Python实现(9行代码)

推荐整理分享神经网络Python实现(9行代码)(神经网络模型python),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:神经网络python代码,神经网络python代码,python神经网络例子,python神经网络教程,python3神经网络,神经网络python代码,python神经网络例子,神经网络python代码,内容如对您有帮助,希望把文章链接给更多的朋友!

1. 神经网络简介

神经网络由输入层、输出层和之间若干层(一层或多层)隐含层构成,每一层可以有若干个节点。层与层之间节点的连接状态通过权重来体现。

 下面介绍一下单个神经元:

输入节点:x1,x2

权重:w1,w2

偏置:b

激活函数:h()

输出结果:y

a = x1*w1 + x2*w2 + b

 2. 代码解释

这段代码是在GitHub上找到的,链接如下:

https://github.com/miloharper/simple-neural-network

作者这样描述这段代码:

A neural network written in Python, consisting of a single neuron that uses gradient descent to learn.

一种用Python编写的神经网络,它是由一个使用梯度下降学习的神经元组成。

from numpy import exp, array, random, dottraining_set_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])training_set_outputs = array([[0, 1, 1, 0]]).Trandom.seed(1)synaptic_weights = 2 * random.random((3, 1)) - 1for iteration in range(10000): output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weights)))) synaptic_weights += dot(training_set_inputs.T, (training_set_outputs - output) * output * (1 - output))print( 1 / (1 + exp(-(dot(array([1, 0, 0]), synaptic_weights)))))

① from numpy import exp, array, random, dot

神经网络Python实现(9行代码)(神经网络模型python)

#从Numpy库中调用exp(指数函数)、array(数组)、random(随机函数)、dot(矩阵相乘函数)

② training_set_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])

#神经网络训练部分的输入

③ training_set_outputs = array([[0, 1, 1, 0]]).T

#神经网络训练部分的输出,.T表示矩阵转置

④ random.seed(1)

#使用随机函数生成随机数(这一行代码可以省略,目的只是保证测试结果与作者一致)

⑤ synaptic_weights = 2 * random.random((3, 1)) – 1

⑥ for iteration in range(10000):⑦   output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weights))))

#使用for语句循环10000次,将训练集的输入和权重采用.dot进行矩阵相乘,将相乘得到的结果输入到sigmoid函数,然后将得到的结果赋值给output

⑧   synaptic_weights += dot(training_set_inputs.T, (training_set_outputs - output) * output * (1 - output))

#权重的调整采用“误差加权导数”公式(梯度下降)

⑨ print (1 / (1 + exp(-(dot(array([1, 0, 0]), synaptic_weights))))) #[0.99993704]

#synaptic_weights是调整之后的最终权重,数组(矩阵)[1,0,0]与这个权重矩阵通过dot函数进行相乘,将相乘的结果作为输入引入到sigmoid函数,得到最终的结果

这段代码的模型如下图所示,有三个输入,一个输出,简单来说,神经网络就是一个通过训练集输入的数据不断地迭代更新权重的模型,使之输出更接近“标准答案”,这里推荐看一下B站上的一个有关神经网络的短视频:

一分钟告诉你什么是神经网络

 这9行代码就是把上图的1~4组数据作为训练集进行模型训练,不断地更新权重使其输出更接近训练集中给出的输出标签(标准答案),然后将最后一组数据当做测试集来检测模型的准确度,它最后的结果输出是0.99993704,也是约等于1,其实不难发现,4组测试数据的输出都与第一个输入数据相同,所以说神经网络模型测试得到了正确的结果,这也是说明神经网络有预测结果的作用。

本文链接地址:https://www.jiuchutong.com/zhishi/300203.html 转载请保留说明!

上一篇:【js】超详细js函数基础()

下一篇:2023前端面试题(硬货-持续更新)(2023前端面试题目)

  • 事业单位净资产为负数怎么办
  • 由第三方代付款开票给对方合规吗
  • 长期待摊费用影响什么
  • 企业所得税发票税前扣除异常
  • 非独生子女赡养老人专项附加扣除的标准
  • 应收账款税收风险有哪些
  • 小规模企业应交增值税的二级科目
  • 结转安装费用的会计分录
  • 质量问题产生的影响
  • 结转已完工产品会计分录
  • 违约金没有发票
  • 营改增后租金如何交税
  • 企业所得税可以扣除的项目有哪些
  • 年末如何计提企税分录
  • 对子公司进行增资
  • 财税2018 39号文件
  • 营改增后二手房转让 一般计税 可以差额
  • 企业范围内已利用的荒山要交城镇土地使用税吗
  • 总分机构类型怎么选
  • 周转天数是越大越好吗
  • 开通分期付款
  • 新开的公司会计需要做什么
  • 供应商赠送的原材料怎么做分录
  • 工程会计的主要工作
  • linux服务器常用操作命令
  • 社保会计分录怎么写
  • 巴蒂斯塔卡里
  • 年终奖计提和发放
  • 委托贷款会计科目有哪些
  • 代理进口的增值税如何入账
  • 长期借款和短期借款会计分录的区别
  • 若依名字的含义是什么意思
  • 微信php开发教程
  • 使用二氧化碳灭火器时人应该站在什么位置
  • 小规模纳税人的条件
  • vue.js前端
  • css怎么让文字垂直居中显示
  • git web hook
  • 现金流量表第四个期初现金余额怎么填
  • 帝国cms配置数据库
  • java printing
  • 做项目前期
  • 应收票据到期后账务处理
  • 新政府会计制度下,属于资产类科目的是
  • 预付账款主要核算哪些内容
  • 简述银行存款对应的业务
  • db2 linux
  • 允许在企业所得税税前扣除的
  • 发票已经报送怎么处理
  • 采购暂估业务处理流程
  • 外币支付账户
  • 执行迟延履行金的规定
  • 未开票的收入怎么申报增值税
  • 发票金额与付款金额不一致情况说明
  • 预付款开了增值税专票怎么办
  • 车辆保险费会计账务处理
  • 股东转公户的钱叫什么
  • 工伤事故补助或赔偿标准
  • 审计年审内容
  • 房屋销售预收如何交税
  • 企业要建账需留什么资料
  • Linux(Ubuntu)下Mysql5.6.28安装配置方法图文教程
  • 开机无法进入桌面,无法调用资源管理器
  • linux系统中的输入输出分为三类
  • 硬盘安装在机箱内,属于主机的组成部分
  • win10分辨率2560*1080
  • 默认终端地址
  • aow exe是什么
  • 电脑重装win7系统黑屏
  • linux安装过程中的硬盘分区
  • 360修复漏洞补丁一直下载
  • windows7如何开启游戏模式
  • window八
  • win7旗舰版磁盘清理
  • win10系统锁屏广告怎么取消
  • c++全局变量赋值
  • nodejs如何使用
  • W3C Group的JavaScript1.8 新特性介绍
  • javascript零基础
  • 广东税务待遇
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设