为什么 torchvision 中的 resnet50 模型,每次输出的向量都不一样?

import torch
import torchvision
import torchvision.transforms as transforms
from PIL import Image
from torch import Tensor
import torch.nn as nn

# 加载ResNet-50模型
model = torchvision.models.resnet50(weights='ResNet50_Weights.DEFAULT')
model.fc = nn.Linear(2048, 512)
# 设置模型为评估模式
model.eval()

# 图像预处理
transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])

# 加载并预处理图像
image = Image.open('std.jpg')
image = transform(image).unsqueeze(0)  # 添加批次维度


# 使用模型进行推理
with torch.no_grad():
    features: Tensor = model(image)


features_list = features.squeeze(0).tolist()

# 输出特征向量
print(features_list[:10])

每次运行都不一样,而且区别很大很大。像是随机的,不固定

(image2vector) ╭─ponponon@MBP13ARM ~/Desktop/code/me/resnet_example  ‹master*› 
╰─➤  python -u "/Users/ponponon/Desktop/code/me/resnet_example/resnet50_handle_image_into_vector.py"
[-0.29179805517196655, 0.2904847264289856, 0.12426053732633591, 0.02481590211391449, 0.329562783241272, 0.22396402060985565, -0.06559790670871735, -0.20587551593780518, 0.25109758973121643, -0.023244917392730713]
(image2vector) ╭─ponponon@MBP13ARM ~/Desktop/code/me/resnet_example  ‹master*› 
╰─➤  python -u "/Users/ponponon/Desktop/code/me/resnet_example/resnet50_handle_image_into_vector.py"
[0.11942902207374573, 0.1826518476009369, -0.2526671588420868, -0.004894621670246124, -0.17024371027946472, -0.08633725345134735, 0.5060751438140869, 0.07067155838012695, 0.14896635711193085, 0.061379216611385345]
(image2vector) ╭─ponponon@MBP13ARM ~/Desktop/code/me/resnet_example  ‹master*› 
╰─➤  python -u "/Users/ponponon/Desktop/code/me/resnet_example/resnet50_handle_image_into_vector.py"
[0.20133033394813538, -0.4602600336074829, 0.13579875230789185, 0.02763177454471588, 0.05834684893488884, 0.006434973329305649, 0.030948840081691742, -0.2761097848415375, 0.04298316687345505, 0.034981779754161835]
(image2vector) ╭─ponponon@MBP13ARM ~/Desktop/code/me/resnet_example  ‹master*› 
╰─➤  python -u "/Users/ponponon/Desktop/code/me/resnet_example/resnet50_handle_image_into_vector.py"
[0.15419462323188782, -0.057300686836242676, 0.153386652469635, 0.19760870933532715, 0.2271871566772461, -0.15803731977939606, 0.14448338747024536, -0.0767395868897438, -0.01838969811797142, -0.033301010727882385]
(image2vector) ╭─ponponon@MBP13ARM ~/Desktop/code/me/resnet_example  ‹master*› 
╰─➤  python -u "/Users/ponponon/Desktop/code/me/resnet_example/resnet50_handle_image_into_vector.py"
[0.18995943665504456, 0.16650597751140594, -0.1821695864200592, -0.13390550017356873, -0.3528384268283844, -0.10662798583507538, -0.06500241160392761, -0.32258665561676025, 0.22184018790721893, -0.1533258706331253]
(image2vector) ╭─ponponon@MBP13ARM ~/Desktop/code/me/resnet_example  ‹master*› 
╰─➤  python -u "/Users/ponponon/Desktop/code/me/resnet_example/resnet50_handle_image_into_vector.py"
[-0.3856864273548126, 0.11389009654521942, 0.11823548376560211, -0.1116785854101181, 0.24777428805828094, 0.45221805572509766, -0.1880977898836136, 0.07203484326601028, 0.29017287492752075, 0.05842892453074455]

毫无规律可言?

我明明已经预训练权重了 weights='ResNet50_Weights.DEFAULT'

阅读 3.5k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题