Spec-Zone.ru › TensorFlow 2.9

Модуль: tf.compat.v1.nn

Базовые операции нейронной сети (НН).

Примечания по заполнению

Несколько операций нейронной сети, такие как tf.nn.conv2d и tf.nn.max_pool2d, принимают параметр padding, который управляет тем, как входной тензор заполняется перед выполнением операции. Входной тензор заполняется вставкой значений (обычно нулей) перед и после тензора по каждой пространственной размерности. Параметр padding может быть либо строкой 'VALID', что означает отсутствие заполнения, либо 'SAME', что добавляет заполнение согласно формуле, описанной ниже. Некоторые операции также позволяют явно указать количество заполнения по каждой размерности, передав список параметру padding.

В случае свёрок входной тензор заполняется нулями. В случае пулинга заполненные значения входа игнорируются. Например, в максимуме пулинга скользящее окно игнорирует заполненные значения, что эквивалентно тому, что заполненные значения -infinity.

'VALID' заполнение

Передача значения padding='VALID' в операцию означает, что заполнение не используется. Это приводит к тому, что размер выходного тензора обычно меньше размера входного тензора, даже при шаге 1. В случае 2D размер выходного тензора вычисляется следующим образом:

out_height = ceil((in_height - filter_height + 1) / stride_height)
out_width  = ceil((in_width - filter_width + 1) / stride_width)

Случаи 1D и 3D аналогичны. Обратите внимание, что filter_height и filter_width относятся к размеру фильтра после дилатации (если есть) для свёрок и к размеру окна для пулинга.

'SAME' заполнение

При использовании 'SAME' заполнения заполнение применяется к каждой пространственной размерности. При шагах 1 вход заполняется таким образом, что размер выходного тензора совпадает с размером входного тензора. В случае 2D размер выходного тензора вычисляется следующим образом:

out_height = ceil(in_height / stride_height)
out_width  = ceil(in_width / stride_width)

Используемое количество заполнения является минимальным, что приводит к выходу требуемого размера. Формула для общего количества заполнения по каждой размерности:

if (in_height % strides[1] == 0):
  pad_along_height = max(filter_height - stride_height, 0)
else:
  pad_along_height = max(filter_height - (in_height % stride_height), 0)
if (in_width % strides[2] == 0):
  pad_along_width = max(filter_width - stride_width, 0)
else:
  pad_along_width = max(filter_width - (in_width % stride_width), 0)

Наконец, заполнение по верхнему, нижнему, левому и правому краям:

pad_top = pad_along_height // 2
pad_bottom = pad_along_height - pad_top
pad_left = pad_along_width // 2
pad_right = pad_along_width - pad_left

Обратите внимание, что деление на 2 означает, что могут быть случаи, когда заполнение с обеих сторон (верх/низ, право/лево) отличаются на 1. В этом случае нижняя и правая стороны всегда получают дополнительный заполненный пиксель. Например, при pad_along_height = 5, мы заполняем 2 пикселя сверху и 3 пикселя снизу. Обратите внимание, что это отличается от существующих библиотек, таких как PyTorch и Caffe, которые явно указывают количество заполненных пикселей и всегда заполняют одинаковое количество пикселей с обеих сторон.

Вот пример 'SAME' заполнения:

in_height = 5
filter_height = 3
stride_height = 2

in_width = 2
filter_width = 2
stride_width = 1

inp = tf.ones((2, in_height, in_width, 2))
filter = tf.ones((filter_height, filter_width, 2, 2))
strides = [stride_height, stride_width]
output = tf.nn.conv2d(inp, filter, strides, padding='SAME')
output.shape[1]  # output_height: ceil(5 / 2)
3
output.shape[2] # output_width: ceil(2 / 1)
2

Явное заполнение

Некоторые операции, такие как tf.nn.conv2d, также позволяют передать список явных значений заполнения параметру padding. Этот список имеет тот же формат, что и передаваемый в tf.pad, за исключением того, что заполнение должно быть вложенным списком, а не тензором. Например, в случае 2D список имеет формат [[0, 0], [pad_top, pad_bottom], [pad_left, pad_right], [0, 0]] когда data_format имеет своё значение по умолчанию 'NHWC'. Две пары [0, 0] указывают на то, что размерности партии и канала не имеют заполнения, что является необходимым условием, так как заполнение может быть только в пространственных размерностях.

Например:

inp = tf.ones((1, 3, 3, 1))
filter = tf.ones((2, 2, 1, 1))
strides = [1, 1]
padding = [[0, 0], [1, 2], [0, 1], [0, 0]]
output = tf.nn.conv2d(inp, filter, strides, padding=padding)
tuple(output.shape)
(1, 5, 3, 1)
# Equivalently, tf.pad can be used, since convolutions pad with zeros.
inp = tf.pad(inp, padding)
# 'VALID' means to use no padding in conv2d (we already padded inp)
output2 = tf.nn.conv2d(inp, filter, strides, padding='VALID')
tf.debugging.assert_equal(output, output2)

Модули

experimental модуль: Публичный API для пространства имён tf.nn.experimental.

rnn_cell модуль: Публичный API для пространства имён tf.keras.internal.legacy.rnn_cell.

Функции

all_candidate_sampler(...): Генерация набора всех классов.

atrous_conv2d(...): Атропная свёртка (также известная как свёртка с отверстиями или свёртка с дилатацией).

atrous_conv2d_transpose(...): Транспонирование atrous_conv2d.

avg_pool(...): Выполняет усредняющий пулинг на входе.

avg_pool1d(...): Выполняет усредняющий пулинг на входе.

avg_pool2d(...): Выполняет усредняющий пулинг на входе.

avg_pool3d(...): Выполняет усредняющий пулинг на входе.

avg_pool_v2(...): Выполняет усредняющий пулинг на входе.

batch_norm_with_global_normalization(...): Нормализация по батчам.

batch_normalization(...): Нормализация по батчам.

bias_add(...): Добавляет bias к value.

bidirectional_dynamic_rnn(...): Создаёт динамическую версию двунаправленной рекуррентной нейронной сети. (устарело)

collapse_repeated(...): Объединяет повторяющиеся метки в одну метку.

compute_accidental_hits(...): Вычисляет идентификаторы позиций в sampled_candidates соответствующие true_classes.

compute_average_loss(...): Масштабирует потери для каждого примера с помощью sample_weights и вычисляет их среднее значение.

conv1d(...): Вычисляет 1D свёртку входного тензора ранга >=3 с 3-D фильтром. (устаревшие значения аргументов) (устаревшие значения аргументов)

conv1d_transpose(...): Транспонирование conv1d.

conv2d(...): Вычисляет 2D свёртку, заданную тензорами 4D input и filter.

conv2d_backprop_filter(...): Вычисляет градиенты свёртки по фильтру.

conv2d_backprop_input(...): Вычисляет градиенты свёртки по входу.

conv2d_transpose(...): Транспонирование conv2d.

conv3d(...): Вычисляет 3D свёртку, заданную тензорами 5D input и filter.

conv3d_backprop_filter(...): Вычисляет градиенты 3D свёртки по фильтру.

conv3d_backprop_filter_v2(...): Вычисляет градиенты 3D свёртки по фильтру.

conv3d_transpose(...): Транспонирование conv3d.

conv_transpose(...): Транспонирование convolution.

convolution(...): Вычисляет сумму N-мерных свёрок (фактически корреляцию).

crelu(...): Вычисляет конкатенированную функцию ReLU.

ctc_beam_search_decoder(...): Выполняет декодирование с помощью поиска по лучшим путям на заданных логах.

ctc_beam_search_decoder_v2(...): Выполняет декодирование с помощью поиска по лучшим путям на заданных логах.

ctc_greedy_decoder(...): Выполняет жадное декодирование на заданных логах (лучший путь).

ctc_loss(...): Вычисляет потерю CTC (Connectionist Temporal Classification).

ctc_loss_v2(...): Вычисляет потерю CTC (Connectionist Temporal Classification).

ctc_unique_labels(...): Получает уникальные метки и индексы для меток в пакетах для tf.nn.ctc_loss.

depth_to_space(...): DepthToSpace для тензоров типа T.

depthwise_conv2d(...): 2D свёртка по глубине.

depthwise_conv2d_backprop_filter(...): Вычисляет градиенты свёртки по глубине по фильтру.

depthwise_conv2d_backprop_input(...): Вычисляет градиенты свёртки по глубине по входу.

depthwise_conv2d_native(...): Вычисляет 2D свёртку по глубине.

depthwise_conv2d_native_backprop_filter(...): Вычисляет градиенты свёртки по глубине по фильтру.

depthwise_conv2d_native_backprop_input(...): Вычисляет градиенты свёртки по глубине по входу.

dilation2d(...): Вычисляет градиентное расширение 4D input и 3D filter тензоров.

dropout(...): Вычисляет дропаут. (устаревшие аргументы)

dynamic_rnn(...): Создаёт рекуррентную нейронную сеть, заданную RNNCell cell. (устарело)

elu(...): Вычисляет экспоненциальную линейную функцию.

embedding_lookup(...): Ищет вложения для заданных ids из списка тензоров.

embedding_lookup_sparse(...): Ищет вложения для заданных идентификаторов и весов из списка тензоров.

erosion2d(...): Вычисляет градиентное сужение 4D value и 3D kernel тензоров.

fixed_unigram_candidate_sampler(...): Выборка набора классов с использованием заданного (фиксированного) базового распределения.

fractional_avg_pool(...): Выполняет дробную усредняющую пулинг на входе. (устарело)

fractional_max_pool(...): Выполняет дробную максимальную пулинг на входе. (устарело)

fused_batch_norm(...): Нормализация по батчам.

in_top_k(...): Определяет, находятся ли целевые значения в числе K лучших предсказаний.

l2_loss(...): Потеря L2.

l2_normalize(...): Нормализация по размерности axis с использованием L2 нормы. (устаревшие аргументы)

leaky_relu(...): Вычисление функции активации Leaky ReLU.

learned_unigram_candidate_sampler(...): Выборка набора классов из распределения, обученного во время обучения.

local_response_normalization(...): Локальная нормализация по ответам.

END_OF_DOCUMENT_MARKER

log_poisson_loss(...): Вычисляет логарифмическую потерю Пуассона, заданную log_input.

log_softmax(...): Вычисляет логарифмированные активации softmax. (устаревшие аргументы)

log_uniform_candidate_sampler(...): Выбирает набор классов, используя логарифмически равномерное (зиффово) базовое распределение.

lrn(...): Локальная нормализация отклика.

max_pool(...): Выполняет максимальное объединение входных данных.

max_pool1d(...): Выполняет максимальное объединение входных данных.

max_pool2d(...): Выполняет максимальное объединение 2D пространственных данных, таких как изображения.

max_pool3d(...): Выполняет максимальное объединение входных данных.

max_pool_v2(...): Выполняет максимальное объединение входных данных.

max_pool_with_argmax(...): Выполняет максимальное объединение входных данных и возвращает как максимальные значения, так и их индексы.

moments(...): Вычисляет среднее значение и дисперсию x.

nce_loss(...): Вычисляет и возвращает потерю обучения с использованием оценки шума-контраста.

normalize_moments(...): Вычисляет среднее значение и дисперсию, основанные на достаточных статистических данных.

pool(...): Выполняет N-мерную операцию объединения.

quantized_avg_pool(...): Производит среднее объединение входного тензора для квантованных типов.

quantized_conv2d(...): Вычисляет 2D свертку, используя квантованные 4D входные и фильтрующие тензоры.

quantized_max_pool(...): Производит максимальное объединение входного тензора для квантованных типов.

quantized_relu_x(...): Вычисляет квантованное выпрямленное линейное X: min(max(features, 0), max_value)

raw_rnn(...): Создаёт RNN, определённый ячейкой RNN cell и функцией цикла loop_fn.

relu(...): Вычисляет выпрямленное линейное преобразование: max(features, 0).

relu6(...): Вычисляет выпрямленное линейное преобразование 6: min(max(features, 0), 6).

relu_layer(...): Вычисляет Relu(x * weight + biases).

safe_embedding_lookup_sparse(...): Ищет результаты вложения, учитывая недопустимые идентификаторы и пустые функции.

sampled_softmax_loss(...): Вычисляет и возвращает потерю обучения с выборкой softmax.

scale_regularization_loss(...): Масштабирует сумму заданных потерь регуляризации числом реплик.

selu(...): Вычисляет масштабированное экспоненциально-линейное преобразование: scale * alpha * (exp(features) - 1)

separable_conv2d(...): 2D свертка с раздельными фильтрами.

sigmoid(...): Вычисляет сигмоиду x поэлементно.

sigmoid_cross_entropy_with_logits(...): Вычисляет сигмоидную кросс-энтропию, используя logits.

silu(...): Вычисляет функцию активации SiLU или Swish: x * sigmoid(beta * x).

softmax(...): Вычисляет активации softmax.

softmax_cross_entropy_with_logits(...): Вычисляет кросс-энтропию softmax между logits и labels. (устарело)

softmax_cross_entropy_with_logits_v2(...): Вычисляет кросс-энтропию softmax между logits и labels. (устаревшие аргументы)

softplus(...): Вычисляет поэлементное softplus: softplus(x) = log(exp(x) + 1).

softsign(...): Вычисляет softsign: features / (abs(features) + 1).

space_to_batch(...): SpaceToBatch для 4-мерных тензоров типа T.

space_to_depth(...): SpaceToDepth для тензоров типа T.

sparse_softmax_cross_entropy_with_logits(...): Вычисляет разреженную кросс-энтропию softmax между logits и labels.

static_bidirectional_rnn(...): Создаёт двунаправленную рекуррентную нейронную сеть. (устарело)

static_rnn(...): Создаёт рекуррентную нейронную сеть, заданную ячейкой RNN cell. (устарело)

static_state_saving_rnn(...): RNN, принимающий сохранятель состояния для расчёта RNN с усечённым временем. (устарело)

sufficient_statistics(...): Вычисляет достаточные статистические данные для среднего значения и дисперсии x.

swish(...): Вычисляет функцию активации SiLU или Swish: x * sigmoid(beta * x).

tanh(...): Вычисляет гиперболический тангенс x поэлементно.

top_k(...): Находит значения и индексы k наибольших элементов для последнего измерения.

uniform_candidate_sampler(...): Выбирает набор классов, используя равномерное базовое распределение.

weighted_cross_entropy_with_logits(...): Вычисляет взвешенную кросс-энтропию. (устаревшие аргументы)

weighted_moments(...): Возвращает среднее и дисперсию с весами частоты x.

with_space_to_batch(...): Выполняет op на пространственно-блочной представлении input.

xw_plus_b(...): Вычисляет matmul(x, weights) + biases.

zero_fraction(...): Возвращает долю нулей в value.

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/compat/v1/nn

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API