Я использую MatrixToolkitsJava для проекта Neural Network для моей диссертации, и в этом мне нужно сделать матрицы весов более крупными, а позже потенциально меньшими. То, как я сейчас делаю это сейчас, создавая новую матрицу и копируя существующие значения при создании новых значений, крайне неэффективно, занимая подавляющее большинство времени. Есть ли эффективный способ добавления строк и столбцов в существующие матрицы?Создание матрицы больше
ответ
Как указано, вы можете использовать списки, но если вы настроены на использование массива, вы можете создать метод для создания нового массива, скопировать данные и затем заменить ссылку, которую вы храните.
Если вы используете System.arrayCopy(Object src, int srcPos, Object dest, int destPos, int length)
, он будет достаточно быстрым, если вы не используете гигантский массив.
EDIT: Не могу поверить, что раньше не думал об этом. Просто используйте матричное умножение для копирования данных. Например, чтобы сделать 2 на 2 a 3 на 3, просто сделайте [2,2] x [(1,0), (0,1), (0,0)] = [2,3] => [ (1,0,0), (0,1,0)] x [2,3] = [3,3]
Они не массивы, они являются матрицами из MTJ для требуемой вычислительно-эффективной линейной алгебры. И они становятся довольно большими, и это проблема. Они легко достигают тысяч строк/столбцов. Это то, что я делаю в настоящее время, копируя данные, которые у меня есть, и добавляю новые данные, но, как я уже сказал, он довольно неэффективен и имеет тенденцию замедлять работу. Я сомневаюсь, что arrayCopy будет работать для MTJ Matrices. – Beez
Есть ли все равно, чтобы выяснить, насколько большой вам это нужно заранее? В противном случае я предлагаю сделать это намного больше, чем вы думаете, что вам это нужно. –
Нет, к сожалению. Цель здесь состоит в том, чтобы создать растущую нейронную сеть, которая, мы надеемся, найдет соответствующий размер по мере ее появления. Другая проблема, заключающаяся в том, что матрицы больше, чем они должны быть, состоит в том, что чем больше они тем больше, тем меньше программа замедляется. Поэтому, делая их чрезвычайно большими, и их заполнение приведет к более медленной программе, чем к их росту, поскольку я иду. – Beez
- 1. Создание матрицы?
- 2. Создание матрицы
- 3. Создание матрицы
- 4. Создание матрицы numdray матрицы симметрично
- 5. Создание матрицы условных процентов
- 6. создание матрицы из меньшей матрицы «ключа»
- 7. Создание матрицы матрицы путем загрузки данных «MATLAB»
- 8. Создание 2D-матрицы из «разреза» трехмерной матрицы
- 9. Создание матрицы гистограмм из матрицы чисел
- 10. Создание новой матрицы из существующей матрицы
- 11. Запрос на создание матрицы матрицы matlab
- 12. Создание индикаторной матрицы из корреляционной матрицы
- 13. Создание матрицы из индексов и матрицы значений
- 14. Создание матрицы вращения
- 15. Создание линейной комбинации матрицы
- 16. Создание заданного размера матрицы
- 17. Создание матрицы коррелированных векторов
- 18. Создание квадратной идентичной матрицы
- 19. Создание матрицы numpy
- 20. Создание матрицы столбца означает
- 21. Создание матрицы для бинокля?
- 22. Создание матрицы OpenCV
- 23. Создание параллельной матрицы параллельно
- 24. Создание смещенной матрицы
- 25. Создание матрицы определенной структуры
- 26. C++ Создание матрицы наборов
- 27. создание матрицы с вероятностями
- 28. Создание матрицы результатов «concord»
- 29. Создание квадратной матрицы 5x5
- 30. Создание матрицы расстояний?
Невозможно изменить размер массива, поэтому они изобрели что-то называемое списки. Возможно, вы можете создать архариста арраистов. – Gendarme
Я не использую массив, я использую матрицу из MatrixToolkitsJava. Мне просто интересно, есть ли более вычислительно эффективный способ изменения размера матрицы или даже копирования значений в матрице. – Beez