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

吴恩达深度学习笔记 2.10~2.18 向量化与python

 

对于非向量化,我们要求得z的值,必须用到for循环,但是当数据量非常庞大的时候,for循环所用的时间会比较多,这个时候可以使用向量运算来提高速度

用python的函数np.dot实现两个向量/矩阵 相乘.

SIMD:为了加快深度学习神经网络运算速度,可以使用比CPU运算能力更强大的GPU。事实上,GPU和CPU都有并行指令(parallelization instructions),称为Single Instruction Multiple Data(SIMD)。SIMD是单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。SIMD能够大大提高程序运行速度,例如python的numpy库中的内建函数(built-in function)就是使用了SIMD指令。相比而言,GPU的SIMD要比CPU更强大一些。

在举一个例子:

求u关于对于v的每一个元素进行乘方操作,运用向量运算结果如上右图所示.

Vectorizing Logistic Regression:

Broadcasting in Python:

Python中矩阵的运算用到了广播(broadcast)的机制.

 

广播例子:

要求的四个食物中每一项热量所占的百分比,先求出每一项的热量总和

A.sum(axis=0)表示每一个向量从上至下相加,如果axis=1则表示从左到右相加

如果对矩阵的维度不确定,可以采用reshape命令进行重塑.

General Princial In Broadcasting:

'

下面用一些例子来对此进行说明,该原则非常简单,就不一一说明:

接下来我们将总结一些python的小技巧,避免不必要的code bug。

python中,如果我们用下列语句来定义一个向量:

a = np.random.randn(5)
  • 1

这条语句生成的a的维度是(5,)。它既不是行向量也不是列向量,我们把a叫做rank 1 array(秩为1的矩阵)。这种定义会带来一些问题。例如我们对a进行转置,还是会得到a本身。所以,如果我们要定义(5,1)的列向量或者(1,5)的行向量,最好使用下来标准语句,避免使用rank 1 array。

a = np.random.randn(5,1)
b = np.random.randn(1,5)
  • 1
  • 2

除此之外,我们还可以使用assert语句对向量或数组的维度进行判断,例如:

assert(a.shape == (5,1))
  • 1

assert会对内嵌语句进行判断,即判断a的维度是不是(5,1)的。如果不是,则程序在此处停止。使用assert语句也是一种很好的习惯,能够帮助我们及时检查、发现语句是否正确。

另外,还可以使用reshape函数对数组设定所需的维度:a.reshape((5,1))

Juypter notebook的使用:

juypter notebook又称IPython notebook,是一个交互式的笔记本,支持运行超过40种编程语言。本课程所有的编程练习题都将在Jupyter notebook上进行,使用的语言是python

安装过程可参考:https://jupyter.readthedocs.io/en/latest/install.html  官方的文档

Explanation of logistic regression cost function(optional)

之前我们的到了Loss Funtion,现在对其进行一个解释

y hat 等于σ(x+b) ,y hat 可以看做是预测结果为1的一个概率,即P(y=1|x),所以我们能得到:

因为log函数为单调函数,我们可以对其进行一个log的处理得到:

我们希望上述概率P(y|x)越大越好,对上式加上负号,则转化成了单个样本的Loss function,越小越好,这样就得到了我们之前介绍的逻辑回归的Loss function形式。对于训练m个样本,它们是符合独立同分布的,所以我们可以对p(y(i)|x(i))进行乘积,并要所得到的结果最大(即预测结果与输出越接近),将乘积log化后并将负号提出来以后,得到Cost Function,则Cost Function越小越好

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Dar-/p/9322011.html

相关文章:

  • easyui分页查询为什么会有下拉框_Easyui 添加分页组件_EasyUI 教程
  • python-模块,异常,环境管理器
  • 多相机坐标转换_自动驾驶入门之视觉定位坐标转换
  • 蓝书2.2 KMP算法
  • 双下划线一粗一细怎么加_跑跑卡丁车U型弯怎么过技巧教学
  • Java编程语言基础 第三章 季节if用法
  • 基础数据类型转换和深浅拷贝
  • matlab 子图title的位置_MATLAB技巧之绘图篇
  • 管程由哪三部分组成_中药材切片机主要由哪五部分组成呢?
  • socket-详细分析No buffer space available(转载)
  • 怎么保存到桌面_标签打印软件怎么保存标签
  • C++之继承(二)
  • docker mariadb集群_Docker搭建Django+Mariadb环境
  • VueX源码分析(1)
  • python合并文件夹_Python实现合并同一个文件夹下所有PDF文件的方法示例
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Android单元测试 - 几个重要问题
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JSDuck 与 AngularJS 融合技巧
  • Linux下的乱码问题
  • mysql_config not found
  • mysql中InnoDB引擎中页的概念
  • Python 反序列化安全问题(二)
  • Vue小说阅读器(仿追书神器)
  • win10下安装mysql5.7
  • 分享一份非常强势的Android面试题
  • 力扣(LeetCode)357
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 赢得Docker挑战最佳实践
  • ionic异常记录
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • puppet连载22:define用法
  • ​520就是要宠粉,你的心头书我买单
  • ​MySQL主从复制一致性检测
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • ###C语言程序设计-----C语言学习(3)#
  • #define用法
  • (11)MATLAB PCA+SVM 人脸识别
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (论文阅读30/100)Convolutional Pose Machines
  • (七)Knockout 创建自定义绑定
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET 常见的偏门问题
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net快速开发框架源码分享
  • .NET命名规范和开发约定
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [BT]BUUCTF刷题第9天(3.27)
  • [C# 网络编程系列]专题六:UDP编程