checkpoint = torch.load(args.state_dict) ->RuntimeError: CUDA error: out of memory

进行eval,加载模型到gpu时,出现错误:RuntimeError: CUDA error: out of memory

疑似原因:有一个相似的模型(网络结构名相同,通道数不同)在另一块gpu上训练着,导致加载错误

解决办法:先停止相似模型的训练

定义了一个名为`load_trained_modules`的函数,它有两个参数:`model`和`args`。 `enc_model_path = args.enc_init`将`args`中的`enc_init`属性赋值给变量`enc_model_path`。 `enc_modules = args.enc_init_mods`将`args`中的`enc_init_mods`属性赋值给变量`enc_modules`。 `main_state_dict = model.state_dict()`将当前模型的状态字典赋值给变量`main_state_dict`。 `logging.warning("model(s) found for pre-initialization")`会记录一条警告信息,表示已找到用于预初始化的模型。 `if os.path.isfile(enc_model_path):`如果`enc_model_path`指定的文件存在,则执行接下来的代码块。 `logging.info('Checkpoint: loading from checkpoint %s for CPU' % enc_model_path)`会记录一条信息,表示正在从指定路径的文件中加载模型。 `model_state_dict = torch.load(enc_model_path, map_location='cpu')`将指定路径的模型加载到`model_state_dict`变量中,并指定将其加载到CPU上。 `modules = filter_modules(model_state_dict, enc_modules)`将`model_state_dict`中的模块过滤为仅包括需要加载的模块,并将其存储在`modules`变量中。 `partial_state_dict = OrderedDict()`创建一个有序字典`partial_state_dict`,用于存储部分状态字典。 `for key, value in model_state_dict.items():`迭代`model_state_dict`中的每个元素。 `if any(key.startswith(m) for m in modules):`如果当前元素的键以任何一个需要加载的模块的名称开头,则执行接下来的代码块。 `partial_state_dict[key] = value`将当前元素的键和值存储在`partial_state_dict`中。 `main_state_dict.update(partial_state_dict)`将`partial_state_dict`中的模块参数复制到当前模型的对应模块中。 `else:`如果指定路径的文件不存在,则记录一条警告信息,表示找不到预训练的模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值