Here’s how you would rewrite A(x).
class A(nn.Module):
    def __init__(self):
        super(A, self).__init__()
        self.fc1 = nn.Linear(100, 100)
        self.fc2 = nn.Linear(100, 10)

    def forward(self, x):
        fc1 = self.fc1(x)
        a = F.relu(fc1)

        fc2 = self.fc2(a)
        b = F.relu(fc2)
        return fc1, fc2, a, b

This would give you both the hidden outputs of FC1 and FC2, and also the RELU-applied outputs as well.
If you would like to re-use the weights for one of the FC’s in some other script as you have mentioned,
# Load model.
model = A()
model.load_state_dict(...)

# Re-use trained FC1 layer weights.
fc1_outputs = model.fc1(Variable(...))
fc1_outputs = F.softmax(fc1_outputs)

and so on.