pytorchでニューラルネットワークの学習をしたいと思っていますが、transforms.Resizeで画像のサイズを変更した後、モデルに投入するとランタイムエラーが出ます。
RuntimeError: mat1 dim 1 must match mat2 dim 0
resizeで画像サイズを28にすると動くので、画像のサイズとモデルが合っていないと思っていますが、モデルのどこと画像のサイズが関係しているのか理解できていません。
もしわかる方がいらっしゃいましたらご教示ください。
dataset = torchvision.datasets.ImageFolder(root="./tmp", transform = transforms.Compose([transforms.Resize(160), transforms.ToTensor()]))
torch.Size([8, 3, 160, 160])
# ディープラーニングモデル import torch.nn as nn import torch.nn.functional as F OVER_CLUSTRING_Rate = 10 # 多めに分類するoverclsuteringも用意する class NetIIC(nn.Module): def __init__(self): super(NetIIC, self).__init__() self.conv1 = nn.Conv2d(3, 128, 5, 2, bias=False) self.bn1 = nn.BatchNorm2d(128) self.conv2 = nn.Conv2d(128, 128, 5, 1, bias=False) self.bn2 = nn.BatchNorm2d(128) self.conv3 = nn.Conv2d(128, 128, 5, 1, bias=False) self.bn3 = nn.BatchNorm2d(128) self.conv4 = nn.Conv2d(128, 256, 4, 1, bias=False) self.bn4 = nn.BatchNorm2d(256) # 0-9に対応すると期待したい10種類のクラス self.fc = nn.Linear(256, 10) # overclustering # 実際の想定よりも多めにクラスタリングさせることで、ネットワークで微細な変化を捉えられるようにする self.fc_overclustering = nn.Linear(256, 10*OVER_CLUSTRING_Rate) def forward(self, x): x = F.relu(self.bn1(self.conv1(x))) x = F.relu(self.bn2(self.conv2(x))) x = F.relu(self.bn3(self.conv3(x))) x = F.relu(self.bn4(self.conv4(x))) x_prefinal = x.view(x.size(0), -1) y = F.softmax(self.fc(x_prefinal), dim=1) y_overclustering = F.softmax(self.fc_overclustering( x_prefinal), dim=1) # overclustering return y, y_overclustering
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/21 23:23
2021/02/22 03:14
2021/02/22 13:31
2021/02/22 23:34
2021/02/23 07:32
2021/02/23 07:41