从机器学习学python(四) ——numpy矩阵广播及一些技巧

从机器学习学python(四)——numpy矩阵广播及一些技巧

(原创内容,转载请注明来源,谢谢)

在学ng的深度学习微专业时,其中有几节课讲到numpy的一些基本用法,主要是广播。

1、基本运算

考虑下面一个3*4的矩阵,要给每列求和,并且要求出每个元素占本列的百分比,这里不需要用到for循环,直接用numpy的方法即可。

假设矩阵A是3*4的矩阵,则B=A.sum(axis=0)返回的是对矩阵A每一列求和结果的行向量,同理A.sum(axis=1) 返回的是对矩阵A每一行求和结果的列向量。

接下来要求百分比,就用到广播的概念,由于A是3*4的矩阵,B是1*4矩阵,在数学上A/B是没法进行的,但是numpy中,如果用A/B,则会把B扩充成3*4的向量,然后再对应元素相除。

2、广播的通用规则

对于(m,n)矩阵A,(1,n)矩阵B,A与B进行运算(包含加减乘除,下同),则都会将B扩充成(m,n),且每一行的值都一样,都是由第一行扩充出来的。

这并不会改变B的值,而是在内存中进行临时的扩充,目的是为了计算出结果。

同理,B是(m,1)时,会扩充成(m,n)。另外行、列向量,对一个实数进行加减乘除,则会将实数扩充成同等形状的行、列向量后,再运算,具体见下图:

3、一些建议

ng给的一个建议,是最好不要用到秩是1的矩阵,而要将其转为n行1列的矩阵,这样计算起来比较不容易发生问题。

下面是不好的示例,可以看到由于秩是1,故转置前后矩阵是一样的:

下面是好的示例:

当已经有一个秩是1的矩阵,也可以通过reshape方法将其转为正常的矩阵:

——written by linhxx 2018.01.31

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2018-01-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏行者常至

009.python科学计算库seaborn(中)

版权声明:本文为博主原创文章,允许转载,请标明出处。 https://blog.csdn.net/qwdafedv/article/deta...

432
来自专栏机器之心

入门 | 十分钟搞定Keras序列到序列学习(附代码实现)

27112
来自专栏贾志刚-OpenCV学堂

OpenCV中常见的五个滤波函数

初学OpenCV的开发者很容易被OpenCV中各种滤波方法所困扰,不知道到底该用哪里一个来做滤波。表面原因看起来是因为OpenCV中各种滤波方式实在是太多太杂,...

2465
来自专栏腾讯Bugly的专栏

手机端运行卷积神经网络实现文档检测功能(二) -- 从 VGG 到 MobileNetV2 知识梳理

5464
来自专栏Python小屋

Python扩展库scipy.misc中图像转换成pillow图像

众所周知,在数字图像处理领域中有很多基准测试图像,这些图像用来作为科研人员PK自己的算法时的参考,给大家提供一个公平的样本,针对同一个问题进行处理时,可以用这些...

2835
来自专栏机器学习算法全栈工程师

机器学习实战---线性回归提高篇之乐高玩具套件二手价预测

作者:崔家华 编辑:王抒伟 PS(欢迎访问作者个人网站:www.cuijiahua.com) 线性回归 零 前言: 本篇文章讲解线性回归的缩减方法,岭回归以及逐...

5229
来自专栏Python中文社区

用Python从零开始构造决策树

專 欄 ❈ 作者:weapon,不会写程序的浴室麦霸不是好的神经科医生 ❈ 起步 本章介绍如何不利用第三方库,仅用python自带的标准库来构造一个决策树。 ...

1907
来自专栏ATYUN订阅号

【教程】OpenCV—Node.js教程系列:用Tensorflow和Caffe“做游戏”

? 今天我们来看看OpenCV的深度神经网络模块。如果你想要释放神经网络的awesomeness来识别和分类图像中的物体,但完全不知道深度学习如何工作,也不知...

4368
来自专栏人工智能

OpenCV—Node.js教程系列:用Tensorflow和Caffe“做游戏”

AiTechYun 编辑:Yining 今天我们来看看OpenCV的深度神经网络模块。如果你想要释放神经网络的awesomeness来识别和分类图像中的物体,但...

28710
来自专栏奇点大数据

扔掉代码表!用RNN“破解”摩斯电码

作者:Sandeep Bhupatiraju 剧透警告:摩斯电码并不需要破解。它很有用,因为消息可以使用这些代码以最少的设备发送,并且我说它不需要破解,因为代码...

3715

扫码关注云+社区