tensorflow結果可重複

2021-10-05 22:49:57 字數 1574 閱讀 4074

最近在學吳恩達的深度學習課程,在參考別人的**的時候,發現在cpu多執行緒情況下和gpu執行的情況下,同樣的**、資料,每次訓練出來的結果都不一樣,這還怎麼調參,於是stackoverflow走起。

windows10 64位

python 3.6

tensorflow 1.14

keras 2.2.5

cuda 10.0

cudnn for cuda 10.0

# seed value

seed_value=

0# 1. set the `pythonhashseed` environment variable at a fixed value

import os

os.environ[

'pythonhashseed']=

str(seed_value)

# 2. set the `python` built-in pseudo-random generator at a fixed value

import random

random.seed(seed_value)

# 3. set the `numpy` pseudo-random generator at a fixed value

import numpy as np

np.random.seed(seed_value)

# 4. set the `tensorflow` pseudo-random generator at a fixed value

import tensorflow as tf

tf.set_random_seed(seed_value)

# 5. configure a new global `tensorflow` session

from keras import backend as k

session_conf = tf.configproto(intra_op_parallelism_threads=

1, inter_op_parallelism_threads=1)

sess = tf.session(graph=tf.get_default_graph(

), config=session_conf)

k.set_session(sess)

就是各種設定隨機數種子,然後強行讓cpu單執行緒跑。。。 感覺這種方式比較拉跨。網路一旦深度變大,cpu跑本來就因為並行度的原因很慢,還要限制為單核,實在是太慢了。

查了不少stackoverflow,最終看到有老哥發了個github的鏈結,點進去一看是nvidia官方的乙個tensorflow gpu跑的乙個包。

pip install tensorflow-determinism
由於我用的是1.14版本,所以應該這樣用

import tensorflow as tf

from tfdeterminism import patch

patch(

)# use tf as normal

總算是解決了gpu可復現的問題。。。

Pytorch 保證實驗結果可重複性質

由於在模型訓練的過程中存在大量的隨機操作,使得對於同乙份 重複執行後得到的結果不一致。因此,為了得到可重複的實驗結果,我們需要對隨機數生成器設定乙個固定的種子。許多部落格都有介紹如何解決這個問題,但是很多都不夠全面,往往不能保證結果精確一致。我經過許多調研和實驗,總結了以下方法,記錄下來。全部設定可...

mysql 可重複讀。

一 可重複讀 我們先看看現象,再分析原理。我的mysql版本是5.5。下面是一張表,只有一條資料,並且我開啟了事物 此時,另乙個事物將record加1,因此我在開啟乙個命令列客戶端,執行下面的命令 成功加1之後,實際上,資料庫中record肯定是2。然後回到之前的客戶端,再查一次 沒毛病,recor...

mysql可重複讀

mysql innodb的預設隔離級別是可重複讀,之前理解有些偏差,查閱一些資料後總結出幾點 首先有兩個概念 一致性檢視 當乙個事務開啟時,innodb會生成乙個檢視,這個檢視是邏輯檢視,通過undo log和row tranzaction id控制實現。在該事務的任何時間點,一致性檢視中的資料都是...