title: Tensorflow: Efficiently moving/putting data onto the GPU
body: <p>So I'm reading a bit more about moving data from the CPU -> GPU in Tensorflow, and I see that <code>feed_dict</code> is still slow:
  <a href="https://github.com/tensorflow/tensorflow/issues/2919" rel="nofollow noreferrer">https://github.com/tensorflow/tensorflow/issues/2919</a></p>
  
  <p>The immediate options I see for "moving" Python variables over to the GPU are:</p>
  
  <pre><code>#1. Tensorflow constant
  a = tf.constant(data, name='a')
  
  #2. Tensorflow Variable
  b = tf.Variable(data, name='b')
  
  #3. Tensorflow placeholder
  c = tf.placeholder(dtype=dtype, shape=[x,y,z ...], name='c')
  </code></pre>
  
  <p>Options <code>#1</code> and <code>#2</code> aren't practical for very large dataset variables (since you're actually preloading the data into memory), as we'll quickly exceed the 2GB graph limit. That currently makes <code>#3</code> the better choice for getting large <em>Python</em> vars into Tensorflow, but then you're forced into using <code>feed_dict</code>.</p>
  
  <p>Are there other options for moving <em>Python variables</em> to the GPU besides <code>#1</code>, <code>#2</code>, and <code>#3</code>? I'm referring to using...</p>
  
  <pre><code>with tf.device('/gpu:0'):
      # create tensorflow object(s), whether it's tf.Variable, tf.constant, etc
  </code></pre>
  
  <p>If I'm understanding correctly, we can use the input pipeline features to work around this issue? I'm referring to these two here:</p>
  
  <ol>
  <li><p><a href="https://datascience.stackexchange.com/questions/17559/input-pipeline-for-tensorflow-on-gpu">https://datascience.stackexchange.com/questions/17559/input-pipeline-for-tensorflow-on-gpu</a></p></li>
  <li><p><a href="https://stackoverflow.com/a/38956678/7093236">https://stackoverflow.com/a/38956678/7093236</a></p></li>
  </ol>
  
  <p>Is there anything I can do to further enhance the speed of putting everything on the Tensorflow side?</p>