Broadcasting: правила совместимости форм и исправление несовместимости
Содержание курса
Broadcasting с тензором (B, R, C): поправки по последней оси и коэффициенты по первой
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая:
- Читает из
stdinтри целых числаB,R,C— размеры тензора. - Читает следующие
B * Rстрок; каждая содержитCцелых чисел через пробел. Создаёт трёхмерный массивTчерезnp.array(..., dtype=float).reshape(B, R, C)— shape(B, R, C). - Читает одну строку с
Cчислами через пробел — создаёт вектор поправокbiasчерезnp.array(..., dtype=float), shape(C,). - Читает одну строку с
Bчислами через пробел — создаёт вектор коэффициентовcoeffчерезnp.array(..., dtype=float), shape(B,). - Шаг A. Прибавляет
biasкTчерез broadcasting. Векторbiasshape(C,)совместим сTshape(B, R, C)напрямую — выравнивание справа даёт(1, 1, C). Сохраняет результат вT_biased— shape(B, R, C). ВыводитT_biased.shape. - Шаг 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. - Вычисляет
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Ввод
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 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
