Я не понимаю код для обучения классификатора в Pytorch - PullRequest
0 голосов
/ 08 апреля 2019

Я не понимаю строку labels.size(0).Я новичок в Pytorch и был довольно смущен структурой данных.

correct = 0
total = 0
with torch.no_grad():
   for data in testloader:
      images, labels = data
      outputs = net(images)
      _, predicted = torch.max(outputs.data, 1)
      total += labels.size(0)
      correct += (predicted == labels).sum().item()

print('Accuracy of the network on the 10000 test images: %d %%' % (
    100 * correct / total))`

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

Чтобы ответить на ваш вопрос

В PyTorch tensor.size() позволяет проверить форму тензора.

В вашемкод,

images, labels = data

images и labels каждый будет содержать N количество примеров обучения зависит от размера вашей партии.Если вы проверите форму меток, это должно быть [N, 1], где N - размер примера мини-пакета обучения.

Немного предвидения для новичков вобучение нейронной сети.

При обучении нейронной сети практикующие будут передавать набор данных через сеть и оптимизировать градиенты.

Скажем, ваш обучающий набор данных содержит 1 миллион изображений, а ваш тренировочный сценарий разработан таким образом, чтобы передать все 1 миллион изображений в одну эпоху.Проблема этого подхода в том, что вам потребуется очень много времени, чтобы получить обратную связь от вашей нейронной сети.Именно здесь начинается обучение мини-пакетам.

В PyTorch класс DataLoader позволяет разбить набор данных на несколько пакетов.Если ваш учебный загрузчик содержит 1 миллион примеров и размер пакета равен 1000, вы должны ожидать, что каждая эпоха будет повторять 1000 шагов во всех мини-пакетах.Таким образом, вы сможете лучше наблюдать и оптимизировать результаты тренировок.

0 голосов
/ 08 апреля 2019

labels - Тензор с размерами [N, 1], где N равно количеству выборок в партии. .size(...) возвращает подкласс кортежа (torch.Size) с измерениями Tensor, а .size(0) возвращает целое число со значением первого (основанного на 0) измерения (т. Е. * 1009) *).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...