2016-12-13 8 views
1
def test_n_jobs_parallel(): 
# Test to check the functioning of n_jobs parameter. 
    for kernel in kernels: 
     gpr1 = GaussianProcessRegressor(kernel=kernel, n_jobs=1, 
             n_restarts_optimizer=5).fit(X, y) 
     gpr2 = GaussianProcessRegressor(kernel=kernel, n_jobs=2, 
             n_restarts_optimizer=5).fit(X, y) 
     gpr3 = GaussianProcessRegressor(kernel=kernel, n_jobs=-1, 
             n_restarts_optimizer=5).fit(X, y) 
     y1, y1_cov = gpr1.predict(X, return_cov=True) 
     y2, y2_cov = gpr2.predict(X, return_cov=True) 
     y3, y3_cov = gpr3.predict(X, return_cov=True) 

    # Successfully passed tests 
     assert_almost_equal(y1, y2) 
     assert_almost_equal(y1, y3) 
     assert_almost_equal(y1_cov, y2_cov) 
     assert_almost_equal(y1_cov, y3_cov) 
    # Failing tests 
     assert_almost_equal(gpr1.alpha_, gpr2.alpha_) 
     assert_almost_equal(gpr1.alpha_, gpr3.alpha_) 
     assert_almost_equal(gpr1.log_marginal_likelihood_value_, 
          gpr2.log_marginal_likelihood_value_) 
     assert_almost_equal(gpr1.log_marginal_likelihood_value_, 
          gpr3.log_marginal_likelihood_value_) 

また、精度値(必要な小数点以下の桁数)を減らしました。この問題は少数のカーネルでのみ発生します。私はあなたの問題を引き起こしている可能性がありますことを考えることができ異なる 'n_jobs'パラメータで同じ結果を返さない恥ずかしがっているパラレルヘルパー

答えて

1

2つのこと:

  1. アルゴリズムは、私が設定しようとランダムシード

を取り付ける時にカーネルハイパー変更を使用していますランダムシードを定数にして再試行します。それがうまくいかない場合は、あなたのテストでどのカーネルが失敗するのか分かりますか?

(これ以上のコメントですが、私の特権はそれほど高くはありません)

+0

ランダムシードの解決策があります。 –

関連する問題