While it can be used for any data, t-SNE (pronounced Tee-Snee) is only really meaningful with labeled data, which clarify how the input is clustering. Below, you can see the kind of graphic you can generate in DL4J with t-SNE working on MNIST data.
Look closely and you can see the numerals clustered near their likes, alongside the dots.
Here's how t-SNE appears in Deeplearning4j code.
publicclassTSNEStandardExample {privatestaticLogger log =LoggerFactory.getLogger(TSNEStandardExample.class);publicstaticvoidmain(String[] args) throwsException {//STEP 1: Initializationint iterations =100;//create an n-dimensional array of doublesDataTypeUtil.setDTypeForContext(DataBuffer.Type.DOUBLE);List<String> cacheList =newArrayList<>(); //cacheList is a dynamic array of strings used to hold all words//STEP 2: Turn text input into a list of wordslog.info("Load & Vectorize data....");File wordFile =newClassPathResource("words.txt").getFile(); //Open the file//Get the data of all unique word vectorsPair<InMemoryLookupTable,VocabCache> vectors =WordVectorSerializer.loadTxt(wordFile);VocabCache cache =vectors.getSecond();INDArray weights =vectors.getFirst().getSyn0(); //seperate weights of unique words into their own listfor(int i =0; i <cache.numWords(); i++) //seperate strings of words into their own listcacheList.add(cache.wordAtIndex(i));//STEP 3: build a dual-tree tsne to use laterlog.info("Build model....");BarnesHutTsne tsne =new BarnesHutTsne.Builder().setMaxIter(iterations).theta(0.5).normalize(false).learningRate(500).useAdaGrad(false)// .usePca(false).build();//STEP 4: establish the tsne values and save them to a filelog.info("Store TSNE Coordinates for Plotting....");String outputFile ="target/archive-tmp/tsne-standard-coords.csv"; (newFile(outputFile)).getParentFile().mkdirs();tsne.plot(weights,2,cacheList,outputFile);//This tsne will use the weights of the vectors as its matrix, have two dimensions, use the words strings as//labels, and be written to the outputFile created on the previous line }}
Here is an image of the tsne-standard-coords.csv file plotted using gnuplot.