で停止し、ここでのコードは次のとおりです。TensorFlow/TFLearn LinearRegressor私はTensorflow 1.2を使用しています非常に高い損失
import tensorflow as tf
import tensorflow.contrib.layers as layers
import numpy as np
import tensorflow.contrib.learn as tflearn
tf.logging.set_verbosity(tf.logging.INFO)
# Naturally this is a very simple straight line
# of y = -x + 10
train_x = np.asarray([0., 1., 2., 3., 4., 5.])
train_y = np.asarray([10., 9., 8., 7., 6., 5.])
test_x = np.asarray([10., 11., 12.])
test_y = np.asarray([0., -1., -2.])
input_fn_train = tflearn.io.numpy_input_fn({"x": train_x}, train_y, num_epochs=1000)
input_fn_test = tflearn.io.numpy_input_fn({"x": test_x}, test_y, num_epochs=1000)
validation_monitor = tflearn.monitors.ValidationMonitor(
input_fn=input_fn_test,
every_n_steps=10)
fts = [layers.real_valued_column('x')]
estimator = tflearn.LinearRegressor(feature_columns=fts)
estimator.fit(input_fn=input_fn_train,
steps=1000,
monitors=[validation_monitor])
print(estimator.evaluate(input_fn=input_fn_test))
期待どおりに動作します。何が起こっていることは、トレーニングが非常に高い損失値とステップ47で停止していることである:私は完全に理解していない
INFO:tensorflow:Starting evaluation at 2017-06-18-20:52:10
INFO:tensorflow:Finished evaluation at 2017-06-18-20:52:10
INFO:tensorflow:Saving dict for global step 1: global_step = 1, loss = 12.5318
INFO:tensorflow:Validation (step 10): global_step = 1, loss = 12.5318
INFO:tensorflow:Saving checkpoints for 47 into
INFO:tensorflow:Loss for final step: 19.3527.
INFO:tensorflow:Starting evaluation at 2017-06-18-20:52:11
INFO:tensorflow:Restoring parameters from
INFO:tensorflow:Finished evaluation at 2017-06-18-20:52:11
INFO:tensorflow:Saving dict for global step 47: global_step = 47, loss = 271.831
{'global_step': 47, 'loss': 271.83133}
いくつか(確かに私はTFで完全にnoobのだ):
- なぜステップ10の損失はステップ47の損失よりも小さいのですか?
- なぜTFは後でトレーニングを停止することにしたのですか?
- 「INFO:テンソルフロー:最終ステップの損失:19.3527」ステップ47での損失が互いに一致しない場合は、
私はバニラTensorFlowを使用して、この非常にアルゴリズムをimlementedしており、期待どおりに動作しますが、私は本当にLinearRegressorがここに私から何を望んでいるかの把握を取得することはできません。