回答編集履歴

3

コードの間違いを修正

2020/04/25 21:00

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -6,11 +6,11 @@
6
6
 
7
7
  # viewとcopyがわかっていないと理解不能な部分
8
8
 
9
- result = np.empty(data.shape, data.dtype)
9
+ result = np.empty((m1 + m2) * k, data.dtype)
10
10
 
11
- o1 = result[:k*n1].reshape(k, n1)
11
+ o1 = result[:k*m1].reshape(k, m1)
12
12
 
13
- o2 = result[k*n1:].reshape(k, n2)
13
+ o2 = result[k*m1:].reshape(k, m2)
14
14
 
15
15
 
16
16
 

2

追記

2020/04/25 21:00

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -30,4 +30,4 @@
30
30
 
31
31
 
32
32
 
33
- 割とメモリ食いなので(最大の条件だと結果の配列だけで1.6GB、全体ではその数倍くらいになるでしょう)貧弱なコンピュータ環境だとスワップして遅い可能性もあります。処理自体は10秒くらい
33
+ 割とメモリ食いなので(最大の条件だと結果の配列だけで1.6GB、全体ではその数倍くらいになるでしょう)貧弱なコンピュータ環境だとスワップして遅い可能性もあります。処理自体は私の環境で10秒くらいなので、そんなに遅いとも思えず。

1

凡ミス修正

2020/04/25 14:23

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -14,9 +14,9 @@
14
14
 
15
15
 
16
16
 
17
- np.dot(d1.reshape(k, n1), A.T, out=o1)
17
+ np.dot(data[:k*n1].reshape(k, n1), A.T, out=o1)
18
18
 
19
- np.dot(d2.reshape(k, n2), B.T, out=o2)
19
+ np.dot(data[k*n1:].reshape(k, n2), B.T, out=o2)
20
20
 
21
21
  ```
22
22
 
@@ -27,3 +27,7 @@
27
27
 
28
28
 
29
29
  あとはfloat32でやれば倍くらいになると思います。精度が十分ならそれでどうぞ。
30
+
31
+
32
+
33
+ 割とメモリ食いなので(最大の条件だと結果の配列だけで1.6GB、全体ではその数倍くらいになるでしょう)貧弱なコンピュータ環境だとスワップして遅い可能性もあります。処理自体は10秒くらい