I would honestly just write your own module for this. You can initialize a tensor that is to be shared and inside of its forward method, use those weights in a transposed and non-transposed way. Perhaps have it as a flag that’s passed in through the forward method. I think you’ll get long-term weirdness when trying to strap two linear layers together.