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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 129
  • Облачные технологии14 088
  • QA вакансии3 457
  • Backend вакансии2 115
  • Инженер данных1 805
  • Продакт-менеджер1 262

Разработка

  • Android1 865
  • iOS1 698
  • Fullstack вакансии989
  • AI вакансии949
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 660
  • Java6 550
  • Node.js2 020
  • .NET1 722
  • Kotlin1 619
  • Rust1 455
  • C#711
  • PHP683
  • C++572

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

  • Kubernetes7 769
  • DevOps вакансии6 056
  • Linux-инфраструктура5 493
  • Terraform / IaC4 266
  • CI/CD3 250
  • Мониторинг и Observability1 788
  • SRE567
  • Кибербезопасность453

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

  • Data Scientist1 142
  • Бизнес-аналитик927
  • Аналитик данных854
  • Системный аналитик153

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

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

По регионам

  • Вакансии в США44 281
  • Вакансии в Европе23 875
  • Вакансии в Канаде4 475
  • Работа в России3 922

По формату

  • Удалённые вакансии75 035
  • Релокация в США44 281
  • Гибридная работа12 401
  • Офисная работа7 079

По уровню

  • Senior вакансии42 679
  • Middle вакансии20 894
  • Junior вакансии6 722

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

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

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

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

Что такое callbacks в Keras и как использовать ModelCheckpoint, EarlyStopping и TensorBoard?

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

Keras callbacks — это объекты, вызываемые в ключевые моменты обучения (конец эпохи, конец батча). ModelCheckpoint сохраняет лучшие веса, EarlyStopping останавливает при деградации метрики, TensorBoard логирует метрики и графики.

ModelCheckpoint

Сохраняет веса (или всю модель) в конце каждой эпохи, опционально только когда отслеживаемая метрика улучшилась.

import tensorflow as tf

checkpoint_cb = tf.keras.callbacks.ModelCheckpoint(
    filepath="checkpoints/model_epoch{epoch:02d}_val{val_accuracy:.4f}.keras",
    monitor="val_accuracy",     # отслеживаемая метрика
    save_best_only=True,        # сохранять только лучшую
    save_weights_only=False,    # сохранять всю модель (архитектура + веса)
    mode="max",                 # "max" для accuracy, "min" для loss
    verbose=1,
)

Формат .keras (Keras 3 native) предпочтительнее .h5: он поддерживает кастомные слои без дополнительной регистрации и хранит optimizer state для resuming обучения.

Что такое callbacks в Keras

Callback — это объект, наследующий tf.keras.callbacks.Callback, с методами-хуками: on_train_begin, on_epoch_end, on_batch_end и другими. Keras вызывает их в нужный момент обучения. Список callbacks передаётся в model.fit(callbacks=[...]). Три наиболее важных встроенных callback'а — ModelCheckpoint, EarlyStopping и TensorBoard.

EarlyStopping

Прерывает обучение, если метрика перестала улучшаться в течение patience эпох. Совместно с restore_best_weights=True гарантирует, что финальная модель — наилучшая, а не последняя.

early_stop_cb = tf.keras.callbacks.EarlyStopping(
    monitor="val_loss",
    patience=5,                   # ждём 5 эпох без улучшения
    min_delta=1e-4,               # минимальное значимое улучшение
    restore_best_weights=True,    # возвращаем веса лучшей эпохи
    verbose=1,
)

TensorBoard

Логирует скалярные метрики, гистограммы весов, граф вычислений, профиль производительности pipeline и embedding-проекции.

tensorboard_cb = tf.keras.callbacks.TensorBoard(
    log_dir="./logs/run_001",
    histogram_freq=1,          # гистограммы весов каждую эпоху
    write_graph=True,          # визуализация графа модели
    write_images=False,        # не логируем изображения весов
    update_freq="epoch",       # частота логирования: "epoch" или int (батчи)
    profile_batch=(5, 15),     # профилируем батчи 5–15
)

Запуск TensorBoard локально:

tensorboard --logdir ./logs --port 6006
# открываем http://localhost:6006

Полный пример с тремя callbacks

import tensorflow as tf

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()
x_train = x_train.astype("float32") / 255.0
x_test = x_test.astype("float32") / 255.0

model = tf.keras.Sequential([
    tf.keras.layers.Conv2D(32, 3, activation="relu", input_shape=(32, 32, 3)),
    tf.keras.layers.MaxPooling2D(),
    tf.keras.layers.Conv2D(64, 3, activation="relu"),
    tf.keras.layers.GlobalAveragePooling2D(),
    tf.keras.layers.Dense(128, activation="relu"),
    tf.keras.layers.Dense(10, activation="softmax"),
])

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

callbacks = [
    tf.keras.callbacks.ModelCheckpoint(
        "best_model.keras", monitor="val_accuracy",
        save_best_only=True, mode="max",
    ),
    tf.keras.callbacks.EarlyStopping(
        monitor="val_loss", patience=5,
        restore_best_weights=True,
    ),
    tf.keras.callbacks.TensorBoard(
        log_dir="./logs", histogram_freq=1,
    ),
]

model.fit(
    x_train, y_train,
    validation_split=0.1,
    epochs=50,         # EarlyStopping остановит раньше
    batch_size=64,
    callbacks=callbacks,
)

# Загружаем лучшую модель для финальной оценки
best_model = tf.keras.models.load_model("best_model.keras")
best_model.evaluate(x_test, y_test)

Кастомный callback

Для специфических нужд (логирование в Weights & Biases, отправка алертов при NaN loss) наследуем tf.keras.callbacks.Callback:

class NanLossAlert(tf.keras.callbacks.Callback):
    def on_batch_end(self, batch, logs=None):
        loss = (logs or {}).get("loss")
        if loss is not None and tf.math.is_nan(loss):
            print(f"\nNaN loss detected at batch {batch}, stopping.")
            self.model.stop_training = True

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

  • ModelCheckpoint с save_best_only=True и mode="auto" может неправильно определить направление для кастомных метрик — лучше явно указывать mode="max" или mode="min".
  • EarlyStopping без restore_best_weights=True возвращает модель последней эпохи, а не лучшей — обычно это ошибка.
  • Если validation_data не передан в fit(), метрики с префиксом val_ не вычисляются, и callback с monitor="val_loss" выбросит исключение.
  • TensorBoard с histogram_freq=1 значительно замедляет обучение на больших моделях — для prod-обучения используйте histogram_freq=0 или раз в N эпох.
  • Несколько запусков TensorBoard в одну и ту же директорию мешают друг другу — используйте уникальные log_dir (например, с timestamp через datetime.now().strftime).
  • Callbacks порядкозависимы: EarlyStopping должен стоять после ModelCheckpoint в списке, иначе чекпоинт лучшей модели может не сохраниться до остановки.
  • Формат .h5 не поддерживает сохранение optimizer state при save_weights_only=False для некоторых оптимизаторов TF 2.x — используйте .keras или SavedModel.
  • Кастомный callback с тяжёлой логикой в on_batch_end (например, API-запрос) блокирует обучение синхронно — выносите I/O в отдельный поток или используйте on_epoch_end.

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

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

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

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

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

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

Источники

  • https://www.tensorflow.org/guide/keras
  • https://www.tensorflow.org/tensorboard/get_started
←Предыдущий вопросЧто такое Keras и как он соотносится с TensorFlow 2.x?Следующий вопрос→Что такое gradient clipping в TensorFlow и как его применять?

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

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?