Your code works fine without retain_graph=True:
model_clf = modelClassifier(bottleneck_dim=60)
optimizer_clf = torch.optim.SGD(model_clf.parameters(), lr = 0.001)
loss_function_clf = nn.CrossEntropyLoss()

for _ in range(10):
    data = torch.randn(1, 60)
    target = torch.randint(0, 10, (1,))
    model_clf.train()      
    outputs = model_clf(data)
    loss_clf = loss_function_clf(outputs, target)
    optimizer_clf.zero_grad()
    loss_clf.backward()
    optimizer_clf.step()

I would generally not recommend to use retain_graph=True unless you have a valid reason to do so.