質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

703閲覧

chainerの解が毎回異なる

gowgowgow24

総合スコア6

Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/07/30 11:25

基本的な質問かもしれませんがご教示いただけたら幸いです.

chainer を使い計算をしているのですが,毎回結果が異なり,対応策が無いか調べていますが解決策が見つかりません.
現在扱っているのは
・学習データ:5万行(1行あたり4データ)
・テストデータ:5000行
・実施内容:4つのデータからYes/Noを判別する(1or0)

現在までに,
・学習率を変える(0.01,0.001,0.0001など)
・最適化手法を変更する(Adam,SGD)
・中間層数,ノード数を変更する
などしていますが,変更できる項目が多く,時間がかかっております.

なおIris-data-setやMNISTを用いてchainerを操作した時も,若干ではありますが毎回解が異なりました.

今後は重み関数の初期値を固定するなども考えていますが,別の方法がありましたら教えていただきたいです.
ちなみにGPUは使用していません.

よろしくお願いします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

1.以下をプログラムの頭(importの直下)に持ってきました.
乱数シードの設定
SEED = 1
-- 乱数シードの設定 --
def set_random_seed(seed):
random.seed(seed)
np.random.seed(seed)

2.chainの後に乱数シードを設定しました.
set_random_seed(SEED)

3.optimizer の後に,吐き出して重みが変化していないか確認しました.
np.savetxt(f'{dir_out}{hidd}before_l1_W{y4}.csv', model.l1.W.data, delimiter=',', fmt='%.5f')
np.savetxt(f'{dir_out}{hidd}before_l2_W{y4}.csv', model.l2.W.data, delimiter=',', fmt='%.5f')

以上で解決しました.

投稿2019/08/02 02:02

編集2019/08/02 02:06
gowgowgow24

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

初期乱数を固定して計算してみてはどうでしょうか?

Python

1import numpy as np 2import random 3 4def set_random_seed(seed): 5 random.seed(seed) 6 np.random.seed(seed)

投稿2019/07/31 06:11

tera_nsykuh

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gowgowgow24

2019/08/02 00:14 編集

コメントありがとうございます. seedを使って乱数を固定することは確認することができました. ありがとうございます. ・chainerにどのように組み込むのか ・固定した重みを出力するコード ・出力した重みを読み込むコード(重みを変えずepochやnodeの数を変えて検討するときに必要) がわからず,今回も質もさせていただきました. ご教示いただけたら幸いです.
gowgowgow24

2019/08/02 01:55 編集

seedを使いいろいろといじっていいたら解決しました. 重みが一定となっていることも実際に出力して確認,解決しております. ありがとうございました!
tera_nsykuh

2019/08/02 01:05

乱数の固定方法はご記載の"私の実装内容"の冒頭にでも,コメントしたpythonスクリプトを記載してください ``` import numpy as np import random def set_random_seed(seed): random.seed(seed) np.random.seed(seed) num = 10 # お好きな数字に set_random_seed(num) ``` モデルの入出力については,ほかに多くの例がネットに転がっています. ご参考までに一つ https://qiita.com/kaityo256/items/340ce2829e5121358deb
gowgowgow24

2019/08/02 01:53

コメントありがとうございます. 参考にしたところ,解決しました. 非常に助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問