Spec-Zone.ru › TensorFlow 2.9

Модуль: tf.nn

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

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

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

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

'VALID' дополнение

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

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 входные данные дополняются таким образом, что размер выходных данных совпадает с размером входных данных. В двумерном случае размер выходных данных вычисляется следующим образом:

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 означает, что могут быть случаи, когда дополнение с обеих сторон (верх/низ, право/лево) отличается на единицу. В этом случае нижняя и правая стороны всегда получают дополнительный дополненный пиксель. Например, при 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, за исключением того, что дополнение должно быть вложенным списком, а не тензором. Например, в двумерном случае список имеет формат [[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.

Классы

class RNNCellDeviceWrapper: Оператор, который гарантирует, что RNNCell выполняется на определённом устройстве.

class RNNCellDropoutWrapper: Оператор, добавляющий дропаут к входным и выходным данным заданного ячейки.

class RNNCellResidualWrapper: Обёртка RNNCell, которая гарантирует, что входы ячейки добавляются к выходам.

Функции

all_candidate_sampler(...): Генерирует множество всех классов.

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

atrous_conv2d_transpose(...): Транспонированная матрица atrous_conv2d.

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

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

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

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

batch_norm_with_global_normalization(...): Батч-нормализация.

batch_normalization(...): Батч-нормализация.

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

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

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

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

conv1d(...): Вычисляет одномерную свёртку, заданную трёхмерными тензорами входных и фильтров.

conv1d_transpose(...): Транспонированная матрица conv1d.

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

conv2d_transpose(...): Транспонированная матрица conv2d.

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

conv3d_transpose(...): Транспонированная матрица conv3d.

conv_transpose(...): Транспонированная матрица convolution.

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

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

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

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

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

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

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

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

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

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

dilation2d(...): Вычисляет градации серого цвета 4-мерных input и 3-мерных filters тензоров.

dropout(...): Вычисляет дропаут: случайным образом устанавливает элементы в ноль для предотвращения переобучения.

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

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

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

erosion2d(...): Вычисляет эрозию серого цвета для 4-мерных value и 3-мерных filters тензоров.

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

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

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

gelu(...): Вычисляет функцию активации GELU (Gaussian Error Linear Unit).

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

isotonic_regression(...): Решает изотонические регрессионные задачи вдоль заданной оси.

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

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

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

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

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

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

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

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

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

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

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

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

max_pool_with_argmax(...): Выполняет максимальный пулинг на входе и выводит как максимальные значения, так и их индексы.

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

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

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

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

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

END_OF_DOCUMENT_MARKER

relu6(...): Вычисляет Rectified Linear 6: min(max(features, 0), 6).

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

with_space_to_batch(...): Выполняет op на представлении space-to-batch input.

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/nn

Spec-Zone.ru

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