function concatenate$1(config) {
	  if (Array.isArray(config)) {
	    var layer = new Concatenate({});
	    return layer.apply(config);
	  } else {
	    return new Concatenate(config);
	  }
	}
Concatenate an `Array` of inputs.

This function can be invoked in three ways.

1. Construct an instance of `Concatenate` layer, by using no input argument
   or a single configuration argument. The resultant `Concatenate` layer can
   then be used on `tf.SymbolicTensor`s or `tf.Tensor`s. For example:

```js
const concatLayer = tf.layers.concatenate();

// The layer can be applied to inputs.
const input1 = tf.input({shape: [2, 3]});
const input2 = tf.input({shape: [2, 4]});
const output = concatLayer.apply([input1, input2]);
console.log(output.shape);
// You get [null, 2, 7], with the first dimension as the undetermined batch
// dimension and the last dimension as the result of concatenating the
// last dimensions of the two inputs.
```

2. Invoke directly on an `Array` of `tf.SymbolicTensor`s. This constructs
   an `Layer` object internally and calls its `apply` method on the inputs,
   generating a new `tf.SymbolicTensor`. For example:

```js
const input1 = tf.input({shape: [2, 3]});
const input2 = tf.input({shape: [2, 4]});
const output = tf.layers.concatenate([input1, input2]);
console.log(output.shape);
// You get [null, 2, 2], with the first dimension as the undetermined batch
// dimension and the last dimension as the result of concatenating the
// last dimensions of the two inputs.
```

3. Invoke directly on `tf.Tensor`s, i.e., concrete values. This constructs
   an `Layer` object internally and calls its `apply` method on the inputs,
   generating a new `tf.Tensor` as the result of the computation. For
example:

```js
const input1 = tf.tensor2d([[1, 2], [3, 4]], [2, 2]);
const input2 = tf.tensor2d([[10, 20], [30, 40]], [2, 2]);
tf.layers.concatenate([input1, input2]).print();
// Gives [[1, 2, 10, 20], [3, 4, 30, 40]].