NumPy: вычисления и устройство массивов

Broadcasting: правила совместимости форм и исправление несовместимости

Содержание курса

Broadcasting с тензором (B, R, C): поправки по последней оси и коэффициенты по первой

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.

Что нужно сделать

Напишите программу, которая:

  1. Читает из stdin три целых числа B, R, C — размеры тензора.
  2. Читает следующие B * R строк; каждая содержит C целых чисел через пробел. Создаёт трёхмерный массив T через np.array(..., dtype=float).reshape(B, R, C) — shape (B, R, C).
  3. Читает одну строку с C числами через пробел — создаёт вектор поправок bias через np.array(..., dtype=float), shape (C,).
  4. Читает одну строку с B числами через пробел — создаёт вектор коэффициентов coeff через np.array(..., dtype=float), shape (B,).
  5. Шаг A. Прибавляет bias к T через broadcasting. Вектор bias shape (C,) совместим с T shape (B, R, C) напрямую — выравнивание справа даёт (1, 1, C). Сохраняет результат в T_biased — shape (B, R, C). Выводит T_biased.shape.
  6. Шаг B. Умножает T_biased на coeff, добавив к coeff две оси через coeff[:, np.newaxis, np.newaxis] — shape становится (B, 1, 1), что совместимо с (B, R, C). Сохраняет результат в T_scaled — shape (B, R, C). Выводит T_scaled.shape.
  7. Вычисляет total = np.sum(T_scaled) и выводит глобальную сумму элементов T_scaled с ровно двумя знаками после запятой.

Ввод и вывод

Программа читает stdin и пишет в stdout.

Формат ввода

Строка 1: три целых числа B R C через пробел.

Следующие B * R строк: по C целых чисел через пробел (данные тензора, строка за строкой по всем батчам).

Следующая строка: C чисел через пробел — вектор bias.

Последняя строка: B чисел через пробел — вектор coeff.

Гарантируется: B >= 2, R >= 2, C >= 2.

Формат вывода

Три строки:

  • shape T_biased в виде кортежа Python, например (2, 3, 4);
  • shape T_scaled в виде кортежа Python, например (2, 3, 4);
  • глобальная сумма T_scaled с ровно двумя знаками после запятой, например 16.00.
О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Проверяется тестами (1)
  • Тест 1
    Ввод
    2 3 4
    1 2 3 4
    5 6 7 8
    9 10 11 12
    13 14 15 16
    17 18 19 20
    21 22 23 24
    1 0 -1 2
    2 3
    Ожидаемый вывод
    (2, 3, 4)
    (2, 3, 4)
    852.00
    
Решение
Как проверяется решение

Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.

Отправьте решение, чтобы увидеть результаты тестов.