[エラー] The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 0


The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 0

[忙しい人のための解決策]

#後ろにconvert('RGB)をつけてchannels数を3に変更する
input_image = Image.open(filename).convert('RGB')

[原因] 入力された画像のchannel数が4であるために3に戻してあげる必要がある。

<該当コード>

from torchvision import transforms

input_image = Image.open('test.png')  #ここが問題

preprocess = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    ])
input_tensor = preprocess(input_image)

<エラー画像>

<訂正後のコード>

from torchvision import transforms

input_image = Image.open('test.png')  #ここを訂正した

preprocess = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    ])
input_tensor = preprocess(input_image)

参考