微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Kernal PCA 和 LLE 的结果对于为运行提供的不同数量的 CPU 内核是不同的

如何解决Kernal PCA 和 LLE 的结果对于为运行提供的不同数量的 CPU 内核是不同的

我正在使用 Scikit-Learns 的 KPCA 和有时 LLE API 进行降维。 我有一个形状约为(700X150)的全数字数据集。 我只是想将这些数据传递给上述 API 之一以减少其功能,我为它编写了一个简单的 python 脚本(比如 run.py),我可以从终端运行它,它还可以在减少后保存数据。 我面临的问题是,我在 linux 终端中使用“taskset”命令为特定运行分配一定数量cpu。我可以根据我机器上的 cpu 数量提供任意数量cpu,例如,终端命令可以是: taskset -c 1-3 python run.py 当我想给 3 个核心时 或 taskset -c 1-2 python run.py 当我只想使用 2 个内核时。 或者当我不想指定任何 cpu 时,只需 python run.py

问题是我在这三种情况下都得到了不同的结果,不同的结果我的意思是三个运行的输出数据彼此不同,这不应该发生,因为我使用了脚本、相同的输入数据和相同的对于所有三个运行的算法(KPCA 或 LLE),我还将“n_jobs”参数保持为 2,因为我在使用任务集时至少使用了 2 个 cpu。我还提供了一个 random_state。幸运的是,所有这 3 个结果都是完全可重现的,这意味着第一个命令(具有 3 个内核)将在每次运行时产生相同的输出数据,同样,如果多次运行,第二个和第三个命令在各自的每次运行中也会产生相同的结果。 但问题是为什么这些输出彼此不同? 在我的运行中设置任务集对我来说很重要,因为我使用的是多核机器,我需要为不同的任务安排不同的 cpu,有时我有 2 个,有时我有 3 个,有时同一任务有 n 个 cpu我相应地给了它们,但我不希望结果因我给的 cpu 数量而有所不同,这也会影响我的分类性能,这也将在管道的后期进行。 另外,做了一些实验,当我使用 Isomap 减少我的数据时,我没有看到这种行为。无论我给多少 cpu,结果都是一样的。 我也用“numactl”命令代替“taskset”,但行为是一样的。

令人惊讶的是,在 R 语言中使用 kpca 函数时,我们也可以看到同样的行为!当我使用 R 做同样的事情时。这里有什么关于 KPCA 的常见和基本的东西是我遗漏的吗?

请帮忙。 谢谢, 普拉奈

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。