質問編集履歴

2

コードを追加

2020/06/26 16:27

投稿

physics303
physics303

スコア89

test CHANGED
File without changes
test CHANGED
@@ -39,3 +39,59 @@
39
39
 
40
40
 
41
41
  np.tensordot で対応できると良いのですが...
42
+
43
+
44
+
45
+ ### 実装
46
+
47
+ たとえば,n=3 だあれば,こんな感じかと思います.
48
+
49
+ 絶対にもっと良い実装方法があるとは思うのですが...
50
+
51
+
52
+
53
+ ```Python
54
+
55
+ l1 = 3
56
+
57
+ l2 = 3
58
+
59
+ l3 = 3
60
+
61
+ l4 = 3
62
+
63
+ J = 2
64
+
65
+ X = np.random.uniform(0,1,(l1,l2,l3,l4))
66
+
67
+ M = np.random.uniform(0,1,(J,l3))
68
+
69
+
70
+
71
+ def mode_3_prodcut(X,M,mode=3):
72
+
73
+ A = np.zeros((l1,l2,J,l4))
74
+
75
+ for i1 in range(l1):
76
+
77
+ for i2 in range(l2):
78
+
79
+ for j in range(J):
80
+
81
+ for i4 in range(l4):
82
+
83
+ term = 0
84
+
85
+ for i3 in range(l3):
86
+
87
+ term += X[i1,i2,i3,i4] * M[j,i3]
88
+
89
+
90
+
91
+ A[i1,i2,j,i4] = term
92
+
93
+
94
+
95
+ return A
96
+
97
+ ```

1

参照に追加

2020/06/26 16:27

投稿

physics303
physics303

スコア89

test CHANGED
File without changes
test CHANGED
@@ -35,3 +35,7 @@
35
35
  モードn積の定義やRでの実装は以下を参考にしています.
36
36
 
37
37
  https://www.alexejgossmann.com/tensor_decomposition_tucker/
38
+
39
+
40
+
41
+ np.tensordot で対応できると良いのですが...