94

imdb_lstm.pyKeras フレームワーク ( https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py )からサンプルを実行するたびに、異なる結果 (テスト精度) が得られますnp.random.seed(1337)。輸入します。実行ごとに異なる数値が生成されるのを防ぐ必要があります。私は何が欠けていますか?

更新: 再現方法:

  1. Keras をインストールします ( http://keras.io/ )
  2. https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py を数回実行します。モデルをトレーニングし、テストの精度を出力します。
    期待される結果: テストの精度は、すべての実行で同じです。
    実際の結果: テストの精度は実行ごとに異なります。

UPDATE2: MinGW/msys を使用して Windows 8.1 で実行しています。モジュール バージョン:
theano 0.7.0
numpy 1.8.1
scipy 0.14.0c1

UPDATE3: 問題を少し絞り込みました。GPU で例を実行すると (theano フラグ device=gpu0 を設定)、毎回異なるテスト精度が得られますが、CPU で実行すると、すべてが期待どおりに機能します。私のグラフィックカード: NVIDIA GeForce GT 635)

4

12 に答える 12

12

私は最終的に自分のコードで再現可能な結果を​​得ました。これは、Web で見た回答の組み合わせです。最初に、@alex の言うことを実行します。

  1. セットnumpy.random.seed;
  2. PYTHONHASHSEED=0Python 3 に使用します。

次に、次の追加で Keras コードを呼び出して、cuDNN に関して @ user2805751 が指摘した問題を解決する必要がありますTHEANO_FLAGS

  1. dnn.conv.algo_bwd_filter=deterministic,dnn.conv.algo_bwd_data=deterministic

そして最後に、このコメントに従って Theano インストールにパッチを適用する必要があります。

  1. operatorへのすべての呼び出しを*_dev20の通常のバージョンに置き換えますtheano/sandbox/cuda/opt.py

これにより、同じシードに対して同じ結果が得られるはずです。

速度が遅くなる可能性があることに注意してください。実行時間が約 10% 増加しました。

于 2016-10-20T10:05:08.103 に答える
6

Tensorflow 2.0 では、次のようにランダム シードを設定できます。

import tensorflow as tf
tf.random.set_seed(221)


from tensorflow import keras
from tensorflow.keras import layers


model = keras.Sequential( [ 
layers.Dense(2,name = 'one'),
layers.Dense(3,activation = 'sigmoid', name = 'two'),
layers.Dense(2,name = 'three')])

x = tf.random.uniform((12,12))
model(x)
于 2020-06-17T14:19:59.773 に答える
2

Sequential()Keras を使用して、ある種のニューラル ネットワークをトレーニングおよびテストしました。ノイズの多い音声データに対して非線形回帰を実行しました。次のコードを使用して、ランダム シードを生成しました。

import numpy as np
seed = 7
np.random.seed(seed)

val_loss同じデータでトレーニングとテストを行うたびに、まったく同じ結果が得られます。

于 2016-07-14T10:17:14.887 に答える
2

以前の回答に何か追加したいと思います。Python 3を使用していて、実行ごとに再現可能な結果を​​得たい場合は、次のようにする必要があります。

  1. コードの先頭に numpy.random.seed を設定します
  2. PYTHONHASHSEED=0 をパラメーターとして Python インタープリターに与える
于 2016-08-15T06:57:53.947 に答える
0

The Conference Paper: Non-Random Weight Initialisation in Deep Learning Networks for Repeatable Determinism、発行日 2019 年 6 月 5 日、英国リーズ ベケット大学 (LBU) で開催された第 10 回 IEEE 国際会議 Dependable Systems, Services and Technologies (DESSERT-19) で発表、英国、アイルランド、IEEE のウクライナ セクション、2019 年 6 月 5 ~ 7 日

https://ieeexplore.ieee.org/document/8770007

コードの重要な領域を強制することで再現可能な結果を​​得る方法を示します。

これはジャーナル ペーパーに拡張されました: スマート シティ アプリケーションにおける非ランダムな重みの初期化を使用した反復可能な決定論は、The Journal of Reliable Intelligent Environments in a Smart Cities 特別版の深層学習の出版物であり、glorot xavier limts を使用して、パーセプトロン層でのルール抽出に有利な場合がありますが、線形の順序で重みを増やします。

于 2020-01-11T13:33:27.977 に答える