2017-03-17 58 views
0

考慮下面的玩具TensorFlow代碼。 fit方法LinearRegressor正常工作並找到正確的係數(即y = x1 + x2),但評估(請參閱最後的打印語句)掛起。任何想法有什麼不對?Tensorflow LinearRegressor評估方法掛起

import tensorflow as tf 

x1 = [1, 3, 4, 5, 1, 6, -1, -3] 
x2 = [5, 2, 1, 5, 0, 2, 4, 2] 
y = [6, 5,5, 10, 1, 8, 3, -1] 

def train_fn(): 
    return {'x1': tf.constant(x1), 'x2':tf.constant(x2)}, tf.constant(y) 


features = [tf.contrib.layers.real_valued_column('x1', dimension=1), 
      tf.contrib.layers.real_valued_column('x2', dimension=1)] 
estimator = tf.contrib.learn.LinearRegressor(feature_columns=features) 
estimator.fit(input_fn=train_fn, steps=10000) 

for vn in estimator.get_variable_names(): 
    print('variable name', vn, estimator.get_variable_value(vn)) 
print(estimator.evaluate(input_fn=train_fn)) 

回答

1

estimator.evaluate()需要一個參數steps,默認爲None,這被解釋爲 「無窮大」。因此它永遠不會結束。

爲了使它最終,通過steps=1明確:

estimator.evaluate(input_fn=your_input_fn, steps=1)