有什么方法可以更改预训练的 DetrFeatureExtractor 中的参数吗?

Is there any way to change parameters in pretrained DetrFeatureExtractor?

对于我的模型,我加载了 DetrFeatureExtractor 的预训练版本:

feature_extractor = DetrFeatureExtractor(return_tensors="pt"
                                        ,do_normalize = True
                                        ,size = 400).from_pretrained("facebook/detr-resnet-50")

但是当我输出这个变量的参数时,我得到:

DetrFeatureExtractor {
  "do_normalize": true,
  "do_resize": true,
  "feature_extractor_type": "DetrFeatureExtractor",
  "format": "coco_detection",
  "image_mean": [
    0.485,
    0.456,
    0.406
  ],
  "image_std": [
    0.229,
    0.224,
    0.225
  ],
  "max_size": 1333,
  "size": 800
}

仍然有 size = 800。是否可以更改预训练特征提取器的参数,如果可以,我该如何更改它们?

您的构造函数的值未被采用,因为您正在调用 .from_pretrained(),它从预训练模型的相应配置文件加载所有值(在您的情况下,可以查看相应的配置文件 here). 即使某些值可能未在配置中指定,它们也将主要取自默认值,而不是您之前传递的任何值。

如果要更改属性,可以在加载后进行:

from transformers import DetrFeatureExtractor

model = DetrFeatureExtractor.from_pretrained("facebook/detr-resnet-50")
model.size = 400
print(model)  # will show the correct size

我确实想指出,更改预训练网络的参数可能会导致意外行为 - 毕竟,模型最初并未使用此特定设置进行训练。所以请注意,这可能会导致不利的性能,并自行承担实验风险;-)