問題タブ [binary-reproducibility]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - パッケージをロードしますが、同じ名前のパッケージが既にロードされています
同じ Python パッケージの 2 つのバージョンがあります。現在のバージョンのサブパッケージ内のモジュールから、パッケージの古いバージョン (過去に自分自身をコピーしたもの) 内の関数を呼び出せるようにする必要があります。
今いる場所:
古いバージョン:
<HERE>
「古い」ものをインポートしてf
実行する必要があります。
理想的には
- 関数
f
は、パッケージの新しいバージョンについて何も知らずに、古いパッケージ内でその生活を送る必要があります - 新しいパッケージのモジュールはそれを呼び出し、その寿命を延ばし、結果を取得してから、古いパッケージの存在を完全に忘れる必要があります (したがって、「import package.subpackage2」を呼び出した後
f
、「新しい」パッケージを実行する必要があります)。バージョン) - それを行うことはひどく複雑であってはなりません
根底にあるアイデアは、あるタスクに使用したコードを出力データと共に保存し、その一部を実行できるようにすることで、再現性を向上させることです。
悲しいことに、これは Python 3 での簡単な作業ではないことを理解していたので、何らかの妥協を受け入れる準備ができています。たとえば、古いコードを実行した後、「新しい」コードf(x)
の名前が古いコードにバインドされることを受け入れる準備ができています。package
編集
を使用して2つの方法で試しましたimportlib
。アイデアは、オブジェクトを作成してから実行することでしたmod
がf = getattr(mod, "f")
、機能しません
- に変更
sys.path
し['.../past/package/subpackage']
て呼び出すimportlib.import_module('package.subpackage.module')
。問題はsys.path
、おそらく名前package
がすでにsys.modules
spec = importlib.util.spec_from_file_location("module", "path..to..past..module.py")) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module)
その場合、相対インポート (from . import module2.py
) は機能せず、「親パッケージが不明な相対インポートを試みました」というエラーが表示されます。
tensorflow - Tensorflow バックグラウンドを持つ Keras で再現可能な結果
私は自分のネットワークを持っています。しかし、コードを実行するたびに異なる出力が得られます。私は keras (Tensorflow バックエンドを使用) を使用しています。再現性のために次のコードを記述します。私のトレーニング サンプル: 280、検証サンプル # 27、テスト サンプル # 21。