1. 程式人生 > >機器學習入門——線性代數簡單回顧

機器學習入門——線性代數簡單回顧

本節課程回顧了一些簡單但常用的線性代數知識

很基礎的,我會直接跳過,並對矩陣的一些運算進行程式設計實現。

3.1 矩陣的加法和標量乘法

矩陣加法:要求行列數要相等,然後,每個元素對應相加。

exp:

matrix addition


矩陣的標量乘法:每個元素都要乘
exp:

saclar multiplication

3.2 矩陣的向量乘法

矩陣的向量乘法,就是矩陣和向量相乘。要求:矩陣的列數要與向量的行數相等!

exp:

mat vect mul

如上例所示,2×3的矩陣乘以3×1的向量,得到2×1的向量。

3.3 矩陣的乘法

矩陣乘法:實際就是乘加運算,對應行和對應列的對應元素相乘後相加(如下圖所示)。注意:矩陣乘法中,前一個矩陣的列數要與後一個矩陣的行數相等。

矩陣乘法運算過程:

matrix mul1





exp:


3.4 矩陣的轉置和逆

矩陣的轉置 定義矩陣A的轉置:有這樣一個矩陣B,滿足B=a(j,i),即b(j,i)=a(i,j)(B的第i行第j個元素是A的第j行第i個元素),記作轉置

exp:




矩陣的逆 如矩陣A是一個m×m矩陣(即方陣),如果有逆矩陣,則:



矩陣可逆的條件

矩陣A可逆,則A為方陣,且A的行列式值不為0。反過來同樣成立!
方陣A的行列式如果為0,則為奇異方陣(singular)。

exp:

incerse1

顯然,矩陣A與矩陣B相乘,結果為I(單位陣)。所以,A是B的逆陣,B也是A的逆陣。

3.5 程式設計實現矩陣基本運算

程式是使用Python2.7編寫,基於tensorflow框架。

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Tue Jan 17 12:24:29 2017

@author: louishao
"""

import tensorflow as tf

#Matrix addition
mata = tf.constant([[1,2],[3,4],[5,6]])
matb = tf.constant([[5,3],[2,4],[6,7]])
matadd = tf.add(mata,matb)

#Scalar multiplication
cons = tf.constant(3
) mat1 = tf.constant([[1,2],[3,4],[5,6]]) scalmul = tf.mul(cons,mat1) #Matrix vector multiplication mat = tf.constant([[1,2,3],[4,5,6]]) vec = tf.constant([[1],[2],[3]]) matvecmul = tf.matmul(mat,vec) #Matrix multiplication m1 = tf.constant([[1,2],[2,3],[3,4]]) m2 = tf.constant([[2,1],[3,5]]) matmul = tf.matmul(m1,m2) #Matrix transpose mattt = tf.constant([[1,2],[3,4],[5,6]]) mattrans = tf.transpose(mattt) #Matrix inverse matt = tf.constant([[3.0,2.0,0.0],[2.0,1.0,2.0],[2.0,1.0,1.0]],'float32') matinver = tf.matrix_inverse(matt) with tf.Session() as sess: print "Matrix addition" print "the addition is \n%s"%(sess.run(matadd)) print "---------------------------" print "Scalar multiplication" print "the scalar multiplication is \n%s"%(sess.run(scalmul)) print "--------------------------" print "Matrix vector multiplication" print "the matrix vector multiplication is\n%s"%(sess.run(matvecmul)) print "--------------------------" print "Matrix multiplication" print "the matrix multiplication is\n %s"%(sess.run(matmul)) print "--------------------------" print "Matrix transpose" print "transpose is\n %s"%(sess.run(mattrans)) print "-------------------------" print "Inverse matrix" print "matrix inverse is \n%s"%(sess.run(matinver))

執行結果:

Matrix addition
the addition is 
[[ 6  5]
 [ 5  8]
 [11 13]]
---------------------------
Scalar multiplication
the scalar multiplication is 
[[ 3  6]
 [ 9 12]
 [15 18]]
--------------------------
Matrix vector multiplication
the matrix vector multiplication is
[[14]
 [32]]
--------------------------
Matrix multiplication
the matrix multiplication is
 [[ 8 11]
 [13 17]
 [18 23]]
--------------------------
Matrix transpose
transpose is
 [[1 3 5]
 [2 4 6]]
-------------------------
Inverse matrix
matrix inverse is 
[[-0.99999994 -1.99999988  3.99999976]
 [ 1.99999988  2.99999976 -5.99999952]
 [-0.          1.         -1.        ]]