Здравствуйте, я использую обработку (которая, по сути, просто Java), и я хотел иметь действительно класс матрицы simpel, чтобы помочь мне с моей нейронной сетью.
Он работает хорошо, но "матричное умножение"частично проделана настоящая работа.
Я знаю, что мой код неверен, но я не могу найти исправления.
Начало класса выглядит следующим образом:
class Matrix {
int rows;
int cols;
double[][] matrix;
Matrix(int rows_ , int cols_ ) {
rows = rows_;
cols = cols_;
// set size of matrix
matrix = new double[rows][cols];
// fill with 0s
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix[i][j] = 0;
}
}
}
Неправильная часть находится здесь:
Matrix Matrix_Multipication(Matrix b) {
// Create new Matrix for the result
Matrix c = new Matrix(b.cols,rows);
// check if not number of cols is number of rows of b
if (cols != b.rows) {
return c;
}
// Compute
for(int i=0; i< c.cols; i++){
for(int j=0; j< c.rows; j++){
for(int k=0; k< rows; k++){
c.matrix[i][j] = c.matrix[i][j] + matrix[i][k] * b.matrix[k][j]; // here is the error
}
}
}
// return new matrix
return c;
}
Ошибка:
ArrayIndexOutOfBoundsExcpetion: 1
Я получаю эту ошибку, только еслиРазмер столбца один:
Matrix m1 = new Matrix(2,3);
Matrix m2 = new Matrix(3,1); // here the 1
Matrix m3 = m1.Matrix_Multipication(m2); // apply Matrix_Multipication
Я думаю, что, возможно, конструктор тоже работает, но я не знаю, как это будет работать.
Также вы можете показать мою библиотеку для матриц и как я могу установить их, если вы не можете найти ни одной ошибки.
ps: я проводил повторные исследования, но я действительно не нашел ничего,Я решил написать свою собственную версию библиотеки Neural Network "The-Coding-Train" https://www.youtube.com/watch?v=NgZAIkDcPkI&list=PLRqwX-V7Uu6Y7MdSCaIfsxc561QI0U0Tb&index=8.
Пожалуйста, скажите мне, что мне нужно улучшить в этом вопросе и в этом коде.