2016-07-06 154 views
4

我有一個非常奇怪的問題,我得到不同的結果在不同的機器上相同的代碼和相同的數據。相同的Python代碼,相同的數據,不同的機器上的不同結果

我有一個基於numpy/scipy/sklearn的python代碼,我使用anaconda作爲我的基本Python分佈。即使我將整個項目目錄(包括所有數據和代碼)從我的主機複製到另一臺機器並運行它,我得到的結果也是不同的。具體來說,我正在做一個分類任務,我的精確度有3%的差異。我在兩臺機器上使用相同版本的python和anaconda。我的主機是Ubuntu 16.04,並且其結果比其他幾個我試過的操作系統(OSX,Ubuntu 14.04和Centos)的機器要低。所以,我的當前系統配置應該有問題,因爲所有其他機器都顯示一致的結果。由於我的anaconda版本在所有機器中都是一致的,所以我不知道還有什麼問題。任何想法我應該檢查什麼或可能是什麼問題的根源?

我也從頭開始刪除並重新安裝anaconda,但它沒有幫助。

+0

你在使用火車/測試拆分嗎?如果是這樣,這可能是由於拉動不同的樣本。 – zhespelt

+0

我正在使用隨機種子。每次運行時我都沒有得到不同的結果,我只在其中一臺機器上得到不同的結果。所以,我想這一定是由於系統配置。但不知道要檢查什麼。 – CentAu

+0

沒有看看代碼(最好是一些有代表性的示例數據),很難說清楚。不管操作系統如何,相同的代碼/數據/庫***應該產生相同的結果。版本之間可能會有一些軟件包版本差異,其中一些內容發生了變化? – zhespelt

回答

0

如果您的代碼使用線性代數,請檢查它。一般來說,舍入誤差不是確定性的,如果你有嚴重的條件矩陣,它可以。

+0

你能詳細說明嚴重條件下的矩陣嗎? – CentAu

+0

你可以從https://en.m.wikipedia.org/wiki/Condition_number –

+0

開始我會補充說,當調試這些問題時,我會嘗試做一個二進制搜索,比較中間結果以找到算法中的位置事情開始有所不同。祝你好運! –

相關問題