尝试使用自定义图像训练模型以识别车牌字符,但这是错误:
model = model.train()
loss_history = []
for epoch in range(10):
pbar = tqdm(dataloader_train)
for batch_image, batch_carnumber in pbar:
batch_image = batch_image.float()
batch_output = model(batch_image).squeeze()
loss = criterion(batch_output.permute(2,0,1).log(),
batch_carnumber,
torch.tensor([batch_output.shape[2]]*batch_output.shape[0]),
torch.tensor([batch_carnumber.shape[1]]*batch_carnumber.shape[0]))
pbar.set_description(f'epoch {epoch}, loss:{loss.item():.4f}')
loss_history.append(loss.item())
optimizer.zero_grad()
loss.backward()
optimizer.step()
torch.save(model, 'model-lastest.pth')
输出:
0%| | 0/4 [00:00<?, ?it/s]
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-21-f564c8f6f874> in <module>()
4 for epoch in range(10):
5 pbar = tqdm(dataloader_train)
----> 6 for batch_image, batch_carnumber in pbar:
7 batch_image = batch_image.float()
8 batch_output = model(batch_image).squeeze()
7 frames
/usr/local/lib/python3.6/dist-packages/torch/utils/data/_utils/collate.py in default_collate(batch)
53 storage = elem.storage()._new_shared(numel)
54 out = elem.new(storage)
---> 55 return torch.stack(batch, 0, out=out)
56 elif elem_type.__module__ == 'numpy' and elem_type.__name__ != 'str_' \
57 and elem_type.__name__ != 'string_':
RuntimeError: stack expects each tensor to be equal size, but got [7] at entry 0 and [6] at entry 2
这是什么意思?也许是因为我给你训练的图像?