Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python t-SNE在不同的机器上生成不同的结果_Python_Macos_Ubuntu_Scikit Learn_Dimensionality Reduction - Fatal编程技术网

Python t-SNE在不同的机器上生成不同的结果

Python t-SNE在不同的机器上生成不同的结果,python,macos,ubuntu,scikit-learn,dimensionality-reduction,Python,Macos,Ubuntu,Scikit Learn,Dimensionality Reduction,我在100D中有大约3000个数据点,我用t-SNE投影到2D。每个数据点属于三个类中的一个。然而,当我在两台不同的计算机上运行脚本时,我总是得到不一致的结果。当我使用一个随机种子时,可能会出现一些不一致的情况,但是其中一台计算机会不断得到更好的结果(我在Ubuntu上使用MacBookPro和一台固定的机器) 我使用Scikit learn中的t-SNE实现。脚本和数据是相同的,我已经手动复制了文件夹以确保。相关代码段如下所示: X_vectors, X_labels = self.load_

我在100D中有大约3000个数据点,我用t-SNE投影到2D。每个数据点属于三个类中的一个。然而,当我在两台不同的计算机上运行脚本时,我总是得到不一致的结果。当我使用一个随机种子时,可能会出现一些不一致的情况,但是其中一台计算机会不断得到更好的结果(我在Ubuntu上使用MacBookPro和一台固定的机器)

我使用Scikit learn中的t-SNE实现。脚本和数据是相同的,我已经手动复制了文件夹以确保。相关代码段如下所示:

X_vectors, X_labels = self.load_data(spec_path, sound_path, subset)
tsne = TSNE(n_components=2, perplexity=25, random_state=None)
Y = tsne.fit_transform(X_vectors)
self.plot(X_labels, Y[:, 0], Y[:, 1], Y)
第一幅图像是从macbook生成的一个样本,我已经运行了好几次,它总是在相同的x/y范围内生成类似的形状。第二个是Ubuntu,显然更好,我再次运行了几次,以确保它继续产生更好的结果,与mac相比,始终在更高的x/y范围内。我不确定我在这里没有看到什么,很可能是我错过了什么


TSNE是一种启发式方法。与大多数启发式方法一样,它可能会根据微小的变化表现出完全不同的行为。这里的核心特征是:只保证局部收敛!(不是很健壮)。后者如图所示(根据基本优化理论):

t-SNE有一个非凸的代价函数,即通过不同的初始化,我们可以得到不同的结果

虽然您解释说,在您看来,非种子方法并不是罪魁祸首(难以衡量!基准测试很难),您应该查看您的sklearn版本,因为随着时间的推移,它是sklearn中比较活跃的部分之一,有许多变化

这些更改中的每一个都可能引入与您类似的观察结果(当只尝试一个示例时;当然,在比较t-sne实现时,更大的基准/测试集应该是更好的方法)

备注:
然而,其中一台计算机不断获得更好的结果:
这是广义的,因为至少有两种不同的解释:

  • 对结果进行视觉/感知评分
  • 查看优化后获得的
    kl\u发散度

TSNE是一种启发式方法。与大多数启发式方法一样,它可能会根据微小的变化表现出完全不同的行为。这里的核心特征是:只保证局部收敛!(不是很健壮)。后者如图所示(根据基本优化理论):

t-SNE有一个非凸的代价函数,即通过不同的初始化,我们可以得到不同的结果

虽然您解释说,在您看来,非种子方法并不是罪魁祸首(难以衡量!基准测试很难),您应该查看您的sklearn版本,因为随着时间的推移,它是sklearn中比较活跃的部分之一,有许多变化

这些更改中的每一个都可能引入与您类似的观察结果(当只尝试一个示例时;当然,在比较t-sne实现时,更大的基准/测试集应该是更好的方法)

备注:
然而,其中一台计算机不断获得更好的结果:
这是广义的,因为至少有两种不同的解释:

  • 对结果进行视觉/感知评分
  • 查看优化后获得的
    kl\u发散度

请对两台机器上的随机_状态使用相同的整数值(而不是
None
),然后报告变化。它返回与以前类似的结果。我使用None的原因是为了确保固定种子与此无关。请在两台机器上对random_状态使用相同的整数值(而不是
None
),然后报告变化。它返回与以前类似的结果。我使用None的原因是为了确保固定种子与它无关。版本更新修复了它!macbook以前的版本是0.18.2,现在都是0.19,在给定一个固定种子的情况下,它们产生相同的结果。谢谢。我同意“更好的结果”在这个场景中是相对的,我指的是不重叠的集群。谢谢确认!版本更新修复了它!macbook以前的版本是0.18.2,现在都是0.19,在给定一个固定种子的情况下,它们产生相同的结果。谢谢。我同意“更好的结果”在这个场景中是相对的,我指的是不重叠的集群。谢谢确认!