Random Seed: 4529 Time Span: 0 to 10, Points: 1000 Learning Rate: 0.1 Weight Decay: 0.0001 Loss Function: def loss_fn(state_traj, t_span): theta = state_traj[:, :, 0] desired_theta = state_traj[:, :, 3] # Make the time weights broadcastable for theta [len(t_span), len(batches)] time_weights = (t_span ** 3).view(-1, 1) return 1e3 * torch.mean(time_weights * (theta - desired_theta) ** 2) Training Cases: [theta0, omega0, alpha0, desired_theta] [0.5235987901687622, 0.0, 0.0, 0.0] [-0.5235987901687622, 0.0, 0.0, 0.0] [2.094395160675049, 0.0, 0.0, 0.0] [-2.094395160675049, 0.0, 0.0, 0.0] [0.0, 1.0471975803375244, 0.0, 0.0] [0.0, -1.0471975803375244, 0.0, 0.0] [0.0, 6.2831854820251465, 0.0, 0.0] [0.0, -6.2831854820251465, 0.0, 0.0] [0.0, 0.0, 0.0, 6.2831854820251465] [0.0, 0.0, 0.0, -6.2831854820251465] [0.0, 0.0, 0.0, 1.5707963705062866] [0.0, 0.0, 0.0, -1.5707963705062866] [0.0, 0.0, 0.0, 1.0471975803375244] [0.0, 0.0, 0.0, -1.0471975803375244] [0.7853981852531433, 3.1415927410125732, 0.0, 0.0] [-0.7853981852531433, -3.1415927410125732, 0.0, 0.0] [1.5707963705062866, -3.1415927410125732, 0.0, 1.0471975803375244] [-1.5707963705062866, 3.1415927410125732, 0.0, -1.0471975803375244] [0.7853981852531433, 3.1415927410125732, 0.0, 6.2831854820251465] [-0.7853981852531433, -3.1415927410125732, 0.0, 6.2831854820251465] [1.5707963705062866, -3.1415927410125732, 0.0, 12.566370964050293] [-1.5707963705062866, 3.1415927410125732, 0.0, -12.566370964050293]