2017-06-24 4 views
0

テンソルフローgetting startedに従っています。私は今日、anacondaをダウンロードしてインストールしました。テンソルフローNameError:名前 'eval_input_fn'が定義されていません

File "p3.py", line 35, in <module> 
    eval_loss = estimator.evaluate(input_fn=eval_input_fn) 
NameError: name 'eval_input_fn' is not defined 

import numpy as np 
import tensorflow as tf 
# Declare list of features, we only have one real-valued feature 
def model(features, labels, mode): 
    # Build a linear model and predict values 
    W = tf.get_variable("W", [1], dtype=tf.float64) 
    b = tf.get_variable("b", [1], dtype=tf.float64) 
    y = W*features['x'] + b 
    # Loss sub-graph 
    loss = tf.reduce_sum(tf.square(y - labels)) 
    # Training sub-graph 
    global_step = tf.train.get_global_step() 
    optimizer = tf.train.GradientDescentOptimizer(0.01) 
    train = tf.group(optimizer.minimize(loss), 
        tf.assign_add(global_step, 1)) 
    # ModelFnOps connects subgraphs we built to the 
    # appropriate functionality. 
    return tf.contrib.learn.ModelFnOps(
     mode=mode, predictions=y, 
     loss=loss, 
     train_op=train) 

estimator = tf.contrib.learn.Estimator(model_fn=model) 
# define our data sets 
x_train = np.array([1., 2., 3., 4.]) 
y_train = np.array([0., -1., -2., -3.]) 
x_eval = np.array([2., 5., 8., 1.]) 
y_eval = np.array([-1.01, -4.1, -7, 0.]) 
input_fn = tf.contrib.learn.io.numpy_input_fn({"x": x_train}, y_train, 4, num_epochs=1000) 

# train 
estimator.fit(input_fn=input_fn, steps=1000) 
# Here we evaluate how well our model did. 
train_loss = estimator.evaluate(input_fn=input_fn) 
eval_loss = estimator.evaluate(input_fn=eval_input_fn) #line 35 
print("train loss: %r"% train_loss) 
print("eval loss: %r"% eval_loss) 

答えて

0

何らかの理由で、評価入力機能の定義をコピーしていないため、以下のプログラムが生成されます。 リンク先のチュートリアルで直接見つけることができます。ここで

はライン

eval_input_fn = tf.contrib.learn.io.numpy_input_fn(
    {"x":x_eval}, y_eval, batch_size=4, num_epochs=1000) 
+0

オペレータエラー:(だ - 今、正常に動作感謝。 –

関連する問題