I guess it’s ultimately a matter of taste, but an nn.View module seems to enable a more declarative definition of models that require a change in tensor size between layers; having to explicitly call the view() method in forward() effectively spreads the model definition across __init__() and forward(). In any event, the nn.View module I was thinking about contributing just wraps the torch.autograd.variable.View() function and implicitly handles the batch size, so the underlying functionality is (presumably) the same as explicitly calling the tensor view() method.