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

神经网络定义

  神经网络定义
  
  人工神经网络,简称神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。
  
  为了描述神经网络,我们先从最简单的神经网络讲起,这个神经网络仅由一个“神经元”构成,以下即是这个“神经元”的图示:
  
  可以看出,这个单一“神经元”的输入-输出映射关系其实就是一个逻辑回归(logistic regression)。
  
  神经网络模型
  
  所谓神经网络就是将许多个单一“神经元”联结在一起,这样,一个“神经元”的输出就可以是另一个“神经元”的输入。例如,下图就是一个简单的神经网络:
  
  Keras实战
  
  使用keras实现如下网络结构, 并训练模型:
  
  输入值(x1,x2,x3)代表人的身高体重和年龄, 输出值(y1,y2)
  
  importnumpyasnp
  
  # 总人数是1000, 一半是男生
  
  n =1000
  
  # 所有的身体指标数据都是标准化数据, 平均值0, 标准差1
  
  tizhong = np.random.normal(size = n)
  
  shengao = np.random.normal(size=n)
  
  nianling = np.random.normal(size=n)
  
  # 性别数据, 前500名学生是男生, 用数字1表示
  
  gender = np.zeros(n)
  
  gender[:500] =1
  
  # 男生的体重比较重,所以让男生的体重+1
  
  tizhong[:500] +=1
  
  # 男生的身高比较高, 所以让男生的升高 + 1
  
  shengao[:500] +=1
  
  # 男生的年龄偏小, 所以让男生年龄降低 1
  
  nianling[:500] -=1
  
  创建模型
  
  fromkerasimportSequential
  
  fromkeras.layersimportDense, Activation
  
  model = Sequential()
  
  # 只有一个神经元, 三个输入数值
  
  model.add(Dense(4, input_dim=3, kernel_initializer='random_normal', name="Dense1"))
  
  # 激活函数使用softmax
  
  model.add(Activation('relu', name="hidden"))
  
  # 添加输出层
  
  model.add(Dense(2, input_dim=4, kernel_initializer='random_normal', name="Dense2"))
  
  # 激活函数使用softmax
  
  model.add(Activation('softmax', name="output"))
  
  编译模型
  
  需要指定优化器和损失函数:
  
  model.compile(optimizer='rmsprop',
  
  loss='categorical_crossentropy',
  
  metrics=['accuracy'])
  
  训练模型
  
  # 转换成one-hot格式
  
  fromkerasimportutils
  
  gender_one_hot = utils.to_categorical(gender, num_classes=2)
  
  # 身体指标都放入一个矩阵data
  
  data = np.array([tizhong, shengao, nianling]).T
  
  # 训练模型
  
  model.fit(data, gender_one_hot, epochs=10, batch_size=8)
  
  输出(stream):
  
  Epoch1/10
  
  1000/1000[==============================] -0s235us/step - loss:0.6743- acc:0.7180
  
  Epoch2/10
  
  1000/1000[==============================] -0s86us/step - loss:0.6162- acc:0.7310
  
  Epoch3/10
  
  1000/1000[==============================] www.gcyl159.com-0s88us/step - loss:0.5592- acc:0.7570
  
  Epoch4/10
  
  1000/1000[==============================] www.feifanyule.cn-0s87us/step - loss:0.5162- acc:0.7680
  
  Epoch5/10
  
  1000/1000[==============================] www.tianjiuyule178.com-0s89us/step - loss:0.4867- acc:0.7770
  
  Epoch6/10
  
  1000/1000[==============================] -0s88us/step - loss:0.4663- acc:0.7830
  
  Epoch7/10
  
  1000/1000[==============================] -0s87us/step - loss:0.4539- acc:0.7890
  
  Epoch8/10
  
  1000/1000[==============================] www.gcyL157.com-0s86us/step - loss:0.4469- acc:0.7920
  
  Epoch9/10
  
  1000/1000[==============================] www.michenggw.com/-0s88us/step - loss:0.4431- acc:0.7940
  
  Epoch10/10
  
  1000/1000[==============================] www.gcyl152.com/-0s88us/step - loss:0.4407- acc:0.7900
  
  输出(plain)://Python学习开发705673780
  
  进行预测
  
  test_data = np.array([[0,0,0]])
  
  probability = model.predict(test_data)
  
  ifprobability[0,0]>0.5:
  
  print('女生')
  
  else:
  
  print('男生')
  
  ###
  
  输出(stream):
  
  女生
  
  关键词解释
  
  input_dim: 输入的维度数
  
  kernel_initializer: 数值初始化方法, 通常是正太分布
  
  batch_size: 一次训练中, 样本数据被分割成多个小份, 每一小份包含的样本数叫做batch_size
  
  epochs: 如果说将所有数据训练一次叫做一轮的话。epochs决定了总共进行几轮训练。
  
  optimizer: 优化器, 可以理解为求梯度的方法
  
  loss: 损失函数, 可以理解为用于衡量估计值和观察值之间的差距, 差距越小, loss越小
  
  metrics: 类似loss, 只是metrics不参与梯度计算, 只是一个衡量算法准确性的指标, 分类模型就用accuracy

相关文章:

  • ssm整合详解
  • const的用法,特别是用在函数前面与后面的区别
  • React源代码解析(3):组件的生命周期
  • C++17 并行排序初体验
  • Oracle DataGuard常用管理命令
  • SSH远程管理常用的几种配置
  • Nuxt 开发 - 项目初始化
  • 赖世雄:新中考英语听说满分冲刺 笔记
  • MariaDB数据基础应用
  • 百度小程序遇到的问题
  • 【总结整理】房产类---转自人人都是产品经理
  • Mac mojova 10.14.1 安装 Cocoapods
  • RabbitMQ的前世今生
  • SpringBoot服务器压测对比(jetty、tomcat、undertow)
  • HDU-1087-Super Jumping! Jumping! Jumping!(DP+上升子序列)
  • 网络传输文件的问题
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 07.Android之多媒体问题
  • 2017 年终总结 —— 在路上
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Git同步原始仓库到Fork仓库中
  • iOS 颜色设置看我就够了
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JavaScript服务器推送技术之 WebSocket
  • JavaScript学习总结——原型
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • overflow: hidden IE7无效
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Service Worker
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Spring核心 Bean的高级装配
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 从重复到重用
  • 经典排序算法及其 Java 实现
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 聊聊directory traversal attack
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 用jQuery怎么做到前后端分离
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #微信小程序:微信小程序常见的配置传值
  • (+4)2.2UML建模图
  • (13):Silverlight 2 数据与通信之WebRequest
  • (k8s中)docker netty OOM问题记录
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Python) SOAP Web Service (HTTP POST)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (南京观海微电子)——COF介绍
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)linux自定义开机启动服务和chkconfig使用方法