title: Getting started with Tensorflow
body: <p>I'm new to Tensorflow and trying to run the example codes, and I just can't understand what happening in this program : </p>
  
  <pre><code>    import tensorflow as tf
  # NumPy is often used to load, manipulate and preprocess data.
  import numpy as np
  
  # Declare list of features. We only have one real-valued feature. There are many
  # other types of columns that are more complicated and useful.
  features = [tf.contrib.layers.real_valued_column("x", dimension=1)]
  
  # An estimator is the front end to invoke training (fitting) and evaluation
  # (inference). There are many predefined types like linear regression,
  # logistic regression, linear classification, logistic classification, and
  # many neural network classifiers and regressors. The following code
  # provides an estimator that does linear regression.
  estimator = tf.contrib.learn.LinearRegressor(feature_columns=features)
  
  # TensorFlow provides many helper methods to read and set up data sets.
  # Here we use `numpy_input_fn`. We have to tell the function how many batches
  # of data (num_epochs) we want and how big each batch should be.
  x = np.array([1., 2., 3., 4.])
  y = np.array([0., -1., -2., -3.])
  input_fn = tf.contrib.learn.io.numpy_input_fn({"x":x}, y, batch_size=4,
                                                num_epochs=1000)
  
  # We can invoke 1000 training steps by invoking the `fit` method and passing the
  # training data set.
  estimator.fit(input_fn=input_fn, steps=1000)
  
  # Here we evaluate how well our model did. In a real example, we would want
  # to use a separate validation and testing data set to avoid overfitting.
  estimator.evaluate(input_fn=input_fn)
  </code></pre>
  
  <p>Can any one explain to what happens starting from the <code>input_fn</code> line.
  Is the <code>batch_size</code> the size of the input data ? and why do I need the <code>num_epochs</code> since I tell the  estimator the it needs 1000 steps ?</p>
  
  <p>thanks in advance ! </p>