teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

参考サイト

2016/11/16 14:05

投稿

tonarino_sazana
tonarino_sazana

スコア13

title CHANGED
File without changes
body CHANGED
@@ -31,7 +31,7 @@
31
31
  x_c = np.square(x-centers).sum(1)
32
32
  return np.exp(-0.5*x_c/(sigma*sigma))
33
33
  ```
34
- 参考にしているのは以下のサイトのことをしたいと考えていまして
34
+ 参考にしているのは以下のサイト
35
35
  http://qiita.com/kenmatsu4/items/0a7a3ef71d4e8bb53da0
36
36
  以下のサイトのソースコードをpythonに変えて実行したいと思っています。
37
37
  https://github.com/hoxo-m/densratio/blob/master/R/uLSIF_search_sigma_and_lambda.R

5

参考サイト

2016/11/16 14:05

投稿

tonarino_sazana
tonarino_sazana

スコア13

title CHANGED
File without changes
body CHANGED
@@ -30,4 +30,8 @@
30
30
  def compute_kernel_Gaussian(x,centers,sigma):
31
31
  x_c = np.square(x-centers).sum(1)
32
32
  return np.exp(-0.5*x_c/(sigma*sigma))
33
- ```
33
+ ```
34
+ 参考にしているのは以下のサイトのことをしたいと考えていまして、
35
+ http://qiita.com/kenmatsu4/items/0a7a3ef71d4e8bb53da0
36
+ 以下のサイトのソースコードをpythonに変えて実行したいと思っています。
37
+ https://github.com/hoxo-m/densratio/blob/master/R/uLSIF_search_sigma_and_lambda.R

4

ソースコードの追加

2016/11/16 14:05

投稿

tonarino_sazana
tonarino_sazana

スコア13

title CHANGED
File without changes
body CHANGED
@@ -4,4 +4,30 @@
4
4
  以下の行列の形にしたいと思っています。
5
5
  ![イメージ説明](ec1e3a8732c10640d31dc2005bd93869.png)
6
6
  nが100000、aが100で
7
- xが2次元で100000列、cが2次元で100列のデータです。
7
+ xが2次元で100000列、cが2次元で100列のデータです。
8
+ ```python
9
+ sigma=10**np.linspace(-3.0,1.0,9)
10
+ lam=10**np.linspace(-3.0,1.0,9)
11
+ kernel_num = 100
12
+ def search_sigma_and_lambda(x, y, c, sigma, lam):
13
+ nx = len(x);ny = len(y);n_min = min(nx,ny);kernel_num = len(c)
14
+
15
+
16
+ score_new = np.inf;sigma_new = 0;lam_new = 0;
17
+ for s in sigma:
18
+ phi_x = np.array([compute_kernel_Gaussian(x,i,s) for i in c])
19
+ phi_y = np.array([compute_kernel_Gaussian(y,i,s) for i in c])
20
+ h = phi_x.sum(1) / nx
21
+ H = np.multiply.outer(phi_y,phi_y.T) / ny←「ここの部分でメモリエラーになります。」
22
+ phi_x = phi_x[np.arange(n_min)]
23
+ phi_y = phi_y[np.arange(n_min)]
24
+ for la in lam:
25
+ B = H + lam * np.identity(kernel_num)
26
+ B_inv = np.inv(B)
27
+ B_inv_X = B_inv.dot(phi_y)
28
+ print B_inv_X;sys.exit()
29
+
30
+ def compute_kernel_Gaussian(x,centers,sigma):
31
+ x_c = np.square(x-centers).sum(1)
32
+ return np.exp(-0.5*x_c/(sigma*sigma))
33
+ ```

3

情報の更新

2016/11/16 07:47

投稿

tonarino_sazana
tonarino_sazana

スコア13

title CHANGED
File without changes
body CHANGED
@@ -2,4 +2,6 @@
2
2
 
3
3
  追記
4
4
  以下の行列の形にしたいと思っています。
5
- ![イメージ説明](ec1e3a8732c10640d31dc2005bd93869.png)
5
+ ![イメージ説明](ec1e3a8732c10640d31dc2005bd93869.png)
6
+ nが100000、aが100で
7
+ xが2次元で100000列、cが2次元で100列のデータです。

2

式の追加

2016/11/16 06:42

投稿

tonarino_sazana
tonarino_sazana

スコア13

title CHANGED
File without changes
body CHANGED
@@ -2,4 +2,4 @@
2
2
 
3
3
  追記
4
4
  以下の行列の形にしたいと思っています。
5
- ![イメージ説明](8cb3350bc0512a49d56258a088b7054f.png)
5
+ ![イメージ説明](ec1e3a8732c10640d31dc2005bd93869.png)

1

式の追加

2016/11/16 06:23

投稿

tonarino_sazana
tonarino_sazana

スコア13

title CHANGED
File without changes
body CHANGED
@@ -1,1 +1,5 @@
1
- pythonで100×100000の行列自身の外積を求めて100×100の行列にしたいのですが、メモリエラーとなり実行出来ません。データが大きくても実行出来る方法があれば、どなたか教えていただけないでしょうか?
1
+ pythonで100×100000の行列自身の外積を求めて100×100の行列にしたいのですが、メモリエラーとなり実行出来ません。データが大きくても実行出来る方法があれば、どなたか教えていただけないでしょうか?
2
+
3
+ 追記
4
+ 以下の行列の形にしたいと思っています。
5
+ ![イメージ説明](8cb3350bc0512a49d56258a088b7054f.png)