为什么我的 sklearn t-sne 函数在达到最大迭代次数之前退出

Why is my sklearn t-sne function quitting before reaching its maximum iteration

我正在尝试 运行 平方距离矩阵的 tsne 分析。这些是我正在使用的命令。

model = TSNE(n_components = 2,perplexity = 32, verbose = 10,n_iter = 1000, metric = "precomputed")
embeddings = model.fit_transform(D)

这是我收到的输出:output from tsne function

看起来该程序 运行 正在通过 75 次迭代,然后称其良好并退出。当我绘制来自 tsne 的数据时,它基本上只是一个密集的 blob。为什么程序提前退出,我怎样才能让它 运行 更长?

它正在退出,因为达到了退出条件

解释日志,退出条件可能是梯度上的一个指标,这里称为gradient-norm。如果需要,请查看 gradient-descent 的基础知识以了解直觉。由于每次迭代都朝着梯度的负方向迈进了一步,因此微小的梯度不会对 objective 产生太大影响(并且将被解释为:我们找到了 local/global 最小值)。

它看起来像(仍然只解释你的日志):

if np.linalg.norm(gradient) < 1e-4:
    return solution

对于优化问题的参数化进一步进行更多迭代没有任何好处。解决方案不会变得更好(在最小化方面)。

您只能尝试其他参数(导致其他优化问题)。