code: def generate_normalized_grid_3d(B, size, align_corners):
      D, H, W = size
      dgrid = np.linspace(-1.0, 1.0, D)
      hgrid = np.linspace(-1.0, 1.0, H)
      wgrid = np.linspace(-1.0, 1.0, W)
      dgrid = dgrid if align_corners else dgrid * (D - 1) / D
      hgrid = hgrid if align_corners else hgrid * (H - 1) / H
      wgrid = wgrid if align_corners else wgrid * (W - 1) / W
      h, d, w = np.meshgrid(hgrid, dgrid, wgrid)
  
      x = w.reshape(-1)
      y = h.reshape(-1)
      z = d.reshape(-1)
      t = np.ones(len(x))
      normalized_grid = np.stack((x, y, z, t), axis=1)
      normalized_grid = normalized_grid.reshape(D, H, W, 4)
      normalized_grid = np.repeat(
          normalized_grid[np.newaxis, :, :, :, :], B, axis=0
      )
      return normalized_grid.astype(np.float32)
  
imports: from __future__ import division
  from six.moves import range
  import itertools
  import numpy
label_desc: Use image node_id 17 for calling a global function with example usage: generate_normalized_grid_3d(B, size, align_corners) and returns: normalized_grid