@wanchaol, thanks for the link. I downloaded  1.0.1 and I can confirm that the ::Load function does not crash. However, using either the nightly 20190222 or the stable 1.0.1, using the model for inference results in a crash:
Model Loaded
0x12321b0
terminate called after throwing an instance of 'torch::jit::JITException'
  what():
Exception:
operation failed in interpreter:
op_version_set = 0
def forward(self,
    x: Tensor) -> Tensor:
  _0 = torch.ne(torch.dim(x), 2)
  if _0:
    _1 = torch.ne(torch.dim(x), 3)
  else:
    _1 = _0
  if _1:
    ops.prim.RaiseException("Exception")
    ~~~~~~~~~~~~~~~~~~~~~~~ <--- HERE
  else:
    pass
  _2 = bool(self.normalise.training)
  if _2:
    _3 = True
  else:
    _3 = _2
  if _3:
    _4 = torch.add_(self.normalise.num_batches_tracked, 1, 1)
Aborted (core dumped)

The loading and inference code is:
#include <torch/script.h> // One-stop header.
#include <ATen/ATen.h>

#include <iostream>
#include <memory>

int main(int argc, const char* argv[]) {
  if (argc != 2) {
    std::cerr << "usage: example-app <path-to-exported-script-module>\n";
    return -1;
  }

  auto module = torch::jit::load(argv[1]);

  assert(module != nullptr);
  std::cout << "Model Loaded\n";

  std::vector<torch::jit::IValue> inputs;
  inputs.push_back(torch::rand({14,}));

  std::cout << module << std::endl;

  auto output = module->forward(inputs);
}

I ran it on two different, totally independent setups, with the same results.
Here is the training file, for testing:
https://drive.google.com/file/d/1jEgTXMRFkUa1pynOK_rP0Lir39nzhtt8/view?usp=sharing 2