Confirmed, * notation doesn’t work in Python 2. I was using Python3 
I learned about this relatively new Python feature two days ago, I admit:
*a,b = [1,2,3]. This would set a=[1,2] and b=3.
I tried both:
ds = utils.TensorDataset(X1, X2, X3, Y) # three inputs and output Y
as well as: ds = utils.TensorDataset(X, Y) # X is stack of x1, x2, x3
In the second case I just had to unbind mini-batch to take the columns:
torch.unbind(mb, dim=-1)
Each column in mini-batch represents the new input to my mini RNN I was making.
The number of rows in mini-batch is equal to the batch_size, or less if no enough data. You helped. For instance, if I had mini batch like this:
tensor([[13, 15, 32],
        [ 3, 21,  2]], device='cuda:0')
torch.Size([2, 3])

After tup = torch.unbind(mb, dim=1) the returned tuple I expected was:
(tensor([13, 3], device='cuda:0'), tensor([15, 21], device='cuda:0'), tensor([32, 2], device='cuda:0')) <class 'tuple'>

Each of these tensors represent three inputs to forward() method.
Strange, I got the same output for dim=-1.