MachineLearningWu_12_BuildNNUsingNumpyOrTF

x.1 咖啡机的例子

我们以煮咖啡为例子来做一个判断煮的咖啡是否符合自己预期的实验。假设煮咖啡的好坏有两个因素决定,温度和煮的时间,图中x表示煮的咖啡很好,o表示煮的咖啡不好,我们根据这个实验来建模,并将模型通过TF进行表达如下,

请添加图片描述

请添加图片描述

x.2 手写数字识别的分类

请添加图片描述

x.3 TF数据存储形式

Wu负责了Google团队的TF开发,他和Numpy的数据存储是有些许差异的。我们注意到,例如输入x是一个一维向量,我们将一维向量输入到网络中,但是在TF中,它往往是以一维矩阵输入到网络中,他是[[200, 17]]而不是[200, 17]。

请添加图片描述

你可能会觉得奇怪,为什么是输入二维矩阵,而不是一维向量,这是因为TF旨在处理大量数学矩阵运算,而非简单的一维向量,是为了数据的统一。

请添加图片描述

请添加图片描述

请添加图片描述

x.4 用TF搭建一个神经网络

我们在原先搭建的网络长如下,

请添加图片描述

请添加图片描述

x.5 用numpy来实现神经网络

对于使用numpy实现神经网络,我们使用内置的dot和sigmoid函数便可以很好地实现,下面是神经网络的手动实现,

请添加图片描述

但是为了方便计算,我们尝试将权重的向量格式改写为矩阵形式,但是我们在每一次乘法运算中仍然取出矩阵的某一列向量,和输入的向量进行乘法,实现如下,我们使用了一个1x2的输入向量,2x3的权重矩阵和1x3的偏置矩阵,最终输出1x3的输出特征矩阵。

请添加图片描述

这样的运算虽然变得高效了,但也并不是那么高效,我们为了高效运算往往需要使用Vectorization矢量化后再运算,如下,右侧便是矢量化后运算结果,我们能够发现,所有的向量都变成了矩阵(即至少是2维及以上),使用矩阵乘法matmul代替了向量乘法dot。

请添加图片描述

x.6 Dot和multiple

对于向量点乘,我们通过将其中一个向量转置后再运用向量乘法或者矩阵乘法能够替换实现,如下是向量和向量的点乘使用向量和向量的乘法替代,

请添加图片描述

如下是向量以此和矩阵的向量做点乘,使用向量和矩阵的乘法代替,

请添加图片描述

矩阵中的向量和矩阵中的向量做点积,使用矩阵和矩阵乘法代替,

请添加图片描述

在Numpy中,矩阵乘法的代码实现,

请添加图片描述

我们需要注意的是,当我们使用矢量化来加速计算时,我们的输入矩阵是列向量,但是往往需要转置后再进行矩阵乘法。

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20284.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web3 开发指南:使用 NFTScan NFT API 构建一个 NFT 链上追踪器

对于大多数 Web3 团队来说,构建一个完整的链上 NFT 数据追踪系统是一项具有挑战性的任务,构建一个 NFT 链上追踪器更是如此。涉及到处理区块链上的智能合约和交易数据,并将其与外部数据源进行整合和分析工作量是十分巨大的: 区块链…

[MySql]表的增删查改

目录 前言: 1.插入数据 2.查询数据 2.1全列查询 2.2指定查询 2.3别名 2.4去重 2.5排序 2.6条件查询 2.7聚合查询 2.7.1group by语句 2.7.2havin语句 2.8联合查询 2.8.1内连接 2.8.2外连接 2.8.3自连接 2.8.4子查询 3.修改 4.删除 前言: 本次大多数使用…

STL算法篇之拷贝修改类算法

STL算法篇之拷贝修改类算法 拷贝类算法copy与copy_backwardremove与remove_copyremove_if与remove_copy_if 修改类算法replace与replace_copyreplace_if与replace_copy_ifiter_swap与swap与swap_range、unique与unique_copy 拷贝类算法 1.copy 区间拷贝 2.copy_backward 逆向拷…

基于单片机的恒温恒湿温室大棚温湿度控制系统的设计与实现

功能介绍 以51单片机作为主控系统;液晶显示当前温湿度按键设置温湿度报警上限和下限;温度低于下限继电器闭合加热片进行加热;温度超过上限继电器闭合开启风扇进行降温湿度低于下限继电器闭合加湿器进行加湿湿度高于上限继电器闭合开启风扇进行…

6. Springboot快速回顾(集成Dubbo)

Dubbo是实现远程调用的一个框架,阿里巴巴开源的。远程调用就是B服务器可以调用A服务器的方法。大型项目会被拆分成多个模块,部署在不同的服务器上。若将公共模块集中部署在一台服务器上,可以方便其他服务器调用。因此,需要Dubbo。…

MATLAB 的函数计算与作图

基本初等函数的输入系统运算与操作函数的输入函数值的计算1. 数值计算方式2. 符号计算方式2.1 函数:sym2.2 函数:syms 函数的作图1. 一般函数 yf(x) 的作图(二维)作图基本形式作多重线作图的线型和颜色作图的网格和标记、图例、字…

如何在SQL Server中实现Ungroup操作

概要 我们经常在SQL Server中使用group by语句配合聚合函数,对已有的数据进行分组统计。本文主要介绍一种分组的逆向操作,通过一个递归公式,实现ungroup操作。 代码和实现 我们看一个例子,输入数据如下,我们有一张产…

【新版系统架构】第十七章-通信系统架构设计理论与实践

软考-系统架构设计师知识点提炼-系统架构设计师教程(第2版) 第一章-绪论第二章-计算机系统基础知识(一)第二章-计算机系统基础知识(二)第三章-信息系统基础知识第四章-信息安全技术基础知识第五章-软件工程…

【webrtc】ProcessThreadAttached

RegisterModule 调用所在的线程指针传递给ProcessThreadAttached ProcessThreadAttached 调用不是在worker thread 而是在 registers/deregister 这个module或者 start stop 这个module的时候 ** ** pacedsender是一个moudle -实现了

用Arthas快速定位线上JVM问题!

Arthas分析FullGC问题定位 对于FullGC那一定不会陌生,一般来说会采用横切FullGC前置拦截(-XX:+HeapDumpBeforeFullGC)和后置拦截(-XX:+HeapDumpAfterFullGC),导出FullGC发生前后的heap dump文件,以便于我们进行FullGC原因的分析和定位。 推测分析问题之FullGC的频率过高…

Kubernetes基础知识点

k8s可以看做是一个集群操作系统,能够对容器进行调度和编排。 Kubernetes中的基本对象 pod 是k8s中的最小单位,一个pod封装一个或者多个容器,存储资源。 deployment 是对pod的服务化封装,可以包含一个或多个pod statefulset 为…

【面试题34】什么是MVC,为什么要使用它

文章目录 一、前言二、MVC介绍2.1 模型(Model)2.2 视图(View)2.3 控制器(Controller) 三、MVC模式的优点四、总结 一、前言 本文已收录于PHP全栈系列专栏:PHP面试专区。 计划将全覆盖PHP开发领域…