def test_n_iter_without_progress(): # Use a dummy negative n_iter_without_progress and check output on stdout random_state = check_random_state(0) X = random_state.randn(100, 10) for method in ["barnes_hut", "exact"]: tsne = TSNE( n_iter_without_progress=-1, verbose=2, learning_rate=1e8, random_state=0, method=method, n_iter=351, init="random", ) tsne._N_ITER_CHECK = 1 tsne._EXPLORATION_N_ITER = 0 old_stdout = sys.stdout sys.stdout = StringIO() try: tsne.fit_transform(X) finally: out = sys.stdout.getvalue() sys.stdout.close() sys.stdout = old_stdout # The output needs to contain the value of n_iter_without_progress assert ( "did not make any progress during the " "last -1 episodes. Finished." in out )
def boostrap_do_embedding(X, shared_queue=None): """ Boostrap to start doing embedding: Initialize the tsne object, setup params """ print("[TSNEX] Thread to do embedding is starting ... ") shared_data['queue'] = shared_queue shared_data['fixed_ids'] = [] shared_data['fixed_pos'] = [] shared_data['errors'] = [] shared_data['grad_norms'] = [] shared_data['z_info'] = np.zeros(X.shape[0]) sklearn.manifold.t_sne._gradient_descent = my_gradient_descent tsne = TSNE( n_components=2, random_state=0, init='random', method='exact', # use this method to hook into kl_divergence perplexity=30.0, early_exaggeration=12.0, learning_rate=100.0, n_iter_without_progress=500, verbose=2) tsne._EXPLORATION_N_ITER = 150 X_projected = tsne.fit_transform(X) return X_projected
def test_bh_match_exact(): # check that the ``barnes_hut`` method match the exact one when # ``angle = 0`` and ``perplexity > n_samples / 3`` random_state = check_random_state(0) n_features = 10 X = random_state.randn(30, n_features).astype(np.float32) X_embeddeds = {} n_iter = {} for method in ["exact", "barnes_hut"]: tsne = TSNE( n_components=2, method=method, learning_rate=1.0, init="random", random_state=0, n_iter=251, perplexity=30.0, angle=0, ) # Kill the early_exaggeration tsne._EXPLORATION_N_ITER = 0 X_embeddeds[method] = tsne.fit_transform(X) n_iter[method] = tsne.n_iter_ assert n_iter["exact"] == n_iter["barnes_hut"] assert_allclose(X_embeddeds["exact"], X_embeddeds["barnes_hut"], rtol=1e-4)
def main(args): data_path = './data/%s.pkl' % args.dataset with open(data_path, 'rb') as f: X, labels = pickle.load(f) tsne = TSNE(n_iter=args.early_iters, verbose=True) tsne._EXPLORATION_N_ITER = args.early_iters Y_seq = extract_sequence(tsne, X) with open('results/res.pkl', 'wb') as f: pickle.dump(Y_seq, f) if not os.path.exists('figures'): os.mkdir('figures') lo = Y_seq.min(axis=0).min(axis=0).max() hi = Y_seq.max(axis=0).max(axis=0).min() limits = ([lo, hi], [lo, hi]) fig_name = '%s-%d-%d-tsne' % (args.dataset, args.num_iters, args.early_iters) fig_path = './figures/%s.gif' % fig_name savegif(Y_seq, labels, fig_name, fig_path, limits=limits)