Какой тип d следует использовать для параметров PyTorch в нейронной сети, которая вводит и выводит массивы целых чисел? - PullRequest
0 голосов
/ 30 августа 2018

В настоящее время я создаю нейронную сеть в PyTorch, которая принимает тензоры целых чисел и выводит тензоры целых чисел . Существует только небольшое количество натуральных чисел, которые "разрешены" (например, 0, 1, 2, 3 и 4) в качестве элементов входных и выходных тензоров.

Нейронные сети обычно работают в непрерывном пространстве. Например, нелинейные функции активации между слоями являются непрерывными и отображают целые числа в действительные числа (включая нецелые числа).

Лучше ли использовать целые числа без знака, такие как torch.uint8, для внутренних значений для весов и смещений сети, а также какую-либо пользовательскую функцию активации, которая отображает целые числа в целые числа?

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

1 Ответ

0 голосов
/ 31 августа 2018

Не зная слишком много о вашем приложении, я бы пошел на torch.float32 с округлением. Основная причина в том, что если вы используете графический процессор для вычисления вашей нейронной сети, для этого потребуется, чтобы значения и данные имели тип данных float32. Если вы не собираетесь обучать свою нейронную сеть и хотите работать на ЦП, то типы данных, такие как torch.uint8, могут помочь вам, так как вы можете получить больше инструкций за интервал времени (т. Е. Ваше приложение должно работать быстрее). Если это не дает вам подсказки, пожалуйста, будьте более конкретны в отношении вашего заявления.

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