Why is there a torch.nn.Parameter class but not a torch.nn.Buffer class?

It seems strange that I need to use self.register_buffer('name', tensor) instead of self.name = torch.nn.Buffer(tensor).

Because a nn.Parameter is trainable whereas a buffer is just a tensor conveniently stored.
There also exist self.register_parameter