Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 661новая вакансия за сутки·92 296вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 192
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 143
  • Облачные технологии14 064
  • QA вакансии3 446
  • Backend вакансии2 095
  • Инженер данных1 795
  • Продакт-менеджер1 237

Разработка

  • Android1 857
  • iOS1 697
  • Fullstack вакансии981
  • AI вакансии949
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 689
  • Java6 529
  • Node.js2 023
  • .NET1 723
  • Kotlin1 596
  • Rust1 462
  • C#710
  • PHP683
  • C++574

DevOps и инфраструктура

  • Kubernetes7 762
  • DevOps вакансии6 052
  • Linux-инфраструктура5 491
  • Terraform / IaC4 268
  • CI/CD3 244
  • Мониторинг и Observability1 789
  • SRE567
  • Кибербезопасность455

Аналитика и данные

  • Data Scientist1 128
  • Бизнес-аналитик917
  • Аналитик данных846
  • Системный аналитик151

Другие направления

  • Проджект-менеджер608
  • UI/UX дизайн142
  • Ручное тестирование14

По регионам

  • Вакансии в США43 473
  • Вакансии в Европе23 552
  • Вакансии в Канаде4 444
  • Работа в России3 901

По формату

  • Удалённые вакансии73 579
  • Релокация в США43 516
  • Гибридная работа12 395
  • Офисная работа7 085

По уровню

  • Senior вакансии42 222
  • Middle вакансии20 589
  • Junior вакансии6 639

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К подготовке по вакансии←К теме TensorFlowВсе вопросы
TensorFlowMiddleТеория

Как работает batch normalization и как она применяется в TensorFlow?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Batch normalization нормализует активации по батчу во время обучения и использует накопленные moving_mean/moving_variance при инференсе. В кастомном цикле нужно явно передавать training=True/False — иначе статистики не обновляются.

Что такое batch normalization

Batch normalization (BN) — слой, который нормализует активации внутри батча, чтобы ускорить обучение и снизить чувствительность к инициализации весов. Для каждого признака слой вычисляет среднее и дисперсию по батчу, нормализует значения, затем применяет обучаемые параметры gamma (масштаб) и beta (сдвиг):

x_norm = (x - mean(x)) / sqrt(var(x) + epsilon)
y = gamma * x_norm + beta

Во время инференса вместо статистик батча используются скользящие средние moving_mean и moving_variance, накопленные за обучение.

Режимы train и inference

Ключевой нюанс: BN ведёт себя по-разному в зависимости от аргумента training. В режиме training=True нормализация идёт по текущему батчу и обновляются скользящие средние. В training=False — используются накопленные moving_mean / moving_variance.

Пример в Keras

import tensorflow as tf
import numpy as np

# Создаём модель с BatchNormalization
model = tf.keras.Sequential([
    tf.keras.layers.Dense(64, use_bias=False),  # bias не нужен — BN добавляет beta
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Activation('relu'),
    tf.keras.layers.Dense(64, use_bias=False),
    tf.keras.layers.BatchNormalization(),
    tf.keras.layers.Activation('relu'),
    tf.keras.layers.Dense(10, activation='softmax'),
])

model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'],
)

# Синтетические данные
X = np.random.randn(1000, 20).astype('float32')
y = np.random.randint(0, 10, size=1000)

model.fit(X, y, epochs=5, batch_size=32, validation_split=0.2)

# Проверяем, что moving_mean накопились
bn_layer = model.layers[1]
print("moving_mean:", bn_layer.moving_mean.numpy()[:4])
print("moving_variance:", bn_layer.moving_variance.numpy()[:4])

Ручное управление режимом training

При использовании кастомного цикла обучения нужно явно передавать training=True/False:

@tf.function
def train_step(x_batch, y_batch):
    with tf.GradientTape() as tape:
        logits = model(x_batch, training=True)  # <-- важно
        loss = loss_fn(y_batch, logits)
    grads = tape.gradient(loss, model.trainable_variables)
    optimizer.apply_gradients(zip(grads, model.trainable_variables))
    return loss

@tf.function
def eval_step(x_batch, y_batch):
    logits = model(x_batch, training=False)  # <-- важно
    return loss_fn(y_batch, logits)

Если передать training=False во время обучения, moving_mean не обновится и инференс будет некорректным. Это частая и трудно обнаруживаемая ошибка.

BatchNormalization и Functional API

inputs = tf.keras.Input(shape=(20,))
x = tf.keras.layers.Dense(64, use_bias=False)(inputs)
x = tf.keras.layers.BatchNormalization()(x)
x = tf.keras.layers.ReLU()(x)
outputs = tf.keras.layers.Dense(10, activation='softmax')(x)

func_model = tf.keras.Model(inputs, outputs)
func_model.summary()
# Обратить внимание: BN добавляет 4 переменных:
# gamma, beta (trainable) + moving_mean, moving_variance (non-trainable)

Подводные камни

  • Маленький батч (batch size < 8): статистики батча нестабильны, BN ухудшает обучение. Альтернативы — Layer Normalization или Group Normalization.
  • Забыть training=True в кастомном цикле: moving_mean не обновляется, модель правильно обучается, но выдаёт плохие результаты на инференсе.
  • use_bias=True перед BN: BN вычитает среднее, поэтому bias Dense-слоя перед BatchNormalization бесполезен — он полностью компенсируется параметром beta.
  • BN с RNN / последовательными данными: BN плохо работает с переменной длиной последовательностей и рекуррентными сетями — для них используется Layer Normalization.
  • Сохранение модели: при model.save() сохраняются и moving_mean/moving_variance. Если загрузить только веса (load_weights), эти переменные могут остаться нулевыми.
  • Transfer learning — заморозка BN: при fine-tuning часто замораживают BN-слои базовой модели (layer.trainable = False), чтобы не испортить накопленную статистику маленьким батчем домена.
  • Детерминированность GPU: на GPU порядок редукций нестрого детерминирован, поэтому статистики батча могут незначительно отличаться между запусками даже при фиксированном seed.
  • Mixed precision: при tf.keras.mixed_precision гамма/бета хранятся в float32, а активации — в float16. Убедитесь, что compute_dtype и variable_dtype у BN-слоя правильные.

Типичные ошибки

  • Объяснять batch normalization только синтаксисом без shape, dtype, состояния или режима выполнения.
  • Игнорировать leakage, воспроизводимость, пустые входы и скрытые копии данных.
  • Не проверять production-симптомы: latency, память, ретраи, дрейф качества и несовпадение версий.

Что проверяет интервьюер

  • Может ли связать batch normalization с реальным контрактом входов и выходов.
  • Упоминает ли тесты, метрики, reproducibility и диагностику ошибок.
  • Видит ли различие между demo-кодом в ноутбуке и production-пайплайном.

Как вы знаете этот вопрос?

Проверить себя по теме TensorFlow →

Источники

  • https://www.tensorflow.org/guide
←Предыдущий вопросКак проверять корректность решения на TensorFlow, а не только успешное выполнение кода?Следующий вопрос→Как реализовать кастомные слои путём наследования от `tf.keras.layers.Layer`?

Связанные темы

TensorFlowdata-aievaluationmodel-training

Вакансии с этим навыком

  • AI/AI Agent Developer (Python)
  • AI/ML Solution Architect
  • AI Engineer (m/k/os)
  • Senior Data Scientist
  • Machine Learning Engineer

Частые вопросы на собеседовании

  • Как работает tf.data API и почему он важен для построения эффективных пайплайнов загрузки данных?
  • Что такое tf.function и как он улучшает производительность за счёт компиляции графа?
  • Как бороться с переобучением в моделях TensorFlow (dropout, L2-регуляризация, аугментация данных)?
  • Как работает tf.keras.Model.compile() — что такое loss, optimizer и metrics?