【机器学习】使用python手写三层神经网络

  • 输入层到第一层的传递表示
  • 第一层到第二层的传递表示
  • 第二层到第三层的传递表示
  • 全过程传递表示代码

输入层到第一层的传递表示

首先看输入层到第一层的第一个神经元的信号传递过程:

可以用数学式子表示第一层的第一个神经元的值:

如果用矩阵乘法运算,第一层的加权和可以表示成下面形式:

考虑激活函数的话,也就是这样一个代码表示形式:其中A1就包含了第一层所有节点的加权值。加权值带入到激活函数里得到的Z1是下一层的输入。

A1 = np.dot(X,W1) + B1
Z1 = sigmoid(A1)

第一层到第二层的传递表示

第一层到第二层的信号传递过程图如下:

同理可以写出这个传递的代码表示形式:无非是把Z1作为输入。

a2 = np.dot(z1, W2) + b2
z2 = sigmoid(a2)

第二层到第三层的传递表示

第二层到第三层的信号传递过程图如下:

可以写出这个传递的代码表示形式:

a3 = np.dot(z2, W3) + b3
y = softmax(a3)
# 或者y = a3

这里面加权和不是放到类似前面的激活函数里面。

输出层的激活函数,回归问题用恒等函数,分类问题用softmax函数。

输出层激活函数是恒等函数,则输入信号会原封不动的输出。

softmax函数的数学表示:

softmax函数输出是0-1之间的实数,并且softmax函数输出值总和是1,这样的话,可以把softmax函数的输出解释成概率。即便使用了softmax函数,各个元素之间的大小关系不会改变。

由于softmax函数要进行指数运算,指数函数的值可能会很大,导致溢出问题。

可以把分子分母都乘以C,然后我们把公式变成了exp(ak+c),如果c是输入信号中的最大值,那么公式里面减去c之后,就不会溢出了。

它的代码实现为:

def softmax(a):c = np.max(a)exp_a = np.exp(a-c)#防溢出sum_exp_a = np.sum(exp_a)y = exp_a/sum_exp_areturn y

全过程传递表示代码

代码如下,其中x是输入的图像数据。W1, W2, W3分别代表第1、2、3层的所有权重, b1, b2, b3分别代表第1、2、3层的所有偏置,默认我们的network已经训练好了权重和偏置的值。

def predict(network, x):W1, W2, W3 = network['W1'], network['W2'], network['W3']b1, b2, b3 = network['b1'], network['b2'], network['b3']a1 = np.dot(x, W1) + b1z1 = sigmoid(a1)a2 = np.dot(z1, W2) + b2z2 = sigmoid(a2)a3 = np.dot(z2, W3) + b3y = softmax(a3)return y

使用python构建三层神经网络、softmax函数相关推荐

  1. DL之DNN:利用numpy自定义三层结构+softmax函数建立3层完整神经网络全部代码实现(探究BP神经网络的底层思想)

    DL之DNN:利用numpy自定义三层结构+softmax函数建立3层完整神经网络全部代码实现(探究BP神经网络的底层思想) 目录 输出结果 代码实现 输出结果 代码实现 #DL之NN:利用numpy ...

  2. 从头学习计算机网络_如何从头开始构建三层神经网络

    从头学习计算机网络 by Daphne Cornelisse 达芙妮·康妮莉丝(Daphne Cornelisse) 如何从头开始构建三层神经网络 (How to build a three-laye ...

  3. 独家 | 数据科学家的必备读物:从零开始用 Python 构建循环神经网络(附代码)...

    作者:Faizan Shaikh 翻译:李文婧 校对:张一豪 本文约4300字,建议阅读10+分钟. 本文带你快速浏览典型NN模型核心部分,并教你构建RNN解决相关问题. 引言 人类不会每听到一个句子 ...

  4. python实现三层神经网络 (BP)

    三层神经网络 (numpy实现) 文件目录 线性层 前向传播公式: WX+bWX+bWX+b 代码 def forward(self, X):return np.matmul(X, self.W) + ...

  5. python构建简单神经网络_Python构建一个简单的神经网络,Pytorch,搭建

    首先搭建一个神经网络: import torch import torch.nn.functional as F from torch.autograd import Variable import ...

  6. 用python实现三层神经网络反向传播更新权重

    #训练集http://www.pjreddie.com/media/files/mnist_train.csv #测试集http://www.pjreddie.com/media/files/mnis ...

  7. BP学习算法-构建三层神经网络

    引: 人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),是一种模仿动物神经网络行为特征, ...

  8. python构建bp神经网络_鸢尾花分类(一个隐藏层)__1.数据集

    IDE:jupyter 目前我知道的数据集来源有两个,一个是csv数据集文件另一个是从sklearn.datasets导入 1.1 csv格式的数据集(下载地址已上传到博客园----数据集.rar) ...

  9. 《深度学习入门》实现三层神经网络前向传播

    使用python实现三层神经网络前向传播推理. #实现三层神经网络前向传播 import numpy as np #激活函数 def sigmoid(x):return 1 / (1 + np.exp ...

最新文章

  1. 一次因NAS存储故障引起的Linux系统恢复案例
  2. 图解Spark原理及实践----大数据技术栈12
  3. 自适应采样非局部神经网络的点云鲁棒操作
  4. Ubuntu16.04能识别U盘,但无法识别光盘
  5. 【随机】Kuroni and the Punishment(CF1305F)
  6. 使用Marshal.Copy把Txt行数据转为Struct类型值
  7. 项目研发流程及管理之我见
  8. 开发人员的幸福:您需要知道的
  9. 中国移动停售华为5G手机?双方回应...
  10. dos进入mysql不记得密码_windos mysql 忘记密码,无密码登录,重新登录
  11. 《Java程序员职场全功略:从小工到专家》连载三:IT语言平台
  12. 《安富莱嵌入式周报》第259期:2022.03.28--2022.04.03
  13. 计算机语言栏不能添加,电脑电脑输入法添加不了怎么办
  14. 查看电脑的数据库地址
  15. 【千峰】网络安全学习笔记
  16. 2023版golang面试题100道(map)
  17. 网络安全职业规划(笔记)
  18. vue版本控制器nvm安装使用教程
  19. 企业级负载均衡集群——lvs的DR模式(直接路由模式)详细说明
  20. opencv传统分割算法总结(多边形拟合,水平投影,直线检测)

热门文章

  1. 丘处机《摄生消息论》(转)
  2. boost库下的deadline_timer和steady_timer 区别
  3. 八皇后问题和八数码问题的最陡上升爬山法、首选爬山法、随机重启爬山法、模拟退火算法的分析和实现
  4. 浏览器播放rtsp视频流方案(ffmpeg + nginx转m3u8)
  5. php统计用户留存脚本,SQL 统计用户留存
  6. uniapp 可视化开发_uniapp的简单安装流程使用教程
  7. php windows 64下载地址,VSCode Windows 64位 下载
  8. kalman滤波在雷达目标跟踪中的应用_简述Automotive radar中的多目标跟踪处理
  9. 让IE浏览器提示下载或直接打开word文档
  10. Logback介绍及入门