Regarding imbalanced multilabel dataset
I'll go through your questions one by one:


  Is the dataset imbalanced one?


The distinction between a balanced and an imbalanced dataset is a matter of degree. If you think that the difference in number of observations for each class is too big, I suggest you to train your model using Mini-Batch Gradient Descent, and build any mini batch in a way that observations have the same frequency. This would attribute greater weights to the less frequent observations.


  How do I distribute this dataset properly into training set,
  validation and test set?


Make sure that all the classes are evenly distributed among the sets.