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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 103
  • Облачные технологии14 031
  • QA вакансии3 458
  • Backend вакансии2 078
  • Инженер данных1 772
  • Продакт-менеджер1 238

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии973
  • AI вакансии948
  • Frontend вакансии736
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 542
  • Node.js2 017
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP682
  • C++570

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

  • Kubernetes7 748
  • DevOps вакансии6 051
  • Linux-инфраструктура5 485
  • Terraform / IaC4 252
  • CI/CD3 239
  • Мониторинг и Observability1 781
  • SRE560
  • Кибербезопасность446

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

  • Data Scientist1 114
  • Бизнес-аналитик915
  • Аналитик данных828
  • Системный аналитик154

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

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

По регионам

  • Вакансии в США43 172
  • Вакансии в Европе23 542
  • Вакансии в Канаде4 358
  • Работа в России3 909

По формату

  • Удалённые вакансии72 938
  • Релокация в США43 172
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии41 839
  • Middle вакансии20 268
  • Junior вакансии6 588

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

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

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

Как Functional API обрабатывает модели с несколькими входами и выходами в Keras?

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

Functional API позволяет создавать модели с несколькими tf.keras.Input и несколькими выходными головами, компилируемыми с отдельными loss и loss_weights. Входы и выходы передаются как dict с именами, совпадающими с name= в Input/Dense слоях.

Архитектура с двумя входами и двумя выходами

import tensorflow as tf
from tensorflow import keras

# --- Два входа ---
image_input = keras.Input(shape=(224, 224, 3), name='image')       # изображение
meta_input  = keras.Input(shape=(16,),          name='metadata')   # числовые метаданные

# --- Ветвь изображения ---
x = keras.layers.Conv2D(32, 3, activation='relu', padding='same')(image_input)
x = keras.layers.GlobalAveragePooling2D()(x)   # (batch, 32)
x = keras.layers.Dense(64, activation='relu')(x)

# --- Ветвь метаданных ---
m = keras.layers.Dense(32, activation='relu')(meta_input)
m = keras.layers.Dense(32, activation='relu')(m)

# --- Слияние ---
merged = keras.layers.Concatenate()([x, m])    # (batch, 96)
shared = keras.layers.Dense(64, activation='relu')(merged)

# --- Два выхода ---
class_output = keras.layers.Dense(10, activation='softmax', name='class_head')(shared)
price_output = keras.layers.Dense(1,  activation='linear',  name='price_head')(shared)

model = keras.Model(
    inputs={'image': image_input, 'metadata': meta_input},
    outputs={'class_head': class_output, 'price_head': price_output},
)
model.summary()

Functional API vs Sequential

Sequential API строит линейный стек слоёв. Functional API позволяет строить DAG-граф тензоров: несколько входных tf.keras.Input, общие веса между ветвями, несколько голов с разными функциями потерь. Это единственный способ реализовать multi-task learning, siamese-сети, модели с боковыми входами (текст + метаданные) или multi-label классификаторы с разными loss-весами в Keras.

Компиляция с несколькими функциями потерь

model.compile(
    optimizer=keras.optimizers.Adam(learning_rate=1e-3),
    loss={
        'class_head': 'sparse_categorical_crossentropy',
        'price_head': 'mse',
    },
    loss_weights={
        'class_head': 1.0,
        'price_head': 0.1,   # масштабируем, чтобы MSE не доминировала
    },
    metrics={
        'class_head': ['accuracy'],
        'price_head': ['mae'],
    },
)

Обучение с dict-входами и dict-выходами

import numpy as np

# Синтетические данные
N = 512
train_data = {
    'image':    np.random.rand(N, 224, 224, 3).astype(np.float32),
    'metadata': np.random.rand(N, 16).astype(np.float32),
}
train_labels = {
    'class_head': np.random.randint(0, 10, size=N),
    'price_head': np.random.rand(N, 1).astype(np.float32),
}

history = model.fit(
    train_data,
    train_labels,
    batch_size=32,
    epochs=5,
    validation_split=0.2,
)

# Предсказание возвращает dict с именами выходов
preds = model.predict({'image': train_data['image'][:4],
                       'metadata': train_data['metadata'][:4]})
print(preds['class_head'].shape)  # (4, 10)
print(preds['price_head'].shape)  # (4, 1)

Визуализация графа

keras.utils.plot_model(
    model,
    to_file='model_graph.png',
    show_shapes=True,
    show_layer_names=True,
    expand_nested=True,
)

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

  • Имена входов в keras.Input(name=...) должны совпадать с ключами dict при вызове fit() и predict() — несовпадение имён порождает молчаливое игнорирование или ошибку формы.
  • loss_weights не нормируются автоматически: если MSE на задаче регрессии имеет порядок 1e4, а crossentropy — 1.0, без веса MSE «поглотит» сигнал классификации.
  • При использовании validation_split данные разбиваются по первой оси до перемешивания — если датасет не перемешан заранее, в validation попадут только последние N%.
  • Shared-слои (один слой, подключённый к нескольким ветвям) используют одни веса, но градиенты суммируются — это намеренное поведение, но может удивить при дебаге.
  • Сохранение через model.save('model.keras') работает, но tf.saved_model.save требует, чтобы все входные подписи были явными — анонимные input-слои ломают экспорт.
  • model.summary() не отображает форму тензора в точках ветвления в старых версиях Keras — используйте keras.utils.plot_model для проверки корректности графа.
  • При передаче данных как numpy-массивов (не dict), Keras сопоставляет их по порядку, а не по имени — если порядок входов неожиданный, модель молча обучается на неправильных данных.
  • Метрики каждого выхода пишутся в history как class_head_accuracy, val_price_head_mae — при логировании в TensorBoard или MLflow нужно явно указывать эти ключи.

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

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

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

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

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

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

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

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

Источники

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

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

TensorFlowdata-aievaluationmodel-training

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

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