使用~2k变量大小~400x400x3的有效方法

时间:2018-01-30 06:49:20

标签: matlab optimization save load

我正在运行一个优化算法,该算法涉及迭代~2k个变量,每个变量代表一个大小约为400x400x3的图像。在我的迭代中,我需要加载这些变量,更新它们,然后回到下一轮,这样的事情

% Initialize the global variable x
x = 0;
for iter=1:100
  % Initialize var1 and var2 sum
  var1_sum = 0;
  var2_sum = 0;
  % Save a copy of the global variable x for convergence checks
  x_old = x;
  for var_no=1:1225
    % Load var1_i
    load(['var1_', num2str(var_no), '.mat');
    % Load var2_i
    load(['var2_', num2str(var_no), '.mat');
    % compute var1 sum and var2 sum
    var1_sum = var1_sum + var1_i;
    var2_sum = var2_sum + var2_i;
    % Update var1_i, var2_i
    var1_i = update_var1_using_x(var1_i, x);
    var2_i = update_var2_using_x(var2_i, x);
    % Save them again
    save(['var1_', num2str(var_no), '.mat', var1_i, '-v7.3');
    save(['var2_', num2str(var_no), '.mat', var2_i, '-v7.3');
  end
  % Update x now
  x = x + var1_sum + var2_sum;
  % check is x has been converged
  delta_x = norm(x, 'fro') - norm(x_old, 'fro');
  if(delta_x < 0.0001)
    break;
  end
end

正如可以预料的那样,我的代码非常耗时,而且大小和它们没有。非常大,我无法将它们保存在RAM中。有人可以帮助我,并建议我一个有效的方式来实现这一目标吗?它已经成为我运行时间的一个巨大瓶颈。非常感谢!

0 个答案:

没有答案