Увеличение матрицы

Я использую MatrixToolkitsJava для проекта нейронной сети для своей диссертации, и в нем мне нужно сделать матрицы весов больше, а позже и потенциально меньше. То, как я сейчас делаю это, создаю новую матрицу и копирую существующие значения, в то время как создаю новые значения, крайне неэффективно, занимая подавляющее большинство времени. Есть ли эффективный способ добавить строки и столбцы в существующие матрицы?

1 ответ

Как уже говорилось, вы можете использовать списки, но если вы не можете использовать массив, вы можете создать метод для создания нового массива, скопировать данные, а затем заменить ссылку, которую вы храните.

Если вы используете System.arrayCopy(Object src, int srcPos, Object dest, int destPos, int length) это будет достаточно быстро, если вы не используете гигантский массив.

РЕДАКТИРОВАТЬ: Я не могу поверить, что я не думал об этом раньше. Просто используйте матричное умножение для копирования данных. Например, чтобы сделать 2 на 2, а 3 на 3, просто сделайте [2,2] x [(1,0), (0,1), (0,0)] = [2,3] => [(1,0,0), (0,1,0)] x [2,3] = [3,3]

Другие вопросы по тегам