基於MapReduce的矩陣乘法運算

2022-04-10 10:57:11 字數 897 閱讀 4362

1、採用兩個mapreduce運算串聯來實現 p

ik= mij*njk

第一步:

map函式:將每個矩陣運算mij傳給鍵值對(j,(m,i,m

ij)),將每個矩陣元素njk傳給鍵值對(j,(n,k,n

jk))

reduce函式:對每個鍵j,檢查與之關聯的值的列表。對每個來自m的值(m,i,m

ij)和來自n的值(n,k,n

jk),產生元組(i,k,m

ijnjk

)。對於鍵j,reduce函式輸出滿足(i,k,mijn

jk)形式的所有元組列表作為值

第二步:

map函式:將上面的reduce函式的輸出結果傳遞給改map函式,形式為(j,[(i1,k1,v1),(i2,k2,v2),...(ip,kp,vp)]),基於這些元素可以產生p個鍵值對((i1,k1),v1),((i2,k2),v2),...((ip,kp),vp)

reduce函式:對每個鍵值(i,k),結算與此鍵關聯的所有值的和,結果記為((i,k),v)

2、單步實現

map函式:對應矩陣m中的每個元素mij,產生一系列鍵值對((i,k),(m,j,mij)),其中k=1,2,...,直到矩陣n的列數。同樣對於矩陣n中的每個元素njk,產生一系列鍵值對((i,k),(n,j,njk)),其中i=1,2,....直到m的行數

reduce函式:每個鍵值(i,k)相關聯的值(m,j,mij)及(n,j,njk)將組成乙個表,其中j對應所有可能的值。reduce函式必須對每個j將具有相同j值的(m,j,mij)及(n,j,njk)接通。乙個簡單的方法是將所有(m,j,mij)及(n,j,njk)分別按照j值排序並放到不同的列表中。將兩個列表的第j個元組中的mij和njk抽出來相乘,然後將這些積相加,最後與鍵(i,k)組對作為reduce函式的輸出結果

矩陣乘矩陣

7 15 矩陣a乘以b 15分 給定兩個矩陣a和b,要求你計算它們的乘積矩陣ab。需要注意的是,只有規模匹配的矩陣才可以相乘。即若a有r a 行 c a 列,b有r b 行 c b 列,則只有c a 與r b 相等時,兩個矩陣才能相乘。輸入格式 輸入先後給出兩個矩陣a和b。對於每個矩陣,首先在一行中...

tensorflow點乘與矩陣乘

若 w 為 m 1 的矩陣,x 為 m n 的矩陣,那麼通過點乘結果就會得到乙個 mn 的矩陣。若 w 為 m n 的矩陣,x 為 m n 的矩陣,那麼通過點乘結果就會得到乙個 mn 的矩陣。w的列數只能為 1 或與x的列數相等 即n w的行數與x的行數相等 才能進行乘法運算。若 w 為 m p 的...

矩陣鏈乘的變換

題意 一串數,每次取掉乙個數並且將這個數與周圍兩個數相乘的結果加起來,最後取得就剩兩個數。求最小的答案。解答 區間dp。在網上看到兩個答案 第一種思路 dp i j 表示從i 1到j最終取得就剩下i 1和j所得的最小值。那麼狀態轉移方程為dp i j min dp i j dp i k dp k 1...