【发布时间】:2020-04-16 01:58:45
【问题描述】:
我有一个神经网络。为简单起见,只有 一个 层,权重矩阵的形状为 2-by-2。我需要网络的输出是输入的旋转版本,即矩阵应该是有效的旋转矩阵。我尝试了以下方法:
def rotate(val):
w1 = tf.constant_initializer([[cos45, -sin45], [sin45, cos45]])
return tf.layers.dense(inputs=val, units=2, kernel_initializer=w1, activation=tf.nn.tanh)
在训练时,我不想丢失旋转矩阵的属性。换句话说,我需要这些层来仅估计矩阵中三角函数的角度(参数)。
我读到kernel_constraint 可以通过标准化值在这方面提供帮助。但是应用kernel_constraint 并不能保证对角线条目是相等的,并且非对角线条目是彼此的负数(在这种情况下)。一般来说,需要满足的两个属性是,行列式应该是1和R^T*R = I。
还有其他方法可以实现吗?
【问题讨论】:
标签: python-3.x tensorflow keras deep-learning rotational-matrices