function NativeLayer3d( config ) {

	// NativeLayer3d inherits from abstract layer "NativeLayer"

	NativeLayer.call( this, config );

	/**
	 * NativeLayer3d has three output dimensions: [ width, height, depth ]
	 *
	 * @type { int }
	 */

	this.width = undefined;
	this.height = undefined;
	this.depth = undefined;

	/**
     * Handler list of feature map.
	 *
	 * @type { Array }
	 */

	this.segregationHandlers = [];

	/**
     * Feature map centers while this.isOpen === true.
	 *
	 * @type { Array }
	 */

	this.openFmCenters = [];

	/**
     * Feature map centers while this.isOpen === false.
	 *
	 * @type { Array }
	 */

	this.closeFmCenters = [];

	/**
	 * Feature map shapes while expanded
	 * "line" or "rect", default to "rect".
	 * Check "ModelConfiguration.js" for more details.
	 *
	 * @type { string }
	 */

	this.layerShape = undefined;

	/**
	 * Aggregation mode.
	 * "max" or "average", default to "average".
     * Check "ModelConfiguration.js" for more details.
	 *
	 * @type { string }
	 */

	this.aggregationStrategy = undefined;

	/**
	 * Label to define whether layer need an "output value" from ML model (tfjs, keras, or tf).
	 * False means that user need to add value for NativeLayer3d when they are preprocessing multi-output for the model.
     *
     * Config on whether to calculate the output shape automatically or not.
     * "false" means user has to provide outputShape while preprocessing ML model.
	 *
	 * @type { boolean }
	 */

	this.autoOutputDetect = false;

	this.layerDimension = 3;

}
Feature map centers while this.isOpen === true.

@type { Array }