【发布时间】:2021-04-09 02:06:28
【问题描述】:
使用 resnet50 模型。自定义最后一层,它显示运行时错误..我是 PyTorch 的新手,我不断收到错误 mat1 dim1 must match mat1 dim0
这是我的网络代码
from torchvision import models
model = models.resnet50(pretrained=True)
for param in model.parameters():
param.requires_grad = False
class Identity(nn.Module):
def __init__(self):
super(Identity, self).__init__()
def forward(self, x):
return x
model.avgpool = Identity()
model.fc = nn.Linear(2048, 2, bias=True)
for param in model.fc.parameters():
param.requires_grad = True
model = model.to(device)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.01)
def train(num_epoch, model):
for epoch in range(0, 3):
losses = []
model.train()
loop = tqdm(enumerate(train_loader), total=len(train_loader))
for batch_idx, (data, targets) in loop:
data = data.to(device=device)
targets = targets.to(device=device)
scores = model.forward(data)
loss = criterion(scores, targets)
optimizer.zero_grad()
losses.append(loss)
loss.backward()
optimizer.step()
loop.set_description(f"Epoch {epoch+1}/{num_epoch} process: {int((batch_idx / len(train_loader)) * 100)}")
loop.set_postfix(loss=loss.data.item())
train(1, model)
RuntimeError: mat1 dim 1 必须匹配 mat2 dim 0
【问题讨论】:
标签: python machine-learning deep-learning pytorch