希望有人可以启发我,而不必发布很多令人困惑的代码。
我正在使用 IPython.parallel 来处理神经网络。为了找到错误,我决定使用相同的输入数据向每个客户端发送相同的网络。我希望每个客户都返回相同的答案,大多数情况下确实如此。然而,有时我会从每个客户那里得到截然不同的结果。
这只是运行代码 5 次不同时间的示例。每次运行代码时都会构建一个新网络,因此我希望在运行之间有不同的解决方案,但是,每次运行我都会向每个客户端发送相同的网络......
我正在使用 apply_async 将进程发送到不同的客户端(所有客户端都在一台本地机器上。)
在处理过程中没有生成随机数,我使用的唯一数学函数是内置的pow()
和numpy.tanh()
.
关于追踪正在发生的事情的最佳方法的任何想法?
%> ./ld_cluster.py
Available workers: 5
importing sys on engine(s)
0 ) b0ca598b-8cc8-4de7-8e6e-f62c1e6eba58 :: 2.020202
0 ) b0ca598b-8cc8-4de7-8e6e-f62c1e6eba58 :: 2.020202
0 ) b0ca598b-8cc8-4de7-8e6e-f62c1e6eba58 :: 2.020202
0 ) b0ca598b-8cc8-4de7-8e6e-f62c1e6eba58 :: 2.020202
0 ) b0ca598b-8cc8-4de7-8e6e-f62c1e6eba58 :: 2.020202
%> ./ld_cluster.py
Available workers: 5
importing sys on engine(s)
0 ) ff0ac798-3eb9-43cd-940a-6bc77447a3b4 :: 1.846979
0 ) ff0ac798-3eb9-43cd-940a-6bc77447a3b4 :: 1.846979
0 ) ff0ac798-3eb9-43cd-940a-6bc77447a3b4 :: 1.846979
0 ) ff0ac798-3eb9-43cd-940a-6bc77447a3b4 :: 1.846979
0 ) ff0ac798-3eb9-43cd-940a-6bc77447a3b4 :: 1.846979
%> ./ld_cluster.py
Available workers: 5
importing sys on engine(s)
0 ) f679d9c3-9e00-4b32-84b7-72fcf9fb5da0 :: 2.021491
0 ) f679d9c3-9e00-4b32-84b7-72fcf9fb5da0 :: 2.021491
0 ) f679d9c3-9e00-4b32-84b7-72fcf9fb5da0 :: 2.021491
0 ) f679d9c3-9e00-4b32-84b7-72fcf9fb5da0 :: 2.021491
0 ) f679d9c3-9e00-4b32-84b7-72fcf9fb5da0 :: 2.021491
%> ./ld_cluster.py
Available workers: 5
importing sys on engine(s)
0 ) f28617ef-72e7-4de3-a0a7-a98057efaa2e :: 1.979795
0 ) f28617ef-72e7-4de3-a0a7-a98057efaa2e :: 1.979795
0 ) f28617ef-72e7-4de3-a0a7-a98057efaa2e :: 1.979795
0 ) f28617ef-72e7-4de3-a0a7-a98057efaa2e :: 1.979795
0 ) f28617ef-72e7-4de3-a0a7-a98057efaa2e :: 1.979795
%> ./ld_cluster.py
Available workers: 5
importing sys on engine(s)
0 ) dd635626-4881-4470-909f-6a2fbe73b06d :: 2.020196
0 ) dd635626-4881-4470-909f-6a2fbe73b06d :: 1.991076
0 ) dd635626-4881-4470-909f-6a2fbe73b06d :: 1.952310
0 ) dd635626-4881-4470-909f-6a2fbe73b06d :: 1.887462
0 ) dd635626-4881-4470-909f-6a2fbe73b06d :: 2.019929