私はTensorFlowの基本を、線形回帰の例を通して学習しています。よくscikit-学ぶ作品で線形回帰を実行:テンソルフローインポートがnumpy計算エラーの原因となる
import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.linear_model import LinearRegression
housing = fetch_california_housing()
lin_reg = LinearRegression()
lin_reg.fit(housing.data, housing.target.reshape(-1, 1))
print(np.r_[lin_reg.intercept_.reshape(-1, 1), lin_reg.coef_.T])
は、次のような結果を返す:同じ使用numpyの(正規方程式)を実行
[[ -3.69419202e+01]
[ 4.36693293e-01]
[ 9.43577803e-03]
[ -1.07322041e-01]
[ 6.45065694e-01]
[ -3.97638942e-06]
[ -3.78654265e-03]
[ -4.21314378e-01]
[ -4.34513755e-01]]
も正常に動作します:
m, n = housing.data.shape
housing_data_plus_bias = np.c_[np.ones((m, 1)), housing.data]
X = housing_data_plus_bias
y = housing.target.reshape(-1, 1)
theta_numpy = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
print(theta_numpy)
出力:
[[ -3.69419202e+01]
[ 4.36693293e-01]
[ 9.43577803e-03]
[ -1.07322041e-01]
[ 6.45065694e-01]
[ -3.97638942e-06]
[ -3.78654265e-03]
[ -4.21314378e-01]
[ -4.34513755e-01]]
私はどちらかを実行した場合
[[ 2.91247440e+32]
[ -1.62971964e+11]
[ 1.42425463e+14]
[ -4.82459003e+16]
[ -1.33258747e+17]
[ -2.04315813e+29]
[ 5.51179654e+14]
[ 5.92729561e+20]
[ 8.86284674e+21]]
:次の結果(別の値たび)を得
import tensorflow as tf
import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.linear_model import LinearRegression
housing = fetch_california_housing()
lin_reg = LinearRegression()
lin_reg.fit(housing.data, housing.target.reshape(-1, 1))
print(np.r_[lin_reg.intercept_.reshape(-1, 1), lin_reg.coef_.T])
:私はTensorFlowをインポートするときに210
しかし、線形回帰を実行する前に、私は、変数や不正確な結果を得ますテンソルフローをインポートしてから、テンソルフローをインポートして、再度計算を繰り返すと、正しい結果が得られます。
TensorFlowをインポートした後にnumpy/scikit-learnから正しい結果が得られることを、どのようにして確認することができますか?
私はtensorflow-gpuでUnbuntu上でAnaconda 4.3.30からPython 3.5.4を実行しています。
numpy version: 1.12.1
tensorflow version: 1.3.0
[該当するかもしれません](https://github.com/tensorflow/tensorflow/issues/14034)にリンクしている[多分関連する](https://github.com/tensorflow/tensorflow/issues/11724) 。 – sascha
@saschaのリーダーに感謝します。この問題は、TensorFlowとAnacondaディストリビューションに付属しているMKLライブラリとの間の悪い相互作用に関係しているようです。 [here](https://github.com/tensorflow/tensorflow/issues/13004)に示されているように、 'export MKL_NUM_THREAD =" 1 "'を使って正しい結果を得ることができました。 – drgfreeman