What is the difference between tf.estimator.Estimator and tf.contrib.learn.Estimator in TensorFlow : <p>Some months ago, I used the <code>tf.contrib.learn.DNNRegressor</code> API from TensorFlow, which I found very convenient to use. I didn't keep up with the development of TensorFlow the last few months. Now I have a project where I want to use a Regressor again, but with more control over the actual model as provided by <code>DNNRegressor</code>. As far as I can see, this is supported by the <code>Estimator</code> API using the <code>model_fn</code> parameter.</p>

<p>But there are two <code>Estimator</code>s in the TensorFlow API:</p>

<ul>
<li><code>tf.contrib.learn.Estimator</code></li>
<li><code>tf.estimator.Estimator</code></li>
</ul>

<p>Both provide a similar API, but are nevertheless slightly different in their usage. Why are there two different implementations and are there reasons to prefer one?</p>

<p>Unfortunately, I can't find any differences in the TensorFlow documentation or a guide when to use which of both. Actually, working through the TensorFlow tutorials produced a lot of warnings as some of the interfaces apparently have changed (instead of the <code>x</code>,<code>y</code> parameter, the <code>input_fn</code> parameter et cetera).</p>
