有什么方法可以更改预训练的 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
我确实想指出,更改预训练网络的参数可能会导致意外行为 - 毕竟,模型最初并未使用此特定设置进行训练。所以请注意,这可能会导致不利的性能,并自行承担实验风险;-)
对于我的模型,我加载了 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
我确实想指出,更改预训练网络的参数可能会导致意外行为 - 毕竟,模型最初并未使用此特定设置进行训练。所以请注意,这可能会导致不利的性能,并自行承担实验风险;-)