Можно ли придать слою кераса другой тип формы, кроме квадратной? - PullRequest
0 голосов
/ 27 марта 2019

Я кодирую автоэнкодер с keras.

. У меня на входе симметричная матрица, которую я разбил на N подматриц, чтобы обучить мою структуру глубокого обучения.

Поскольку эта матрица симметрична, я хотел бы вместо этого ввести на входе нижнюю треугольную матрицу.Тем не менее, половина подматриц будет тогда «пустой» (равной 0 с), что не очень приятно для обучения.Я могу удалить все пустые подматрицы, но те, которые идут из диагонали матрицы, все равно будут наполовину пустыми / наполовину заполненными.Другим вариантом было бы разделить нижнюю треугольную матрицу на треугольники вместо квадратов.

Проблема в том, что я не знаю, поддерживают ли слои keras форму, отличную от квадратов, в качестве входных данных каркаса.

1 Ответ

1 голос
/ 27 марта 2019

Поддерживаются не квадратные формы (то есть матрица, а не N x N), но, похоже, ваш вопрос:

how can I use the symmetric triangular 
feature matrix and deduplicate along the diagonal?

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

Это даст вам повторяемое векторное представление объекта.

Например, с numpy:

>>> a = np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> a
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
>>> a[np.triu_indices(3, k = 0)]
array([1, 2, 3, 5, 6, 9])
...