Если на диске данные у тебя лежат в подгтовленном виде, т.е., например, полность готовые запикленные тензоры для кераса, то скорость работы запросто упрется в производительность диска или скорость передачи данных между диском/процом/памятью. Правда, это ситуация редкая и вообще никак не связана с прикладной задачей, определяется просто способом работы с данными.
br0_oJ, если много-много классов можно разделить на независимые группы, то, конечно, можно обучать одну нейронку на каждой группе классов, а потом несколько нейронок просто заворачивать в единую обертку, это стандартный функционал того же тензорфлоу. Только придется написать логику соединения ответов нескольких нейронок (в простейшем случае - конкатенация).
br0_oJ, безосновательное заявление. Сколько бы ни было классов, все равно нужно все данные для обучения прогнать через архитектуру нейросети несколько раз (эпох). А количество классов задает размер буквально пары полносвязных слоев на выходе, т.е. ничто по сравнению с многослойными свертками того же резнета. Может, вопрос скорее в соответствии между задачей и возможностями? На безвидеокартье и процессор видеокарта.
Откуда такое разделение, сначала 10, потом еще 20? Данных для обучения нет? Они не размечены? В любом случае проще будет еще раз обучить всю нейронку заново. Именно так оно и делается.
Веса нейронки и, правда, никуда не подгружаются, они просто загружены в память и используются. А вот уже сами данные (обучение, тест, применение) постоянно преобразуются и перемещаются между диском, оперативкой, видеокартой и, конечно, процом, который все эти данные и гоняет туда-сюда-обратно.
Эта тема обычно называется просто парсинг, там есть слова DSL, BNF, Lex Yacc. Если взять, например, питон, то там есть куча разного уровня универсальности и сложности библиотек специально для парсинга чего угодно. Две популярных - это PyParsing и PLY (Python Lex Yacc). Они даже в учебниках по питону часто разбираются, но тема, конечно, сложная, копипаста из гугла сама по себе не заработает.
Rektalizer, такую задачу можно хотя бы попробовать решить. Первая большая сложность в том, что надо рассказать нейронке про взаимное положение полигонов. Очевидный вариант - двумерная карта/картинка и свертки. Тут сразу куча деталей про размер, масштаб и способ кодирования инофрмации. С рекуррентными нейронками будет еще сложнее. Вторая большая сложность - таргет. Наверное, стоит за раз предсказывать положение только одной поливалки - изначально их нет, а потом они по одной добавляются в подходящее место, пока польза от них еще есть. Тут-то возникает третья умеренная сложность - функция потерь . По дефолту это ж будет просто расстояние, на которое нейронка ошиблась (не забыть про масштаб из первой сложности), а возможно надо сразу реализовать типа человечью логику выбора места (особенно если данных мало). Ну, вот и все - решаем три сложные проблемы, обучаем, тестируем, победа.
Для данных с сильно разным размером обычно используют рекуррентые нейронные сети. В этом случае каждую сущность (полигон) подают по очереди. А в сверточные сети подают все сразу, но в виде двумерной карты/картинки (или нескольких), в которой каждый пиксель чем-то заполнен, т.е. просто набор полигонов не подходит, надо его на координатную плоскость положить. Но в любом случае надо начать с постановки задачи и формализации входных и выходных данных. Из этого потока сознания можно сделать вывод, что вроде речь идет об оптимальном размещении поливалок, - в таких случаях обычно начинают не с нейронок, а если доходят до неройнок, то почти всегда приходится существенно преобразовывать имеющиеся данные и временами даже вручную дорабатывать функцию потерь.
Тут же только временные объекты. Чаще такое происходит во время вызова функций и методов, там это называется в общем случае copy elision. А тут речь про инициализацию временными объектами. Это назывется - выражение для инициализации превращается компилятором в prvalue, которая не предполагает обязательного создания временного объекта. Так что вся цепочка временных объектов просто не создается. Инициализация в плюсах тема страшная. Она называется Declarators -> Initializers. Например, https://timsong-cpp.github.io/cppwp/n4659/dcl.init
Евгений Лернер, все нейронки про векторы, которые в общем случае - матрицы (тензоры). На практике все нейронки - это перемножение матриц. Хороший учебник по нейронкам с кратким и адекватным введением - Франсуа Шолле Глубокое обучение на питоне - книга про керас от автора кераса. Самое свежеее издание, наверное, доступно только на английском. Если векторы и матрицы даются сложно, то лучше начать с них - на практике это называется введение в анализ данных (в случае с питоном идет речь о нампае и пандасе).
Большинство учебников про нейронки и конкретные библиотеки как раз про это и рассказывают. Как, в принципе, и абсолютно любой пример работы с рекуррентными нейронными сетями - там прям и данные, и код, и пояснения.
Например, perceptilabs. А вообще просто гугли что-то по типу "tensorflow visual scripting", заменяя тф на керас или пайторч. Сам не пробовал. Даже не знаю, кто целевая аудитория таких продуктов.