神经网络基本原理简明教程-0-Python-Numpy库的点滴

Python中的Numpy的基本知识

Copyright © Microsoft Corporation. All rights reserved.
适用于License版权许可
更多微软人工智能学习资源,请见微软人工智能教育与学习共建社区

以下列出一些关于Numpy矩阵运算的基本知识和坑点。

首先需要在命令行中安装Numpy库和绘图库(可选):

pip install numpy
pip install matplotlib

然后在python文件的第一行,加入对它们的引用:

import numpy as np
import matplotlib.pyplot as plt
  • 基本矩阵运算
a=np.array([1,2,3,4,5,6]).reshape(2,3)
b=np.array([1,1,1,1,1,1]).reshape(2,3)print("a:")
print(a)print("b:")
print(b)print("a*b:")
print(a*b)print("np.multiply(a,b):")
print(np.multiply(a,b))print("np.dot(a,b.T)")
print(np.dot(a,b.T))# 以下这个命令会出错
print(np.dot(a,b))

结果:

a:
[[1 2 3][4 5 6]]
b:
[[1 1 1][1 1 1]]
a*b:
[[1 2 3][4 5 6]]
np.multiply(a,b):
[[1 2 3][4 5 6]]
np.dot(a,b.T)
[[ 6  6][15 15]]

可以看到,a*b和np.multiply(a,b)的作用是一样的,都是点乘,即两个矩阵中相对应位置的数值相乘,element wise operation。它的输出与相乘矩阵的尺寸一致。

而np.dot是标准的矩阵运算,。如果输入是(3x2)x(2x4),则输出为3x4。要求a的列数和b的行数一样才能相乘,所以我们把b转置了一下,b本身是2行3列,b.T就是3行2列,a是2行3列,结果是2行2列。所以,一定不要被np.dot这个函数名字迷惑了,它不是点乘的意思。

a=np.array([1,2,3])
b=np.array([1,1,1]).reshape(1,3)
print(a.shape)
print(a*b)
a=a.reshape(3,1)
print(a.shape)
print(a*b)

结果:

(3,)
[[1 2 3]]
(3, 1)
[[1 1 1][2 2 2][3 3 3]]

第一次定义a时,是一个1维列向量,shape=(3,),用a*b得到的结果是shape=(1,3)的矩阵[[1 2 3]]。
后来把a.reshape(3,1)3行1列的二维矩阵,虽然表面看起来形式没变,但是在与b点乘后,得到了一个(3,3)的矩阵。
为了避免一些错误,最好在每次矩阵运算前,都把两个矩阵reshape成一个二维矩阵(或多维矩阵)。

神经网络中的计算过程

  • w=(3x2)
    w=np.array([1,2,3,4,5,6]).reshape(3,2)
[[1 2][3 4][5 6]]
  • b=(3x1)
    b=np.array([1,2,3]).reshape(3,1)
[[1][2][3]]
  • x=(2x4)(2个特征值,4个样本)
    x=np.array([2,3,4,5,6,7,8,9]).reshape(2,4)
[[2 3 4 5][6 7 8 9]]
  • c=np.dot(w,x)
[[14 17 20 23][30 37 44 51][46 57 68 79]]
  • z=c+b = np.dot(w,x) + b
    注意:这里加法有对b的列广播(自动扩充b为4x3,通过复制b的值为3列)
b=
[[1 1 1 1][2 2 2 2][3 3 3 3]]z=
[[15 18 21 24][32 39 46 53][49 60 71 82]]
  • y=np.array([6,5,4,3]).reshape(1,4)
    4个样本的标签值
[[6 5 4 3]]
  • dz = z - y
    注意:这里减法有对z的广播(通过复制y的值为3行)
z=
[[15 18 21 24][32 39 46 53][49 60 71 82]]y=
[[6 5 4 3][6 5 4 3][6 5 4 3]]dz=
[[ 9 13 17 21][26 34 42 50][43 55 67 79]]
  • db = dz.sum(axis=1,keepdims=True)/4
    4是样本数。axis=1, 按列相加,即一行内的所有列元素相加。除以4是广播。
[[15.][38.][61.]]
  • dw=np.dot(dz,x.T)/4
    x.T是x的转置。除以4是广播。 dz=3x4, x.T=4x2, 结果是3x2,正好是w的shape。
[[ 57.5 117.5][143.  295. ][228.5 472.5]]
  • w = w - 0.1*dw
[[ -4.75  -9.75][-11.3  -25.5 ][-17.85 -41.25]]
  • b = b - 0.1*db
[[-0.5][-1.8][-3.1]]

点击这里学习更多神经网络基本课程
点击这里提交问题与建议

联系我们: msraeduhub@microsoft.com
学习了这么多,还没过瘾怎么办?欢迎加入“微软 AI 应用开发实战交流群”,跟大家一起畅谈AI,答疑解惑。扫描下方二维码,回复“申请入群”,即刻邀请你入群。

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

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

相关文章

python 命令模式 设计模式_Python 设计模式——命令模式

命令模式是一种行为设计模式。可以用来实现比如安装软件时的安装向导功能,通常安装向导会通过多个步骤根据用户的选择了解用户的偏好。安装向导首先启动一个名为 Command 的对象,用于存储在向导的多个步骤中用户指定的选项。当用户在最后一个步骤中点击完…

神经网络基本原理简明教程-0-基本函数导数公式

基本函数导数公式 Copyright © Microsoft Corporation. All rights reserved. 适用于License版权许可 更多微软人工智能学习资源,请见微软人工智能教育与学习共建社区 如何浏览本系列教程 由于里面包含了大量必要的数学公式,都是用LaTex格式编写…

mysql 硬负载_软负载均衡和硬负载均衡

一、负载均衡负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡,英文名称为 Load Balance,其意思就是分摊到多个操作单元…

微软发布人工智能教育与学习共建社区

步入2019,人工智能(Artificial Intelligence)的浪潮依然汹涌,各国对于AI人才的需求进一步加大:2月,美国总统特朗普签署行政命令,正式启动美国人工智能计划;加拿大正通过“全球技能战…

流量复制_快速体验之《gor+diffy实现线上流量复制到测试环境》

对于没有副作用的接口(重复发送不会产生两份数据、不会产生多余的监控统计等等),就可以用这种方式方便的做回归测试。 部署三个不接外部流量的服务,两份老版本、一份新版本,把生产环境的流量复制到 Diffy 上。 如果生产环境支持通过请求头之类…

顶级程序员的心得 –– Coders at Work

顶级程序员的心得 –– Coders at Work说明:这篇文章是我 2010 年的原创,但是发现 csdn 的版本把格式全部搞坏了,原文在这里 我2009年读了 “Coders at Work”, 这是作者对15 位顶级程序员的采访, 总共600页。 从采访的模式看&…

springboot 技术图谱_java后台(Springboot)开发知识图谱高频技术汇总-学习路线...

【原创】java后台(Springboot)开发知识图谱&&高频技术汇总1.引言:学习一个新的技术时,其实不在于跟着某个教程敲出了几行、几百行代码,这样你最多只能知其然而不知其所以然,进步缓慢且深度有限,最重要的是一开…

CSDN 原力 -- beta 测试中

更新 2022/8: 我们把原力等级和 “学习成就” 结合起来了。 请看: http://edu.csdn.net/me/softwareteacher 2022/7: 能用算法来判定一个 IT技术博客的质量么? 我们发布了博客质量分 API https://www.csdn.net/qc 大家可以去试一试。 2022/6&#xff1…

CSDN 统一标签设计 征求反馈

2021/4/21 更新: 这个设计文档签入了 repo:https://codechina.csdn.net/csdn/csdn-tags 如果你想增删改标签,请去提PR。 CSDN 在长期发展中,各个业务发展出各有特色的标签定义和用户体验,这个博客的目的是想把这些…

华为的涉外知识产权工程师_华为法务社招 | 岗位:高级知识产权工程师

//岗位一:高级知识产权工程师(网联车)//工作地点:上海岗位职责1、 负责智能车/电动车业务领域的专利包管理,为专利规划与分析,申请布局,授权应用等全流程提供专业服务;协助研发部门挖掘专利idea&#xff1b…

2021 部分团队的年终总结

博客主站: 这是 CSDN 的核心业务,持续投入,念念不忘,必有回响。 https://blog.csdn.net/weixin_42481955/article/details/121942860 社区:我们想让社区成为 IT 人的 ‘票圈’ 和 ‘公号’, 目前只是迈出…

gtx1660是什么级别的_GTX1660Ti到底属于什么系列?Nvidia一句话定性了

原标题:GTX1660Ti到底属于什么系列?Nvidia一句话定性了目前大家已经能够从不少渠道买到Nvidia最新的GTX 1660 Ti显卡了,娱乐大师将近20万的分数可以说确实挺不错,而基于图灵构架的它在玩游戏上面也丝毫不弱于GTX 1070,…

博客写作在App

测试在App 上写作博客。 今天和公司的小伙伴去山里总结工作讨论新年的计划。 1)抓住历史给开发者的机遇 2)聚焦,做出非常高质量的产品,体验和运营。做全行业第一。做最好的开发者内容和生态平台。 3)基础要打牢&#x…

mysql 检查_检查MySQL的健康状况

MySQL提供了大量的变量、参数以用于性能及健康状态检查。现在让我们一起看看那些比较重要的变量、参数。1MySQL是否可用?这当然是首先要做的,如果你的MySQL服务都没在跑了,其它监控从何谈起?我们可以使用如下几条命令来查看当前My…

技能树发布的新闻稿

技能树发布的新闻稿 (这是2021年7月构思的产品) 按照 “working backwards” 和 以终为始 的思路,先写一个新闻稿,和关于这个产品的问答。 描述我们的产品最终能产生什么效果和影响,再回过头来推动设计和技术工作&…

mysql slave同步_Slave_SQL_Running: No mysql同步故障解决方法

Slave_SQL_Running: No mysql同步故障解决今天检查数据库发现一台MySQL Slave未和主机同步,查看Slave状态:mysql> show slave status\GSlave_IO_Running: YesSlave_SQL_Running: NoLast_Errno: 1062....Seconds_Behind_Master:NULL原因:1.…

php mysql 反斜杠_MySQL中如何插入反斜杠,反斜杠被吃掉,反斜杠转义(转)

问题描述:mysql中带有反斜杠的内容入库后,发现反斜杠无故失踪了(俗话说被吃掉了)例:插入insert into tb(url) values(absc\eeee); 结果数据库里的内容是:absceeee(反斜杠没了呢)这么详细了相信大家都搞清楚问题了吧,下…

C笔记 -- 一个为 IT人士打造的笔记工具

立即下载: https://plugin.csdn.net/chrome-index-help C笔记 讨论社区:https://bbs.csdn.net/forums/placard?category0&typeId23466 设想我们有这样的工具,你会使用么? 能帮助你学习么? 2022 年 9 月 28 日更…

2022年上半年部分团队的总结

CSDN 是中国 IT 人士学习,成长,成功的平台。 平台有很多小团队,不断地开发出很多小功能,运营活动,那么,半年过去了,大家做得怎么样呢? 我们看看今年上半年各团队的总结:…

mysql 安全删除_mysql的binlog安全删除的一种方法

指定过期天数(expire_logs_days) ---适用于单机版mysql!该参数为全局可动态调整参数,默认值为0,即关闭,取值范围0-99。1.3.1 参数的查看:mysql> show variables like expire_logs_days;-------------------------| …