В настоящее время я создаю нейронную сеть в PyTorch, которая принимает тензоры целых чисел и выводит тензоры целых чисел . Существует только небольшое количество натуральных чисел, которые "разрешены" (например, 0, 1, 2, 3 и 4) в качестве элементов входных и выходных тензоров.
Нейронные сети обычно работают в непрерывном пространстве.
Например, нелинейные функции активации между слоями являются непрерывными и отображают целые числа в действительные числа (включая нецелые числа).
Лучше ли использовать целые числа без знака, такие как torch.uint8
, для внутренних значений для весов и смещений сети, а также какую-либо пользовательскую функцию активации, которая отображает целые числа в целые числа?
Или я должен использовать высокопрецизионные числа с плавающей точкой, такие как torch.float32
, а затем округлить в конце, связывая действительные числа с ближайшим целым числом? Я думаю, что эта вторая стратегия - верный путь, но, может быть, я упускаю что-то, что будет хорошо работать.