function conv3d_(x, filter, strides, pad, dataFormat, dilations) {
	  if (dataFormat === void 0) {
	    dataFormat = 'NDHWC';
	  }

	  if (dilations === void 0) {
	    dilations = [1, 1, 1];
	  }

	  var $x = convertToTensor(x, 'x', 'conv3d');
	  var $filter = convertToTensor(filter, 'filter', 'conv3d');
	  var x5D = $x;
	  var reshapedTo5D = false;

	  if ($x.rank === 4) {
	    reshapedTo5D = true;
	    x5D = reshape($x, [1, $x.shape[0], $x.shape[1], $x.shape[2], $x.shape[3]]);
	  }

	  assert(x5D.rank === 5, function () {
	    return "Error in conv3d: input must be rank 5, but got rank " + x5D.rank + ".";
	  });
	  assert($filter.rank === 5, function () {
	    return "Error in conv3d: filter must be rank 5, but got rank " + ($filter.rank + ".");
	  });
	  assert(x5D.shape[4] === $filter.shape[3], function () {
	    return "Error in conv3d: depth of input (" + x5D.shape[4] + ") must match " + ("input depth for filter " + $filter.shape[3] + ".");
	  });
	  assert(eitherStridesOrDilationsAreOne(strides, dilations), function () {
	    return 'Error in conv3D: Either strides or dilations must be 1. ' + ("Got strides " + strides + " and dilations '" + dilations + "'");
	  });
	  assert(dataFormat === 'NDHWC', function () {
	    return "Error in conv3d: got dataFormat of " + dataFormat + " but only NDHWC is currently supported.";
	  });
	  var inputs = {
	    x: x5D,
	    filter: $filter
	  };
	  var attrs = {
	    strides: strides,
	    pad: pad,
	    dataFormat: dataFormat,
	    dilations: dilations
	  }; // tslint:disable-next-line: no-unnecessary-type-assertion

	  var res = ENGINE.runKernel(Conv3D, inputs, attrs);

	  if (reshapedTo5D) {
	    return reshape(res, [res.shape[1], res.shape[2], res.shape[3], res.shape[4]]);
	  }

	  return res;
	}
Computes a 3D convolution over the input x.

@param x The input tensor, of rank 5 or rank 4, of shape
    `[batch, depth, height, width, channels]`. If rank 4,
batch of 1 is assumed.
@param filter The filter, rank 5, of shape
    `[filterDepth, filterHeight, filterWidth, inChannels, outChannels]`.
     inChannels must match between input and filter.
@param strides The strides of the convolution: `[strideDepth, strideHeight,
strideWidth]`.
@param pad The type of padding algorithm.
   - `same` and stride 1: output will be of same size as input,
      regardless of filter size.
   - `valid`: output will be smaller than input if filter is larger
      than 1x1.
  - For more info, see this guide:
    [https://www.tensorflow.org/api_guides/python/nn#Convolution](
         https://www.tensorflow.org/api_guides/python/nn#Convolution)
@param dataFormat: An optional string from: "NDHWC", "NCDHW". Defaults to
    "NDHWC". Specify the data format of the input and output data. With the
    default format "NDHWC", the data is stored in the order of: [batch,
    depth, height, width, channels]. Only "NDHWC" is currently supported.
@param dilations The dilation rates: `[dilationDepth, dilationHeight,
    dilationWidth]` in which we sample input values across the height
    and width dimensions in atrous convolution. Defaults to `[1, 1, 1]`.
    If `dilations` is a single number, then
    `dilationDepth == dilationHeight == dilationWidth`. If it is greater
    than 1, then all values of `strides` must be 1.

@doc {heading: 'Operations', subheading: 'Convolution'}