如何关闭Matlab中trainNetwork的训练窗口?及Live Script嵌入图表方法
解决方案
1. 关闭重复弹出的训练进度窗口
你遇到的弹窗并非nntraintool窗口,而是MATLAB专属的训练进度图窗口(标签为NNTrainingProgressFigure),所以之前的命令才会无效。这里有两种可行的解决方式:
彻底禁用训练进度图(推荐)
直接修改你的trainingOptions配置,把'Plots','training-progress'替换为'Plots','none',这样训练过程中就不会弹出任何进度窗口了:
opts = trainingOptions('adam', ... 'MaxEpochs',250, ... 'GradientThreshold',1, ... 'InitialLearnRate',0.005, ... 'LearnRateSchedule','piecewise', ... 'LearnRateDropPeriod',125, ... 'LearnRateDropFactor',0.2, ... 'Verbose',0, ... 'Plots','none'); % 修改此处禁用绘图
如果还想跟踪训练进度,可以把'Verbose',0改成'Verbose',1,这样会在命令行输出文本形式的训练日志。
训练过程中关闭已弹出的窗口
如果训练已经在运行,想精准关闭这些进度窗口而不影响其他图表,可以运行以下命令:
close(findobj('Type','figure','Tag','NNTrainingProgressFigure'))
这个命令会定位所有标签为NNTrainingProgressFigure的窗口并关闭,不会误关其他无关图表。
2. 在Live Script中嵌入训练进度图表
要实现类似Jupyter Notebook的内联图表效果,只需调整两个小设置:
开启Live Script内联输出:
在Live Script顶部菜单栏的「视图」选项卡中,勾选输出内联(Inline Output),这样所有生成的图表都会自动嵌入到对应代码块的下方,不会弹出独立窗口。保留训练配置的绘图设置:
继续使用'Plots','training-progress'的配置,此时训练进度图会直接显示在Live Script的输出区域里,全程不会弹出外部窗口。
如果还是没有自动嵌入,可以尝试在训练代码后手动获取并显示图表:
% 训练代码执行后 plotFig = gcf; % 获取当前训练进度图 set(plotFig,'Visible','on');
不过通常只要开启了内联输出,MATLAB会自动处理图表的嵌入显示。
内容的提问来源于stack exchange,提问作者Dims
相关产品推荐
相关产品推荐

