在创建TensorFlow中的应用程序之前,最好能先理解TensorFlow所需的数学概念。数学被认为是任何机器学习算法的核心。
线性代数
- 标量(scalar) 一个单独的数
- 向量(vector) 一列数,即一维数组
- 矩阵(matrix) 二维数组
- 张量(tensor) 多维数组
矩阵加法
如果2个矩阵维数相同,则这2个矩阵可以相加。矩阵相加时,2个矩阵对应位置的元素进行相加。
示例
A = \left[ \begin{matrix} 1 & 2 \\ 3 & 4 \end{matrix} \right]
B = \left[ \begin{matrix} 5 & 6 \\ 7 & 8 \end{matrix} \right]
A + B = \left[ \begin{matrix} 1+5 & 2+6 \\ 3+7 & 4+8 \end{matrix} \right] = \left[ \begin{matrix} 6 & 8 \\ 10 & 12 \end{matrix} \right]
矩阵减法
矩阵减法与矩阵加法类似,2个维数相同的矩阵,对应位置元素进行相减运算。
示例
A = \left[ \begin{matrix} 1 & 2 \\ 3 & 4 \end{matrix} \right]
B = \left[ \begin{matrix} 5 & 6 \\ 7 & 8 \end{matrix} \right]
A – B = \left[ \begin{matrix} 1 – 5 & 2-6 \\ 3-7 & 4-8 \end{matrix} \right] = \left[ \begin{matrix} -4 & -4 \\ -4 & -4 \end{matrix} \right]
矩阵乘法
2个矩阵相乘,跟加减法稍有不同,不是对应元素相乘。
假设矩阵A (形状m x n) 与 B (形状p x q)相乘,必须n = q,即A的列数必须与B的行数相同,得到的结果是C(形状m x q),其中元素的算法如下:
示例
A = \left[ \begin{matrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{matrix} \right]
B = \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{matrix} \right]
c_{11} = \left[ \begin{matrix} 1 & 2 \end{matrix} \right] \left[ \begin{matrix} 1 \\ 4 \end{matrix} \right] = 1 \times 1 + 2 \times 4 = 9
c_{12} = \left[ \begin{matrix} 1 & 2 \end{matrix} \right] \left[ \begin{matrix} 2 \\ 5 \end{matrix} \right] = 1 \times 2 + 2 \times 5 = 12
c_{13} = \left[ \begin{matrix} 1 & 2 \end{matrix} \right] \left[ \begin{matrix} 3 \\ 6 \end{matrix} \right] = 1 \times 3 + 2 \times 6 = 15
c_{21} = \left[ \begin{matrix} 3 & 4 \end{matrix} \right] \left[ \begin{matrix} 1 \\ 4 \end{matrix} \right] = 3 \times 1 + 4 \times 4 = 19
c_{22} = \left[ \begin{matrix} 3 & 4 \end{matrix} \right] \left[ \begin{matrix} 2 \\ 5 \end{matrix} \right] = 3 \times 2 + 4 \times 5 = 26
c_{23} = \left[ \begin{matrix} 3 & 4 \end{matrix} \right] \left[ \begin{matrix} 3 \\ 6 \end{matrix} \right] = 3 \times 3 + 4 \times 6 = 33
c_{31} = \left[ \begin{matrix} 5 & 6 \end{matrix} \right] \left[ \begin{matrix} 1 \\ 4 \end{matrix} \right] = 5 \times 1 + 6 \times 4 = 29
c_{32} = \left[ \begin{matrix} 5 & 6 \end{matrix} \right] \left[ \begin{matrix} 2 \\ 5 \end{matrix} \right] = 5 \times 2 + 6 \times 5 = 40
c_{33} = \left[ \begin{matrix} 5 & 6 \end{matrix} \right] \left[ \begin{matrix} 3 \\ 6 \end{matrix} \right] = 5 \times 3 + 6 \times 6 = 51
C = AB = \left[ \begin{matrix} c_{11} & c_{12} & c_{13} \\ c_{21} & c_{22} & c_{23} \\ c_{31} & c_{32} & c_{33} \\ \end{matrix} \right] = \left[ \begin{matrix} 9 & 12 & 15 \\ 19 & 26 & 33 \\ 29 & 40 & 51 \\ \end{matrix} \right]
矩阵转置
矩阵转置是指把一个矩阵的列转置为行得到一个新矩阵,矩阵A的转置可以表示为A^T。
示例
A = \left[ \begin{matrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{matrix} \right]
A^T = \left[ \begin{matrix} 1 & 3 & 5 \\ 2 & 4 & 6 \\ \end{matrix} \right]
向量点积
向量是一维数组,2个长度相同的向量可以求点积。点积是指2个长度相同的向量,对应元素相乘然后再相加得到的值。
a = [a_1, a_2, a_3, … a_n]
b = [b_1, b_2, b_3, … b_n]
a \bullet b = a_1b_1 + a_2b_2 + a_3b_3 + … + a_nb_n
示例
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
a与b的点积:
a \bullet b = 1 \times 6 + 2 \times 7 + 3 \times 8 + 4 \times 9 + 5 \times 10 = 130