furukawa-laboratory / somf

Python codes of SOM-family launched by Furukawa-laboratory, Kyushu institute of technology
5 stars 2 forks source link

乱数を使っているモジュールで外部からseedを指定できるようにする #139

Open ae14watanabe opened 4 years ago

ae14watanabe commented 4 years ago

target code 対象となるコード 明確に分かっているならば書く libs/datasets/artificial/kura.py など

Is your feature request related to a problem? Please describe. この機能追加リクエストは何かの問題に関連していますか? 通常、乱数を用いた挙動をする関数は引数としてrandom_state など乱数の出方を指定できるはずだが(参考)、現状ではkura.pyなどの乱数を用いているライブラリがそのような仕様になっていない。そのため実行するスクリプトでseedを指定しなければならず諸々の不都合が生じる。

Describe the solution you'd like 望む解決策の説明 参考のようにseedを指定できるようにする。random_state もできると嬉しい。

実装はsklearnのcheck_random_stateを使えばできるはず。

TetraMiyazaki commented 4 years ago

プログラムの順番的にkura.pyでseedを設定(np.random.seed)してしまうと,som.pyのほうのrandomも固定されてしまうんですが,それはどうすればいいですかね

TetraMiyazaki commented 4 years ago

(check_random_state()とnp.random.seedの違いがいまいちわかっていない)

TetraMiyazaki commented 4 years ago

r = np.random.RandomState(1)で指定のseedの乱数器を作れるんですねー その乱数器を使って乱数を生成したら他のクラスに影響はでませんでした. で,やってみたら,大丈夫でした.(check_random_stateはまだわかってない)

ae14watanabe commented 4 years ago

俺がcheck_random_state()しか知らんやったからあれなんやけど、たぶんnp.random.RandomeState()とほぼ一緒と思ってもらって良いです。要するに特定のseedが指定された乱数生成器が得たいってことで、どっちでもできると思う

TetraMiyazaki commented 4 years ago

あーscipy系の乱数生成器がcheck_random_stateなんですね.理解です

ae14watanabe commented 4 years ago

check_random_state(seed)はseedを与えるとそれが指定されたRandomStateを返してくれる関数です。

Turn seed into a np.random.RandomState instance

ae14watanabe commented 4 years ago

sklearnだとこれを使うって慣習なんだろうね。

TetraMiyazaki commented 4 years ago

@kz-halfmoon 君ぜひやってみん?(笑)

kz-halfmoon commented 4 years ago

びゃ゛っ゛!?!? チャレンジしてみたいとは思いますができる気がしません(笑)

TetraMiyazaki commented 4 years ago

これ全部のファイルが対象になってて,ちょっとしんどいですね. tutorial/kura/fitting_kura.pyに関わる範囲だけとしても, som.py と kura.py と fitting.py の3つをか着替える必要があるのか...(気軽にふりすぎたか)

ae14watanabe commented 4 years ago

割と全部だよね