我正在用keras
编写一个Autoencoder。
我输入了一个对称矩阵,我将其拆分为N个子矩阵,以便训练我的深度学习框架。
由于这个矩阵是对称的,我想在输入中给出一个下三角矩阵。然而,一半的子矩阵将是“空的”(等于0),这对训练来说不是很好。我可以删除所有空的子矩阵,但是来自矩阵对角线的子矩阵仍然是半空/半填充。另一种选择是将下三角矩阵分成三角形而不是正方形。
问题是我不知道keras
层是否支持形状而不是正方形作为框架的输入。
支持非方形(即矩阵不是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])