从机器学习学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 条评论
登录 后参与评论

相关文章

来自专栏IT派

教程 | 如何使用纯NumPy代码从头实现简单的卷积神经网络

在某些情况下,使用 ML/DL 库中已经存在的模型可能会很便捷。但为了更好地控制和理解模型,你应该自己去实现它们。本文展示了如何仅使用 NumPy 库来实现 C...

1242
来自专栏机器学习养成记

决策树(R语言)

决策树是有监督学习算法中的一种。基于属性做一系列的决策,每次决策要么进入下一级决策,要么生成最终结果。决策树可以作为集成算法中的基分类器,并且有最为广泛的应用。...

31811
来自专栏数据派THU

fastText、TextCNN、TextRNN…这套NLP文本分类深度学习方法库供你选择

文经公众号「机器人圈」授权转载(微信号:ROBO_AI) 本文长度为4473字,建议阅读10分钟 本文为你介绍一套NLP文本分类深度学习方法库及其12个模型。 ...

2.3K12
来自专栏大数据挖掘DT机器学习

用python实现支持向量机对婚介数据的用户配对预测

网上有人用libsvm2.89在Python2.6成功。(一定要libsvm2.89搭配python2.6,其他版本都不能成功,我就是浪费了大量时间在这里!) ...

3475
来自专栏梦里茶室

TensorFlow 深度学习笔记 TensorFlow实现与优化深度神经网络

全连接神经网络 辅助阅读:TensorFlow中文社区教程 - 英文官方教程 代码见:full_connect.py Linear Model 加载lesso...

20410
来自专栏blog.csdn.net/LHWorld

【TensorFlow篇】--Tensorflow框架可视化之Tensorboard

TensorBoard是tensorFlow中的可视化界面,可以清楚的看到数据的流向以及各种参数的变化,本文基于一个案例讲解TensorBoard的用法。

1032
来自专栏人工智能LeadAI

ResNet原理及其在TF-Slim中的实现

01 摘要 微软的深度残差网络ResNet源于2016年CVPR最佳论文---图像识别中的深度残差学习(Deep Residual Learning for I...

5087
来自专栏人工智能LeadAI

实现与优化深度神经网络

全连接神经网络 辅助阅读:TensorFlow中文社区教程 - 英文官方教程(http://www.tensorfly.cn/tfdoc/tutorials/m...

34811
来自专栏深度学习之tensorflow实战篇

Sklearn-train_test_split随机划分训练集和测试集

sklearn.model_selection.train_test_split随机划分训练集和测试集 官网文档: 一般形式: train_test...

3826
来自专栏数据处理

决策树

1514

扫码关注云+社区