我正在使用來自 torchvision 的預訓練 Alexnet 模型(沒有微調)。問題是,即使我能夠在某些數據上運行模型并獲得輸出概率分布,我也無法找到類標簽將其映射到.按照這個官方文檔import torchmodel = torch.hub.load('pytorch/vision:v0.6.0', 'alexnet', pretrained=True)model.eval()AlexNet(? (features): Sequential(? ? (0): Conv2d(3, 64, kernel_size=(11, 11), stride=(4, 4), padding=(2, 2))? ? (1): ReLU(inplace=True)? ? (2): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)? ? (3): Conv2d(64, 192, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))? ? (4): ReLU(inplace=True)? ? (5): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)? ? (6): Conv2d(192, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))? ? (7): ReLU(inplace=True)? ? (8): Conv2d(384, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))? ? (9): ReLU(inplace=True)? ? (10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))? ? (11): ReLU(inplace=True)? ? (12): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)? )? (avgpool): AdaptiveAvgPool2d(output_size=(6, 6))? (classifier): Sequential(? ? (0): Dropout(p=0.5, inplace=False)? ? (1): Linear(in_features=9216, out_features=4096, bias=True)? ? (2): ReLU(inplace=True)? ? (3): Dropout(p=0.5, inplace=False)? ? (4): Linear(in_features=4096, out_features=4096, bias=True)? ? (5): ReLU(inplace=True)? ? (6): Linear(in_features=4096, out_features=1000, bias=True)? ))在處理圖像的一些步驟之后,我能夠使用它來獲得單個圖像的輸出作為 (1,1000) dim 向量,我將使用 softmax 來獲得概率分布 -
1 回答

小怪獸愛吃肉
TA貢獻1852條經驗 獲得超1個贊
不幸的是,您不能直接從 torchvision 模型中獲取類標簽名稱。但是,這些模型是在 ImageNet 數據集(因此有 1000 個類)上訓練的。
據我所知,您必須從網上獲取類名映射;沒有辦法把它從火炬上拿下來。以前,您可以使用 torchvision.datasets.ImageNet 直接下載 ImageNet,它有一個內置的標簽到類名轉換器?,F在下載鏈接不公開,需要手動下載,然后才能被 datasets.ImageNet 使用。
因此,您可以簡單地在線搜索 ImageNet 的類到標簽映射,而不是下載數據或嘗試使用 torch。
添加回答
舉報
0/150
提交
取消