docs: public void model(DataSet dataSet, int topics, ExecutorService ex)
      {
          if(ex == null)
              ex = new FakeExecutor();
          //Use notation same as original paper
          setK(topics);
          setD(dataSet.size());
          setVocabSize(dataSet.getNumNumericalVars());
          
          final List<Vec> docs = dataSet.getDataVectors();
          
          for(int epoch = 0; epoch < epochs; epoch++)
          {
              Collections.shuffle(docs);
              for(int i = 0; i < D; i+=miniBatchSize)
              {
                  int to = Math.min(i+miniBatchSize, D);
                  update(docs.subList(i, to), ex);
              }
              
          }
      }