# Xception

**Xception: Deep Learning with Depthwise Separable Convolutions **(CVPR 2017)

We present an interpretation of Inception modules in convolutional neural networks as being an intermediate step in-between regular convolution and the depthwise separable convolution operation (a depthwise convolution followed by a pointwise convolution). In this light, a depthwise separable convolution can be understood as an Inception module with a maximally large number of towers. This observation leads us to propose a novel deep convolutional neural network architecture inspired by Inception, where Inception modules have been replaced with depthwise separable convolutions. We show that this architecture, dubbed Xception, slightly outperforms Inception V3 on the ImageNet dataset (which Inception V3 was designed for), and significantly outperforms Inception V3 on a larger image classification dataset comprising 350 million images and 17,000 classes. Since the Xception architecture has the same number of parameters as Inception V3, the performance gains are not due to increased capacity but rather to a more efficient use of model parameters.

### Implementations

```
from keras.applications.xception import Xception
Xception(include_top=True, weights='imagenet', input_tensor=None, input_shape=None, pooling=None, classes=1000)
```

Xception V1 model, with weights pre-trained on ImageNet.

On ImageNet, this model gets to a top-1 validation accuracy of 0.790 and a top-5 validation accuracy of 0.945.

Note that this model only supports the data format `'channels_last'`

(height, width, channels).

The default input size for this model is 299x299.

### Arguments

- include_top: whether to include the fully-connected layer at the top of the network.
- weights: one of
`None`

(random initialization) or`'imagenet'`

(pre-training on ImageNet). - input_tensor: optional Keras tensor (i.e. output of
`layers.Input()`

) to use as image input for the model. - input_shape: optional shape tuple, only to be specified if
`include_top`

is`False`

(otherwise the input shape has to be`(299, 299, 3)`

. It should have exactly 3 inputs channels, and width and height should be no smaller than 71. E.g.`(150, 150, 3)`

would be one valid value. - pooling: Optional pooling mode for feature extraction when
`include_top`

is`False`

.`None`

means that the output of the model will be the 4D tensor output of the last convolutional layer.`'avg'`

means that global average pooling will be applied to the output of the last convolutional layer, and thus the output of the model will be a 2D tensor.`'max'`

means that global max pooling will be applied.

- classes: optional number of classes to classify images into, only to be specified if
`include_top`

is`True`

, and if no`weights`

argument is specified.

### Returns

A Keras `Model`

instance.

(@ keras.io) https://keras.io/applications/#xception