<p>Mathematically these two methods are different. One is called stochastic gradient descent and the other is called batch gradient descent. You are missing the most commonly used one - mini batch gradient descent.  There has been a lot of research on this topic but basically different batch sizes have different convergence properties. Generally people use batch sizes that are greater than one but not the full dataset. This is usually necessary since most datasets cannot fit into memory all at once. Also if your model uses batch normalization then a batch size of one won't converge. This <a href="https://arxiv.org/pdf/1705.08741.pdf" rel="nofollow noreferrer">paper</a> discusses the effects of batch size (among other things) on performance. The takeaway is that larger batch sizes do not generalize as well. (They actually argue it isn't the batch size itself the but the fact that you have fewer updates when the batch is larger. I would recommend batch sizes of 32 to start and experiment to see how batch size effects performance. </p>

<p>Here is a graph of the effects of batch size on training and validation performance from the paper I linked. </p>

<p><a href="https://i.stack.imgur.com/XAU7U.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/XAU7U.png" alt="enter image description here"></a></p>
Does size of training data for an epoch matter in tensorflow?
<p>Assuming we have 500k items worth of training data, does it matter if we train the model one item at a time or 'n' items at a time or all at once?</p>

<p>Considering <code>inputTrainingData</code> and <code>outputTrainingData</code> to be <code>[[]]</code> and <code>train_step</code> to be any generic tensorflow training step. </p>

<p><strong>Option 1</strong> Train one item at a time -</p>

<pre><code>for i in range(len(inputTrainingData)):
    train_step.run(feed_dict={x: [inputTrainingData[i]], y: [outputTrainingData[i]], keep_prob: .60}, session= sess)
</code></pre>

<p><strong>Option 2</strong> Train on all at once -</p>

<pre><code>train_step.run(feed_dict={x: inputTrainingData, y: outputTrainingData, keep_prob: .60}, session= sess)
</code></pre>

<p>Is there any difference between options 1 and 2 above as far as the quality of training is concerned? </p>