Dropout2D

Описание

Info

Родительский класс: Dropout

Производные классы: -

Этот модуль выполняет как и Dropout операцию исключения нейронов, но более масштабно: исключаются не отдельные элементы признаков, а целые карты. Т.е., грубо говоря, для тензора с размерностью (N, C, H, W), где N - размер батча, C - количество карт (каналов), H - высота карты, W - ширина карты, будет обнулено какое-то количество из C карт.

Инициализация

def __init__(self, p=0.5, rng=globalRng, slicing=None, inplace=False, name=None):

Параметры

Параметр Возможные типы Описание По умолчанию
p float Вероятность, с которой исключаются нейроны. 0.5
rng object Объект генератора случайных чисел (бэкендозависимый). globalRng
slicing slice Срез, к которому применяется операция. None
inplace bool Если True, то выходной тензор будет записан в памяти на место входного. False
name str Имя слоя None

Пояснения

rng - генератор случайных чисел, который зависит от платформы, на которой проводятся расчёты, т.е. генератор бэкендозависимый: например, при использовании Nvidia-GPU и CUDA генератор формируется средствами библиотеки curand;


slicing - срез задаётся через встроенный в python объект slice, причём нужно учитывать, что индексы среза задаются для уплощённого тензора данных;


inplace - флаг, показывающий, нужно ли выделять дополнительные ресурсы памяти для результата. Если True, то выходной тензор будет записан в памяти на место входного, что может негативно отразиться на работе сети, если входной тензор должен принимать участие в расчётах на других ветках графа.

Примеры

Необходимые импорты.

>>> import numpy as np
>>> from PuzzleLib.Backend import gpuarray
>>> from PuzzleLib.Modules import Dropout2D

Info

gpuarray необходим для правильного размещения тензора на GPU

>>> batchsize, maps, h, w = 1, 4, 3, 3
>>> data = gpuarray.to_gpu(np.random.randint(1, 9, (batchsize, maps, h, w)).astype(np.float32))
>>> data
[[[[6. 6. 2.]
   [8. 6. 7.]
   [2. 5. 8.]]

  [[1. 5. 5.]
   [2. 1. 3.]
   [1. 4. 4.]]

  [[8. 5. 2.]
   [8. 5. 7.]
   [5. 4. 4.]]

  [[7. 6. 5.]
   [3. 4. 4.]
   [1. 4. 2.]]]]

Инициализируем модуль с параметрами по умолчанию:

>>> dropout2d = Dropout2D()
[[[[12. 12.  4.]
   [16. 12. 14.]
   [ 4. 10. 16.]]

  [[ 2. 10. 10.]
   [ 4.  2.  6.]
   [ 2.  8.  8.]]

  [[ 0.  0.  0.]
   [ 0.  0.  0.]
   [ 0.  0.  0.]]

  [[14. 12. 10.]
   [ 6.  8.  8.]
   [ 2.  8.  4.]]]]