I agree the documentation doesn't explain the values very well.
The first parameter is a dictionary of the input values for your network.
The second are the output values.
batch_size is the number of items taken at a time for training the network, when you have large amounts of data, the training is too slow if you train the network with each value, so you use batches, so if x_train had 16 items and the batch size is 4, the network would be trained with the first 4, then next 4, until all 16 inputs are used.
num_epochs is number of back and forward passes before you quit trying to optimize the network nodes.
For batch size and number of epochs, you tweak those parameters based on how much time you want to spend training vs how good of performance.
For a great description of terms.
Taken from an example, you can then use input_fn to get features and target values for passing to run that data.
For example:
with self.test_session() as session:
input_fn = numpy_io.numpy_input_fn({"x":x_train}, y_train,
batch_size=4,
num_epochs=1000)
features, target = input_fn()
res = session.run([features, target])
The two functions do the same thing, just input_fn is for training the network and eval_input_fn would be for evaluation, so the only difference would be the x and y values, since when you evaluate performance on training data the performance will be upper bound or best case.