标签:减法 image 开发 element pytho 一个 issue 通过 命令
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成一个二维矩阵(或多维矩阵)。
[[1 2]
[3 4]
[5 6]]
[[1]
[2]
[3]]
[[2 3 4 5]
[6 7 8 9]]
[[14 17 20 23]
[30 37 44 51]
[46 57 68 79]]
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]]
[[6 5 4 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]]
[[15.]
[38.]
[61.]]
[[ 57.5 117.5]
[143. 295. ]
[228.5 472.5]]
[[ -4.75 -9.75]
[-11.3 -25.5 ]
[-17.85 -41.25]]
[[-0.5]
[-1.8]
[-3.1]]
点击这里学习更多神经网络基本课程
点击这里提交问题与建议
联系我们: msraeduhub@microsoft.com
学习了这么多,还没过瘾怎么办?欢迎加入“微软 AI 应用开发实战交流群”,跟大家一起畅谈AI,答疑解惑。扫描下方二维码,回复“申请入群”,即刻邀请你入群。
神经网络基本原理简明教程-0-Python-Numpy库的点滴
标签:减法 image 开发 element pytho 一个 issue 通过 命令
原文地址:https://www.cnblogs.com/ms-uap/p/10602561.html