Tensorflow dataset batching for complex data
From what I can understand from your code, it seems like you need to use the initializable iterator. Here is why:


Your are creating a dataset from a placeholder.


Here is my solution:

batch_size = 100
handle_mix = tf.placeholder(tf.float64, shape=[])
handle_src0 = tf.placeholder(tf.float64, shape=[])
handle_src1 = tf.placeholder(tf.float64, shape=[])
handle_src2 = tf.placeholder(tf.float64, shape=[])
handle_src3 = tf.placeholder(tf.float64, shape=[])


PASS A TUPLE TO  .from_tensor_slices method of the tf.data.Dataset class

dataset = tf.data.Dataset.from_tensor_slices((handle_mix, handle_src0,
                                               handle_src1, handle_src2,
                                               handle_src3))

dataset = dataset.shuffle(1000).repeat().batch(batch_size)

iter = dataset.make_initializable_iterator()

# unpack five values since dataset was created from five placeholders    
a, b, c, d, e = iter.get_next()


create a session object and initialize the iter making sure to pass "your data" to the placeholders. 'your data' can be numpy arrays

sess = tf.Session()
sess.run(iter.initializer, feed_dict={handle_mix:'your data',
         handle_src0:'your data',handle_src1:'your data',
         handle_src2:'your data',handle_src3:'your data'})


run the following to print the contents from the iterator

print "%r, %r, %r, %r, %r" % sess.run([a,b,c,d,e])


relevant details or clarification are available from the official TensorFlow documentation on how to use the dataset API.