加载HuggingFace Autoformer模型触发KeyError求助(已装最新transformers)
解决Autoformer模型加载时的KeyError问题
问题描述
运行以下代码加载Autoformer时间序列预测模型时,出现KeyError: <class 'transformers.models.autoformer.configuration_autoformer.AutoformerConfig'>错误:
# Load model directly from transformers import AutoTokenizer, AutoformerForPrediction tokenizer = AutoTokenizer.from_pretrained("huggingface/autoformer-tourism-monthly") model = AutoformerForPrediction.from_pretrained("huggingface/autoformer-tourism-monthly")
完整报错回溯:
KeyError Traceback (most recent call last) Cell In[2], line 6 3 # Load model directly 4 from transformers import AutoTokenizer, AutoformerForPrediction 6 tokenizer = AutoTokenizer.from_pretrained("huggingface/autoformer-tourism-monthly") 7 model = AutoformerForPrediction.from_pretrained("huggingface/autoformer-tourism-monthly") File ~/anaconda3/lib/python3.11/site-packages/transformers/models/auto/tokenization_auto.py:841, in AutoTokenizer.from_pretrained(cls, pretrained_model_name_or_path, *inputs, **kwargs) 839 model_type = config_class_to_model_type(type(config).__name__) 840 if model_type is not None: 841 tokenizer_class_py, tokenizer_class_fast = TOKENIZER_MAPPING[type(config)] 842 if tokenizer_class_fast and (use_fast or tokenizer_class_py is None): 843 return tokenizer_class_fast.from_pretrained(pretrained_model_name_or_path, *inputs, **kwargs) File ~/anaconda3/lib/python3.11/site-packages/transformers/models/auto/auto_factory.py:740, in _LazyAutoMapping.__getitem__(self, key) 738 model_name = self._model_mapping[mtype] 739 return self._load_attr_from_module(mtype, model_name) 740 raise KeyError(key) KeyError: <class 'transformers.models.autoformer.configuration_autoformer.AutoformerConfig'>
问题原因
huggingface/autoformer-tourism-monthly是时间序列预测模型,处理的是数值序列而非文本,不需要使用AutoTokenizer。AutoTokenizer无法找到与AutoformerConfig对应的分词器映射关系,因此抛出KeyError。
解决方案
移除AutoTokenizer相关代码,改用AutoformerFeatureExtractor处理时间序列数据,修正后的代码如下:
from transformers import AutoformerFeatureExtractor, AutoformerForPrediction # 加载特征处理器和模型 feature_extractor = AutoformerFeatureExtractor.from_pretrained("huggingface/autoformer-tourism-monthly") model = AutoformerForPrediction.from_pretrained("huggingface/autoformer-tourism-monthly") # 示例:处理时间序列输入 import numpy as np # 生成符合模型输入格式的随机时间序列数据 input_data = np.random.randn(1, 12) # 假设输入是1条长度为12的序列 inputs = feature_extractor(input_data, return_tensors="pt") # 进行预测 outputs = model(**inputs) predicted_values = outputs.logits
内容的提问来源于stack exchange,提问作者User1086
相关产品推荐
相关产品推荐

