def __init__()

in common/quaternet.py [0:0]


    def __init__(self, num_joints, num_outputs=0, num_controls=0, model_velocities=False):
        """
        Construct a QuaterNet neural network.
        Arguments:
         -- num_joints: number of skeleton joints.
         -- num_outputs: extra inputs/outputs (e.g. translations), in addition to joint rotations.
         -- num_controls: extra input-only features.
         -- model_velocities: add a quaternion multiplication block on the RNN output to force
                              the network to model velocities instead of absolute rotations.
        """
        super().__init__()

        self.num_joints = num_joints
        self.num_outputs = num_outputs
        self.num_controls = num_controls
        
        if num_controls > 0:
            fc1_size = 30
            fc2_size = 30
            self.fc1 = nn.Linear(num_controls, fc1_size)
            self.fc2 = nn.Linear(fc1_size, fc2_size)
            self.relu = nn.LeakyReLU(0.05, inplace=True)
        else:
            fc2_size = 0
        
        h_size = 1000
        self.rnn = nn.GRU(input_size=num_joints*4 + num_outputs + fc2_size, hidden_size=h_size, num_layers=2, batch_first=True)
        self.h0 = nn.Parameter(torch.zeros(self.rnn.num_layers, 1, h_size).normal_(std=0.01), requires_grad=True)
        
        self.fc = nn.Linear(h_size, num_joints*4 + num_outputs)
        self.model_velocities = model_velocities