matlab 一个训练函数中的若干记录用一个叫 records 的结构体返回,其中包括多个 loss 的 list / vector,现用一个循环遍历这些 loss lists、画图、保存。

Code

  • getfield 用字符串取 struct 的 field
  • saveas 保存 figure
% 假装 res 是某个函数返回的结果
res = struct();
res.loss_1 = [1 2 3];
res.loss_2 = [4 5 6];

% 用字符串按名取 field
for k = ["loss_1", "loss_2"]
    v = getfield(res, k);
    fprintf("--- %s\n", k);
    % disp(v);

    % 画图
    if length(v) < 2
        continue;
    end
    f = figure;
    x = 1 : length(v);
    % 下在一幅图中同时画两条线(好像也可以 `hold on` + 多次 plot)
    plot(x, v, x, -v);
    legend("1st", "2nd");
    % 保存
    saveas(f, sprintf("log/%s.png", k));
    close(f);
end

References

  1. getfield
  2. plot
  3. saveas
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐