EasyOCR运行报错:pin_memory设为True但未检测到加速器
EasyOCR运行警告问题排查
初始代码
reader = easyocr.Reader(['en'], gpu=False) def read_sign(sign): result = reader.readtext(sign) return 'STOP' in result
出现的警告信息
AppData\Local\Programs\Python\Python313\Lib\site-packages\torch\utils\data\dataloader.py:665:
UserWarning: 'pin_memory' argument is set as true but no accelerator is found, then device pinned memory won't be used.
问题追踪细节
已定位警告来自dataloader类,但该类初始化时pin_memory参数明确设为False,暂时找不到警告触发的直接线索。该类初始化代码如下:
def __init__( self, dataset: Dataset[_T_co], batch_size: Optional[int] = 1, shuffle: Optional[bool] = None, sampler: Union[Sampler, Iterable, None] = None, batch_sampler: Union[Sampler[list], Iterable[list], None] = None, num_workers: int = 0, collate_fn: Optional[_collate_fn_t] = None, pin_memory: bool = False, drop_last: bool = False, timeout: float = 0, worker_init_fn: Optional[_worker_init_fn_t] = None, multiprocessing_context=None, generator=None, *, prefetch_factor: Optional[int] = None, persistent_workers: bool = False, pin_memory_device: str = "", in_order: bool = True, ): torch._C._log_api_usage_once("python.data_loader")
解决思路
- 检查EasyOCR内部调用逻辑:尽管DataLoader默认参数是
pin_memory=False,但EasyOCR内部可能在实例化DataLoader时手动将该参数设为True(哪怕指定了gpu=False)。可以找到EasyOCR中调用DataLoader的代码,强制将pin_memory设为False。 - 降级PyTorch版本:该警告可能是PyTorch 2.2+版本新增的检测逻辑,和旧版本EasyOCR存在兼容问题。尝试将PyTorch降级到2.1.x版本,看是否能消除警告。
- 临时屏蔽警告:如果警告不影响功能正常运行,可以用以下代码屏蔽该特定警告:
import warnings warnings.filterwarnings("ignore", message="'pin_memory' argument is set as true but no accelerator is found")
内容的提问来源于stack exchange,提问作者Larissa
相关产品推荐
相关产品推荐

