estimator를 사용하여 tensorflow 입문 프로그램을 다시 쓰기

5085 단어 AI
참지 못하고 기계 학습의 구덩이에 들어가 tensorflow 강좌에서 입문하기로 했다.tensorflow 공식 문서의 입문편을 보았습니다.https://www.tensorflow.org/get_started/get_started, 뒷글은 고급api estimator의 사용을 소개했고 시도해 보았지만 결과는 소용이 없었다. 자료를 찾아보았고 estimator로 입문서의 그 프로그램을 다시 썼다. 기록 코드는 다음과 같다.
import numpy as np
import tensorflow as tf

#       x
feature_columns = [tf.feature_column.numeric_column("x")]
#          
estimator = tf.estimator.LinearRegressor(feature_columns=feature_columns)

#       
x_train = np.array([1., 2., 3., 4.])
y_train = np.array([0., -1., -2., -3.])
train_input_fn = tf.estimator.inputs.numpy_input_fn({"x": x_train}, y_train, batch_size=1, num_epochs=None,
                                                    shuffle=False)
#     
estimator.train(input_fn=train_input_fn, steps=3000)

#       
print("---train result ---")
for var in estimator.get_variable_names():
    print(var + "    =>%r" % estimator.get_variable_value(var))
print()

#   x=[4]    y 
samples = np.array([4])
predict_input_fn = tf.estimator.inputs.numpy_input_fn({"x": samples}, batch_size=1, num_epochs=1, shuffle=False)
predict_result = list(estimator.predict(predict_input_fn))
print("predict_result    =>%r" % predict_result)

#    x=[4], y=[-3.1]         
x_eval = np.array([4])
y_eval = np.array([-3.1])
eval_input_fn = tf.estimator.inputs.numpy_input_fn({"x": x_eval}, y_eval, batch_size=1, num_epochs=1, shuffle=False)
eval_result = estimator.evaluate(eval_input_fn)
print("eval_result    =>%r" % eval_result)

실행 결과는 다음과 같습니다.
---train result ---
['global_step', 'linear/linear_model/bias_weights', 'linear/linear_model/bias_weights/part_0/Ftrl', 'linear/linear_model/bias_weights/part_0/Ftrl_1', 'linear/linear_model/x/weights', 'linear/linear_model/x/weights/part_0/Ftrl', 'linear/linear_model/x/weights/part_0/Ftrl_1']
global_step    =>3000
linear/linear_model/bias_weights    =>array([ 0.99999285], dtype=float32)
linear/linear_model/bias_weights/part_0/Ftrl    =>array([ 131.23556519], dtype=float32)
linear/linear_model/bias_weights/part_0/Ftrl_1    =>array([-57.27864075], dtype=float32)
linear/linear_model/x/weights    =>array([[-0.99999756]], dtype=float32)
linear/linear_model/x/weights/part_0/Ftrl    =>array([[ 685.30853271]], dtype=float32)
linear/linear_model/x/weights/part_0/Ftrl_1    =>array([[ 130.8916626]], dtype=float32)

predict_result    =>[{'predictions': array([-2.99999738], dtype=float32)}]
eval_result    =>{'average_loss': 0.010000505, 'loss': 0.010000505, 'global_step': 3000}

변수 이름에 따라 W="linear/linear 를 알 수 있습니다.model/weights’ = -0.99999756,b=linear/linear_model/bias_weights=0.9999285로 입문편 결과와 거의 일치합니다.
estimator는 훈련 외에 예측 함수와 평가 함수를 제공합니다:estimator.predict: x를 주고 y값estimator를 계산합니다.evaluate: x와 y를 주고 차치 크기를 계산합니다

좋은 웹페이지 즐겨찾기