原理

流程
  1. 生成数据
  2. 生成权重
  3. layer1:
  4. layer2:

x{x}x:输入数据(20,5){(20, 5)}(20,5)
w1{w_{1}}w1​:第一层权重(5,3){(5, 3)}(5,3)
w2{w_{2}}w2​:第二层权重(3,2){(3, 2)}(3,2)
a1{a_{1}}a1​:乘积(20,3){(20, 3)}(20,3)
h1{h_{1}}h1​:过激活函数(20,3){(20, 3)}(20,3)
a2{a_{2}}a2​:乘积(20,2){(20, 2)}(20,2)
h2{h_{2}}h2​:过激活函数(20,2){(20, 2)}(20,2)

正向传播

x{x}x
a1=x∗w1{a_{1}}={x}*{w_{1}}a1​=x∗w1​
h1=sigmoid(a1){h_{1}}=sigmoid({a_{1}})h1​=sigmoid(a1​)
a2=h1∗w2{a_{2}}={h_{1}}*{w_{2}}a2​=h1​∗w2​
h2=sigmoid(a2){h_{2}}=sigmoid({a_{2}})h2​=sigmoid(a2​)

推导

损失函数logloss:J=−1m∑(ylog⁡y^+(1−y)log⁡(1−y^))\displaystyle J=-\frac{1}{m}\sum(y\log{\hat{y}}+(1-y)\log(1-\hat{y}))J=−m1​∑(ylogy^​+(1−y)log(1−y^​))

∂J∂w2=∂J∂h2∗∂h2∂a2∗∂a2∂w2\displaystyle\frac{\partial{J}}{\partial{w_2}}=\frac{\partial{J}}{\partial{h_2}}*\frac{\partial{h_{2}}}{\partial{a_2}}*\frac{\partial{a_{2}}}{\partial{w_{2}}}∂w2​∂J​=∂h2​∂J​∗∂a2​∂h2​​∗∂w2​∂a2​​

∂J∂w1=∂J∂h2∗∂h2∂a2∗∂a2∂h1∗∂h1∂a1∗∂a1∂w1\displaystyle\frac{\partial{J}}{\partial{w_1}}=\frac{\partial{J}}{\partial{h_2}}*\frac{\partial{h_{2}}}{\partial{a_2}}*\frac{\partial{a_{2}}}{\partial{h_{1}}}*\frac{\partial{h_{1}}}{\partial{a_{1}}}*\frac{\partial{a_{1}}}{\partial{w_{1}}}∂w1​∂J​=∂h2​∂J​∗∂a2​∂h2​​∗∂h1​∂a2​​∗∂a1​∂h1​​∗∂w1​∂a1​​

其中公共部分(前两个偏导)为:∂J∂h2∗∂h2∂a2\displaystyle\frac{\partial{J}}{\partial{h_2}}*\frac{\partial{h_{2}}}{\partial{a_2}}∂h2​∂J​∗∂a2​∂h2​​

∂J∂h2=−1m∗y−h2h2(1−h2)\displaystyle\frac{\partial{J}}{\partial{h_2}}=-\frac{1}{m}*\frac{y-h_{2}}{h_{2}(1-h_{2})}∂h2​∂J​=−m1​∗h2​(1−h2​)y−h2​​

∂h2∂a2=h2(1−h2)\displaystyle\frac{\partial{h_{2}}}{\partial{a_2}}=h_{2}(1-h_{2})∂a2​∂h2​​=h2​(1−h2​)

∂a2∂w2=h1\displaystyle\frac{\partial{a_{2}}}{\partial{w_{2}}}=h_{1}∂w2​∂a2​​=h1​

∂a2∂h1=w2\displaystyle\frac{\partial{a_{2}}}{\partial{h_{1}}}=w_{2}∂h1​∂a2​​=w2​

∂h1∂a1=h1∗(1−h1)\displaystyle\frac{\partial{h_{1}}}{\partial{a_{1}}}=h_{1}*(1-h_{1})∂a1​∂h1​​=h1​∗(1−h1​)

∂a1∂w1=x\displaystyle\frac{\partial{a_{1}}}{\partial{w_{1}}}=x∂w1​∂a1​​=x

  1. 求x1{x_{1}}x1​
代码
用numpy实现
import numpy as nptrain_x_dim = 5
sample_1_num = 10
sample_0_num = 10
weight1_dim = 3
weight2_dim = 2train_x_1 = np.random.rand(sample_1_num, train_x_dim)
train_x_0 = np.random.rand(sample_0_num, train_x_dim)*10train_y_1 = np.ones(sample_1_num)
train_y_0 = np.zeros(sample_0_num)weight1 = np.random.rand(train_x_dim, weight1_dim)def sigmoid(x):return 1/(1+np.exp(-x))a1 = np.dot(train_x_1, weight1)
h1 = sigmoid(a1)weight2 = np.random.rand(weight1_dim, weight2_dim)
a2 = np.dot(h1, weight2)
h2 = sigmoid(a2)def sigmoid_derv(x):return sigmoid(x)*(1-sigmoid(x))
用tf实现
from tensorflow import keras
# load data
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
# build model
model = keras.Sequential([keras.layers.Flatten(input_shape=(28, 28)),keras.layers.Dense(128, activation=tf.nn.relu),keras.layers.Dense(10, activation=tf.nn.softmax)
])
# compile model
model.compile(optimizer=tf.train.AdamOptimizer(),loss='sparse_categorical_crossentropy',metrics=['accuracy'])
# train model
model.fit(train_images, train_labels, epochs=5)
# evaluate
test_loss, test_acc = model.evaluate(test_images, test_labels)

对话系统(二)-普通神经网络相关推荐

  1. 信息保留的二值神经网络IR-Net,落地性能和实用性俱佳 | CVPR 2020

    出品 | AI科技大本营(ID:rgznai100) 导语:在CVPR 2020上,商汤研究院链接与编译组和北京航空航天大学刘祥龙老师团队提出了一种旨在优化前后向传播中信息流的实用.高效的网络二值化新 ...

  2. 【2020年BNN网络的SOTA—— ReActNet 】以简单的操作得到更高精度的二值神经网络

    作者| Cocoon 编辑| 3D视觉开发者社区 导语: 本文是由香港科技大学发布于ECCV 2020的论文,是Bi-Real Net作者对二值化研究领域的最新成果,拥有着69.4%的精度,作者通过简 ...

  3. 第一次胜过MobileNet的二值神经网络,-1与+1的三年艰苦跋涉

    作者:思 近日,苹果以 2 亿美元左右价格收购初创公司 Xnor.ai 的消息引起了社区极大的关注.作为一家以二值神经网络 Xnor-net 起家的人工智能初创公司,Xnor.ai 被苹果高价收购,也 ...

  4. 不使用先验知识与复杂训练策略,从头训练二值神经网络!

    选自 arxiv 作者:Joseph Bethge.Marvin Bornstein.Adrian Loy.Haojin Yang.Christoph Meinel 机器之心编译 参与:张玺.路 来自 ...

  5. Lesson 8.38.4 二分类神经网络torch.nn.functional实现单层二分类网络的正向传播

    二.二分类神经网络:逻辑回归 1 二分类神经网络的理论基础 线性回归是统计学经典算法,它能够拟合出一条直线来描述变量之间的线性关系.但在实际中,变量之间的关系通常都不是一条直线,而是呈现出某种曲线关系 ...

  6. NeurIPS 2021 | 华为诺亚Oral论文:基于频域的二值神经网络训练方法

    ©作者 | 机器之心编辑部 来源 | 机器之心 常规符号函数的梯度几乎处处为零,不能用于反向传播.为此,来自华为诺亚方舟实验室等机构的研究者提出一种在频域中估计原始符号函数梯度的新方法. 二值神经网络 ...

  7. 二值神经网络(Binary Neural Networks)最新综述

    作者|秦浩桐.龚睿昊.张祥国 单位|北京航空航天大学 研究方向|网络量化压缩 本文介绍了来自北京航空航天大学刘祥龙副教授研究团队的最新综述文章 Binary Neural Networks: A Su ...

  8. 二值神经网络重大突破,第一次胜过MobileNet!-1与+1的三年艰苦跋涉

    点击我爱计算机视觉标星,更快获取CVML新技术 近日,苹果以 2 亿美元左右价格收购初创公司 Xnor.ai 的消息引起了社区极大的关注.作为一家以二值神经网络 Xnor-net 起家的人工智能初创公 ...

  9. FPGA实现二值神经网络

    写在前面:之前的科研工在是使用RETL实卷机神经网络,其中数据是量化后的8Bit.也就是说还要使用乘法器,但是FPGA的DSP资源很有限.所以有了现在的工作,在FPGA上实现二值神经网络.主要从二值神 ...

  10. 神经网络损失函数特别大_二值神经网络(Binary Neural Networks)最新综述

    作者|秦浩桐.龚睿昊.张祥国 单位|北京航空航天大学 研究方向|网络量化压缩 本文介绍了来自北京航空航天大学刘祥龙副教授研究团队的最新综述文章 Binary Neural Networks: A Su ...

最新文章

  1. 人工智能中常见的误区
  2. MySQL-查询结果缓存
  3. openCV学习教程(一):Mat类的使用
  4. NOIP2018——总结油记
  5. 本地环境和测试环境搭建
  6. rsync增量同步标志位详细解释
  7. SiO2 介孔二氧化硅纳米颗粒的明胶包裹/二氧化硅杂化凝胶固定化醇脱氢酶/白蛋白和壳聚糖包裹的二氧化硅微球/二氧化硅包覆的量子点荧光编码微球
  8. C/C++语言开发环境,【5款免费编程器】请查收!
  9. 原生android tv 盒子,超强大的安卓7.0电视盒子是什么体验!
  10. Linux 安装搭建 tftpd 服务器
  11. 微信名片 服务器繁忙,微信群发名片发不出去
  12. 详细分析Java8中default关键字
  13. 通过禁用文件夹权限解决微信pc端朋友圈自动播放视频的问题
  14. c语言开发dota,DOTA 6.70C AI简体中文修正版下载
  15. Springboot中Bean的具体含义
  16. 网络安全产品之堡垒机介绍以及应用案例
  17. repo 工具使用手册【转】
  18. 服务器占用cpu启动就死机,CPU使用率高会不会造成死机?为何?
  19. 最长回文子串(C++)
  20. 游戏广告变现指南4-如何衡量广告变现效果

热门文章

  1. Qt智能指针--QSharedPointer
  2. 硬件工程师面试经历2015---笔试篇
  3. 机器的速度与主频之间的关系
  4. c 语言epc编码如何解开,EPC编码结构
  5. 设计模式的理解: 职责链模式 (Chain of Responsibility)
  6. matlab 自动扫雷,MATLAB自动扫雷(2)——排雷插旗
  7. 数据结构与算法 / 回溯算法(八皇后、0 - 1 背包)
  8. 数据结构与算法 / 字符串匹配 / BF、PK 算法
  9. JAVA个go哪个写web方便_Go语言实现的一个简单Web服务器
  10. c# html 后台拼_c#编写html后台