线性代数是深度学习重要的数学基础。首先遇到的就是数据问题,本节介绍标量、向量、矩阵、张量和转置这五种类型的数据。

1、标量(scalar)

标量就是纯粹的一个数,例如在c语言中,任意定义的一个数都是标量。标量通常是用小写的变量名称表示,如a,b,x等。

2、向量(vector)

向量就是一列数或一个一维数组。在高中就学习过二维向量以及三维空间向量。

空间向量示意图

高中知识:赋予向量粗体的小写变量名称,或者在小写字母上加个箭头

向量的表达方式/写法

3、矩阵(matrix)

矩阵本质上是一个二维数组,通过行和列来对其进行定位索引。

m*n的矩阵

Python来创建和索引矩阵:

import numpy as np

A=np.array([[1,2,3],[4,5,6]])
print(A)
print(A.size)    #显示矩阵元素总个数
print(A.shape)   #显示矩阵现状,即行行和列数。
print(A[0,0],A[0,1],A[1,1])
print(A[1,:])  #打印矩阵第2行

矩阵的真实情况

运行结果:

[[1 2 3]
[4 5 6]]

6

(2, 3)

1 2 5

[4 5 6]

4、张量(tensor)

张量是向量和矩阵的一种拓展说法。可以将标量视为零阶张量,向量视为一阶张量,那么矩阵就是二阶张量,三阶的就称为三阶张量,以此类推。如一张彩色图片就是一个三阶张量,三个维度分别是图片的高度、宽度和色彩数据。

TensorFlow由tensor(张量)+flow(流)构成。

下面用python生成一个三维矩阵,并查看其中的一些参数:

import numpy as np
B=np.arange(16).reshape((2, 2, 4))   #生成一个3阶矩阵
print(B)
print(B.size)    #显示矩阵元素总数
print(B.shape)   #显示矩阵的维度
print(B[0,0,0],B[0,0,1],B[0,1,1])
print(B[0,1,:])

运行结果:

[[[ 0 1 2 3]
[ 4 5 6 7]]

[[ 8 9 10 11]
[12 13 14 15]]]
16
(2, 2, 4)
0 1 5
[4 5 6 7]

5、转置(transpose)

通俗一点来说就是行列互换。

矩阵转置的数学表达

在Numpy利用张量的T属性即可,非常简单,具体请看演示:

import numpy as np
C=np.array([[1,2,3],[4,5,6]])
D=C.T       #利用张量的T属性(即转置属性)
print(C)
print(D)

运行结果:

[[1 2 3]
[4 5 6]]

[[1 4]
[2 5]
[3 6]]


声明:内容来源于吴茂贵老师主编的学习教材《Python深度学习——基于TensorFlow》,本文仅供学习参考,并加入了博主自己的一些理解和操作,并非原汁原味,为了更好的阅读体验和系统性地学习,请购买正版读物进行学习。



博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/deepAlgebra1.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 05 月 25 日
如果觉得我的文章对你有用,请随意赞赏