gpt4 book ai didi

parallel-processing - 为什么我的 MATLAB 神经网络在使用并行处理时训练速度较慢?

转载 作者:太空宇宙 更新时间:2023-11-03 19:52:27 24 4
gpt4 key购买 nike

如果我使用函数:

net=feedfowardnet([60 60])

net2=train(net,x,t)

训练大约需要 20 分钟。 (我在多台计算机{具有相同规范}上完成了此操作,平均时间始终在 20 分钟左右)

如果我使用函数:

parpool  %//starts a local parallel pool connected to 2 workers
net2=train(net,x,t,'useParallel','yes')

完成训练大约需要 40 分钟。我有两个内核,所以这是违反直觉的,它应该快两倍,而不是慢两倍。我使用相同的起始网络,以及相同的训练输入和目标。

此外,当我在 NN 训练期间打开任务管理器时,它显示两个 CPU 都以 100% 的速度工作,即使 parpooluseParallel 已关闭。

This page Mathworks 网站的一位作者表示,“Parallel Computing Toolbox™ 允许 Neural Network Toolbox™ 以比一台 PC 所能容纳的更大的数据集更快地模拟和训练网络。并行训练目前仅支持反向传播训练,不支持自组织映射。 "

我在数据集中使用了 2000 个训练示例。有 32 个输入和 3 个输出,所以这绝对是一个大数据集。当我只使用 net2=train(net,x,t) 函数时,并行池也肯定是关闭的。

我测试了 parpool 与其他函数(包含 parfor 循环的函数)的结合使用,计算速度通常是原来的两倍。似乎只是神经网络训练变慢了。

有什么原因吗?

我使用的是 Intel Core 2 Duo E8400 Cpu @3GHz,我使用的是 MATLAB 版本 R2013 b。我还在网络上(大学内部)使用计算机。我不确定这是否有所作为。


有关大学计算机网络的更多信息。我同时在网络上使用多台计算机。我没有以某种方式将它们连接在一起进行分布式计算,每个人都只是在自己的 2 个处理器上使用并行计算来做自己的事情。但是我不确定计算机是否仍然以某种方式相互干扰,因为它们是用同一用户登录的。我使用以下方法将训练输入和目标数据加载到每台计算机上的 matlab 工作区中:

load('H:\18-03-14\x.mat')
load('H:\18-03-14\net.mat')
load('H:\18-03-14\t.mat')

H: 是网络驱动器。我不确定一旦这些在 matlab 工作区中,它们是否仍然以某种方式连接,并在不同的计算机上相互干扰。是吗?

最佳答案

并行有两种类型:多核和多线程。 MATLAB 在多核支持下实现基本的矩阵运算,因此即使没有并行计算工具箱,您的所有内核都可以得到利用。

Parallel Computing Toolbox 还允许多线程。多线程有两个优点。首先是它们允许使用 MATLAB 分布式计算服务器在多台 PC 之间进行计算,以实现可靠的线性加速。第二个不太明显,即单台 PC 上的多线程可以改进已经单线程的多核计算,尽管这看起来有悖于直觉。但是,使用并行线程会产生额外的开销,因此情况并非总是如此。更多核心和大问题更有可能加速。

你的问题不大。一个大问题将包含 10 个或更多个示例,而您的问题只有 2000 个。

此外,两个隐藏层各有 60 个神经元几乎肯定是一个比您需要的大得多的网络。您的问题有 2000 个样本 * 3 个输出 = 6000 个约束。您的网络有 32*60+60*60+60*3 个权重和 32+60+3 个偏差,总共 5795 个可调变量,这几乎与约束的数量一样多。我建议使用更少的权重,并且可能只有一个隐藏层。这会训练得更快,也可能会更好地泛化。

因此,也许从 feedforwardnet(100) 开始,然后在未找到所需精度时增加它。

使用这个包含 68,308 个示例的神经网络工具箱示例数据集,您可以看到多线程处理更大问题的好处:

[x,t] = vinyl_dataset;
net = feedforwardnet(140,'trainscg');
rng(0), tic, net2 = train(net,x,t); toc
parpool
rng(0), tic, net2 = train(net,x,t,'useParallel','yes'); toc

关于parallel-processing - 为什么我的 MATLAB 神经网络在使用并行处理时训练速度较慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22514193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com