For the record, I ended up installing pytorch 0.4, which was actually a delight to compile.
Here’s the code:
import torch
import torch.nn as nn
from torch.distributions import constraints
from torch.distributions.transforms import Transform


class SoftplusTransform(Transform):
    r"""
    Transform via the mapping :math:`y = \log(1 + \exp(x))`
    """
    domain = constraints.real
    codomain = constraints.positive
    bijective = True
    sign = +1

    def __init__(self):
        super().__init__()
        self.softplus = nn.Softplus()
        self.threshold = 20
        self.log_sigmoid = nn.LogSigmoid()
        
    def _call(self, x):
        return self.softplus(x)
        
    def _inverse(self, y):
        return torch.where(y>self.threshold, y, y.expm1().log())

    def log_abs_det_jacobian(self, x, y):
        return self.log_sigmoid(x)

import pyro.distributions as dist
import seaborn as sns
sns.distplot(
    dist.TransformedDistribution(dist.Normal(0,1), SoftplusTransform()).sample(sample_shape=(100000,)).data.numpy(),
    kde=False)