Large Scale Distributed Deep Networks 阅读笔记

这篇论文探讨了利用DistBelief软件框架在大规模集群上分布地对深度神经网络进行训练和推断的方法,提出了Downpour SGD和Sandblaster L-BFGS两种算法,显著提升了大型模型的训练效率。

Large Scale Distributed Deep Networks

Jeffrey Dean, Greg S. Corrado, Rajat Monga, Kai Chen,
Matthieu Devin, Quoc V. Le, Mark Z. Mao, Marc’Aurelio Ranzato,
Andrew Senior, Paul Tucker, Ke Yang, Andrew Y. Ng
fjeff, gcorradog@google.com
Google Inc., Mountain View, CA

    这篇论文讲了大规模分布式深度网络,文章提出利用DistBelief这一软件框架,可以在大规模集群上分布地对深度神经网络进行训练和推断。文章开发出了两个适用于大规模分布式训练的算法:Downpour SGD和Sandblaster L-BFGS。在实验中,这两种算法对深度神经网络的训练都取得了良好的效果。
       对于大型模型,可能需要将模型划分给多个节点(机器),每个节点之间并行计算,节点内部通过多线程也并行计算,这在一个DistBelief实例上实现。这称为模型的并行化。另外,为了进一步减少训练时间(机器足够多),可以启动多个DistBelief实例,每个DistBelief实例拥有一个模型的副本。这些DistBelief实例并行地运行,从而实现二级并行化。
       在Downpour SGD算法中,每个模型副本运行在训练数据的一个子集上。多个模型副本之间通过中心参数服务器(多台机器)交流更新,该中心参数服务器维护了模型所有参数的当前状态,并分割到多台机器上。该方法在两个方面体现异步性:(i)模型副本之间运行独立,(ii)参数服务器各节点之间同样是独立的。
    在Sandblaster L-BFGS算法中,每个模型副本运行在全体训练数据上。算法的核心在协调器上,它通过发出一系列命令使参数的存储和操作分布化。使用该方法,由协调器控制任务分配与参数传递。

要使用Matlab复现文章“Distributed Very Large Scale Bundle Adjustment by Global Camera Consensus”的内容,可按以下步骤开展工作: ### 1. 数据准备 从文章中可知需要准备图像数据和相机的初始参数。在Matlab中可以使用以下代码读取图像: ```matlab image_files = dir('path_to_images/*.jpg'); % 替换为实际图像路径 num_images = length(image_files); for i = 1:num_images image = imread(fullfile('path_to_images', image_files(i).name)); % 可在此处进行图像预处理,如灰度化等 gray_image = rgb2gray(image); end ``` ### 2. 特征提取与匹配 使用Matlab的计算机视觉工具箱进行特征提取和匹配,例如使用SIFT或SURF特征: ```matlab % 初始化特征检测器 detector = detectSIFTFeatures(gray_image); % 提取特征描述符 [features, valid_points] = extractFeatures(gray_image, detector); % 特征匹配 index_pairs = matchFeatures(features1, features2); matched_points1 = valid_points1(index_pairs(:,1),:); matched_points2 = valid_points2(index_pairs(:,2),:); ``` ### 3. 相机参数初始化 根据文章描述,需要对相机的内参和外参进行初始化。可以手动设置或者通过标定得到初始值: ```matlab % 示例相机内参 focal_length = 1000; principal_point = [image_width/2, image_height/2]; K = [focal_length 0 principal_point(1); 0 focal_length principal_point(2); 0 0 1]; % 示例相机外参(初始化为单位矩阵) R = eye(3); t = [0; 0; 0]; ``` ### 4. 实现全局相机共识的分布式束调整 这是文章的核心部分,需要根据文章的算法实现分布式束调整。可以使用Matlab的优化工具箱进行非线性优化: ```matlab % 定义目标函数 fun = @(params) bundle_adjustment_error(params, points_2d, points_3d, K); % 初始参数 initial_params = [R(:); t(:); ...]; % 根据实际情况添加其他参数 % 优化 options = optimoptions('lsqnonlin','Display','iter'); estimated_params = lsqnonlin(fun, initial_params, [], [], options); ``` ### 5. 结果评估与可视化 对优化后的结果进行评估,并可视化相机的姿态和三维点云: ```matlab % 计算重投影误差等评估指标 reprojection_error = calculate_reprojection_error(estimated_params, points_2d, points_3d, K); % 可视化相机姿态和三维点云 figure; show_camera_poses(estimated_params, points_3d); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值