大矩陣乘法運算map reduce實現思路

2021-06-29 15:51:26 字數 925 閱讀 8940

實現思路:

儲存:大矩陣很多都是稀疏矩陣,並且有可能有上百萬的行和上百萬的列。

那麼矩陣可以存在類似hbase面向列的分布式資料庫中。

假設htable中有兩個表a和表b分別儲存兩個巨型矩陣a和b。表a和表b都是只有乙個列族。列名都是1開始計數。

那麼表a和表b所儲存的矩陣a和矩陣b表示為如下形式:

矩陣a(m,n):

a11 a12 a13 ...   a1n

a21 a22 a23 ...   a2n

am1 am2 am3 ...   amn

矩陣b(n,k):

b11 b12 b13 ...   b1k

b21 b22 b23 ...   b2k

bn1 bn2 bn3 ...   bnk

計算:a*b = c

計算可以通過mapreduce這種分布式計算模型來計算。

map階段:

1、  從hbase中讀取a表的資料aij,將其拆成k條形式,其中key為的鍵值對。value為<0,j,aij>鍵值對。之所以這樣做是因為aij在計算矩陣乘法過程中會被使用l次。而key值及是其對應的結果矩陣c中的下標。其中0代表該值來自a矩陣。

2、  從hbase中讀取b表的資料bij,將其拆成m條形式,其中key為<[1-m],j>的鍵值對。value為<1,i,bij>鍵值對。之所以這樣做是因為bij在計算矩陣乘法過程中會被使用l次。而key值及是其對應的結果矩陣c中的下標。其中1代表該值來自b矩陣。

reduce階段:

shuffle以後會形成》鍵值對,其中key 為鍵值對,代表c矩陣下標。

值為<[0-1],[1-n],數值》 三元組。如果第乙個數是0則表示來自矩陣a,如果是1表示來自矩陣b。這樣根據第乙個數的值將list分成兩組。然後第二個值相同的兩個value對應的三元組中的最後乙個數值兩兩相乘並求和。即可求出c每個元素的值。

numpy 陣列 矩陣乘法運算

為了區分三種乘法運算的規則,具體分析如下 import numpy as np函式作用 陣列和矩陣對應位置相乘,輸出與相乘陣列 矩陣的大小一致 1.1陣列場景 a np.arange 1,5 reshape 2,2 aarray 1,2 3,4 b np.arange 0,4 reshape 2,2...

計算矩陣運算的乘法次數

描述 矩陣乘法的運算量與矩陣乘法的順序強相關。例如 a是乙個50 10的矩陣,b是10 20的矩陣,c是20 5的矩陣 計算a b c有兩種順序 ab c 或者 a bc 前者需要計算15000次乘法,後者只需要3500次。編寫程式計算不同的計算順序需要進行的乘法次數 知識點 字串 內部整理 練習階...

7 稀疏矩陣的乘法運算

資料壓縮是提高傳輸 儲存效率一種技術。教材第5章介紹了兩種簡單的壓縮儲存方法。本實驗要求實現兩個稀疏矩陣相乘積的演算法。其中稀疏矩陣非零元素數量小於100.輸入 第1個 稀疏矩陣的行數 列數 非零元個數 三個數都大於0 三元組 第2個 稀疏矩陣的行數 列數 非零元個數 三個數都大於0 三元組 以行為...