Mantius писал(а):Я тоже изначально это всё представлял как просто набор матриц 250*250, 144*144 и т.д.(делим сторону первой матрицы на корень из 3, округляем в меньшую сторону до целых, получаем сторону следующей матрицы. Последняя матрица имеет размер 2*2.) Но проблема в том, что в таком случае нужна уже четырехмерная матрица 250*250*144*144(т.е. каждому элементу матрицы размера 144*144 соответствует своя матрица размера 250*250, итого 144*144*250*250 элементов).
Боюсь, что не понял реплики. Нет никакой разницы какой размерности матрица, хоть двух, хоть трех, хоть четырехмерная... и даже если это вообще не матрица, а множество значений.
Как я понял у тебя есть входные данные - очень большой набор значений. На выходе небольшой набор данных. Твоя задача - это преобразование входного набора данных, в выходной, т.е. вычисление некоторой функции. Изначально эта функция тебе не известна и будет уточнятся в процесе обучения (а именно, будут уточнятся неизвестные коэфициенты). Вычисление этой функции у тебя разбито на несколько этапов (слоёв), каждый этап это тоже функция, которая преобразуется большой набор данных в чуть меньший. А результирующая функция - есть композиция этих этапов
Т.е. y = F(x) = F1( F2( F3(x) ) ) и т.п. если слоёв больше.
Где x - входной набор данных ("матрица", в хоть двухмерная, хоть четрыехмерная, хоть вообще круглая или бесформеная), y - выходной набор данных (допустим тоже "матрица").
Если ты напишешь алгоритм вычисления каждой из функций (F1, F2, F3), то будет найдешь F. Здесь надо задаться вопросом, какие эти функции F1, F2, F3, как выглядят. В примере который я привел, тупо смешиваются каждые 4 соседние ячейки в одну. Если немного обобщить, то можно получить такой вид функции.
Путь x - входная матрица, y - выходная
y[i, j] = P(x, i, j) = summa ( A[u, v] * x[i + u, j + v] ), где u, v изменяются от 0 до некоторого K.
В частности, если K = 1 и A[u, v] = 1/4, то получаем y[i, j] = P(x, i, j) = ( x[i, j] + x[i, j+1] + x[i+1, j] + x[i+1, j+1] ) / 4 - пример который я привел выше.
Таким образом, функция P опеределяется через матрицу A (может быть произвольных размеров). Изменяя коэфициенты матрицы A будем получать разные функции P. Более того, я думаю что в данном случае, если известно несколько опорных точек Y{i} = F( X{i} ), то можно попробовать найти методом наименьших квадратов значения коэфициентов матриц(ы) A, такие, что при заданых известных значениях X функция будет возвращать соответствующее известное значение Y
Возможно у тебя другие функции (скорее всего у тебя матрица A будет зависеть от i, j - т.е. для кажого элемента выходной матрицы Y будет своя матрица A), ты нам ничего не сказал о виде своих функций, поэтому нам остается только гадать на кофейной гуще. Обсуждать структуры данных отдельно от алгоритмов (и наоборот, алгоритмы отдельно от структур) - бесполезная трата времени
Vadim писал(а): Для хранения данных наиболее целесообразно использовать какой либо сервер базы данных, т.к. там уже есть все методы занесения и извлечения данных, а так же манипуляций ими.
Лично я не вижу здесь никакой целесообразности использования БД...
Кто-нибудь попробует объяснить зачем тут БД? и как с её помощью можно решить поставленую задачу?