我希望限制神经网络中的一层,以特定方式寻找其输入的最佳旋转,以满足某个目标。 (我的最终目标,其中R
是旋转层,形式为R.transpose() @ f(R @ z)
)。
我希望通过梯度下降来训练这个(+其他组件)。如果z只有二维,那么我可以这样说
R = [ cos(theta) -sin(theta)
sin(theta) cos(theta)]
我希望 theta
可以成为一个可学习的参数。但是,对于 d 维空间(其中 d>10),我不知道如何实际设置它。我尝试查阅有关如何制作 d 维旋转矩阵的资源,但这涉及到线性代数并且超出了我的能力范围。感觉这应该比看起来更容易,所以我觉得我可能忽略了什么(比如 R 是否应该只是一个普通的线性层,没有任何非线性激活)。
有人有任何想法吗?提前感谢您:)