使用Keras计算Shapley值时脚本中途暂停,如何使其持续运行?
解决脚本暂停运行的方法
一、调整Windows电源相关设置
- 关闭显示器睡眠:前往「控制面板\硬件和声音\电源选项\更改计划设置」,将「关闭显示器」设为「从不」——即使桌面睡眠已关闭,显示器休眠仍可能触发系统后台资源限制。
- 禁用快速启动:进入「控制面板\硬件和声音\电源选项\选择电源按钮的功能」,点击「更改当前不可用的设置」,取消勾选「启用快速启动(推荐)」后保存,避免该功能导致的系统资源调度异常。
- 优化高级电源配置:展开「PCI Express」→「链接状态电源管理」,设置为「最大性能」;展开「处理器电源管理」,将「最小处理器状态」和「最大处理器状态」均设为100%,防止CPU降频拖慢任务进程。
二、调整Anaconda提示符运行配置
- 以管理员身份启动:右键点击Anaconda Prompt,选择「以管理员身份运行」,避免权限不足导致进程被系统限制。
- 关闭快速编辑模式:在提示符窗口标题栏右键→「属性」→「选项」标签,取消勾选「快速编辑模式」和「插入模式」——该模式下误点窗口会暂停进程,你唤醒后点击操作恰好解除了暂停状态。
三、优化Python脚本运行逻辑
- 强制GPU保持活跃:在脚本开头添加代码,避免GPU进入低功耗状态:
import tensorflow as tf physical_devices = tf.config.list_physical_devices('GPU') if physical_devices: tf.config.experimental.set_memory_growth(physical_devices[0], True) - 添加心跳式日志输出:在批量预测循环中定期打印日志并刷新缓冲区,让系统判定进程处于活跃状态:
import time import sys batch_count = 0 for batch in data_generator: predictions = model.predict_on_batch(batch) batch_count += 1 if batch_count % 10 == 0: print(f"已处理 {batch_count} 个批次,当前时间:{time.strftime('%Y-%m-%d %H:%M:%S')}") sys.stdout.flush()
四、调整Shap库运行参数
- 限制计算资源占用:使用Shap解释器时,避免单次计算量过大或多线程冲突:
import shap explainer = shap.KernelExplainer(model.predict, background_data) explainer.max_evals = 100 # 根据实际需求调整,控制单样本计算量
内容的提问来源于stack exchange,提问作者Timo
相关产品推荐
相关产品推荐

