Когда размер пакета равен 1 и модель находится в режиме обучения, я получаю следующую ошибку:
Код: Выделить всё
ValueErrorКод: Выделить всё
: Expected more than 1 value per channel when training, got input size torch.Size([1, 20])Код: Выделить всё
import torch
import torch.nn as nn
class BNModel(nn.Module):
def __init__(self):
super().__init__()
self.fc1 = nn.Linear(10, 20)
self.bn1 = nn.BatchNorm1d(20)
self.fc2 = nn.Linear(20, 1)
def forward(self, x):
x = self.fc1(x)
x = self.bn1(x)
x = torch.relu(x)
x = self.fc2(x)
return x
model = BNModel()
# batch size = 1
x = torch.randn(1, 10)
model.train()
print(model(x))
Мне трудно понять, почему BatchNorm требует более одной выборки в режиме обучения и каков правильный подход при обучении с размером пакета 1?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ining-mode
Мобильная версия