В графическом процессоре вычисления ускоряются путем передачи тензоров (одинаковой формы) в граф, где арифметические c и логические c операции выполняются на всем тензоре, когда они проходят через граф (в отличие от их выполнения). по одному). AFAIK - это то, что сейчас поддерживается tenorflow (даже с поддержкой Eager).
Эти тензоры должны иметь нули, и вычисления могут быть выполнены, что мы и сделали бы путем заполнения. В конечном итоге сети придется научиться игнорировать активацию, вызванную черными областями, поскольку они не зависят от метки. Итак, нужно выполнить одно из следующих действий:
- Обрезать изображения
- Дополнить изображения
- Сочетание обоих
любой из которых должен возвращать тензор с определенной формой для любой данной партии.
Тем не менее, все еще возможно иметь нейронную сеть, которая принимает любое изображение на этапе прогнозирования / оценки, как это не будет в пакетном режиме (при запуске в режиме реального времени).
Во время обучения, чтобы избежать
- потери информации: например, изменение размера изображения 2048 x 2048 для изображения 28 x 28
- чрезмерное заполнение: например, заполнение 28 x 28 изображений с нулями, чтобы сделать его 2048 x 2048
. Лучше объединить вместе изображения почти одинакового размера и разбить набор данных на пакеты разных размеров (при этом в любой партии все еще будут изображения одинакового размера) , как @ xenote cc упоминается в комментариях.
Это также верно в других средах, которые используют графический процессор для ускорения вычислений на данный момент. Не стесняйтесь добавлять ответы, если это возможно / как это становится возможным.
Связано: