Answers.Body: <blockquote>
    <p>In the blog post <a href="https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html" rel="nofollow noreferrer">Building powerful image classification models using very little data</a>, bottleneck features are mentioned. What are the bottleneck features?</p>
  </blockquote>
  
  <p>It's clearly written in the link you gave <em>the "bottleneck features" from the VGG16 model: the last activation maps before the fully-connected layers</em>.</p>
  
  <blockquote>
    <p>Do they change with the architecture that is used?</p>
  </blockquote>
  
  <p>Sure. The author most likely used a pre-trained model (trained on a large data and now used only as a feature extractor)  </p>
  
  <blockquote>
    <p>Are they the final output of convolutional layers before the fully-connected layer?</p>
  </blockquote>
  
  <p>Yes.  </p>
  
  <blockquote>
    <p>Why are they called so?</p>
  </blockquote>
  
  <p>Given the input size to VGG, the feature maps of HxW dimensions are getting twice smaller after every max-pool operation. HxW is the smallest on the last convolutional layer.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2017-04-14T14:47:15.887Z
Answers.LastActivityDate: 2019-06-23T22:10:34.077Z
Answers.LastEditDate: 2019-06-23T22:10:34.077Z
Answers.UserDisplayName: FunkyKowal
Answers.Body: <p>First, we need to talk about transfer learning. Imagine you trained a neuronal network over a dataset of images to detect cats, you can use part of the training you have done to work over another detecting something else. That's known as transfer learning.</p>
  
  <p>To do transfer learning, you will remove the last fully connected layer from the model and plug in your layers there. The "truncated" model output is going to be the features that will fill your "model". Those are the bottleneck features.</p>
  
  <p>VGG16 is a pretrain-model over ImageNet catalog that has very good accuracy. In the post you shared, is using that model as a base to detect cat and dogs with a higher accuracy.</p>
  
  <p>Bottleneck features depends on the model. In this case, we are using VGG16. There are others pre-trained models like VGG19, ResNet-50</p>
  
  <p>It's like you are cutting a model and adding your own layers. Mainly, the output layer to decide what you want to detect, the final output.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-10-31T17:25:50.370Z
Answers.LastActivityDate: 2017-10-31T17:25:50.370Z
Answers.UserDisplayName: letyrodri
Body: <p>In the blog post <a href="https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html" rel="nofollow noreferrer">Building powerful image classification models using very little data</a>, bottleneck features are mentioned. What are the bottleneck features? Do they change with the architecture that is used? Are they the final output of convolutional layers before the fully-connected layer? Why are they called so?</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-08-22T05:44:43.243Z
Comments.Text: [What are "bottlenecks" in neural networks?](https://ai.stackexchange.com/q/4864/2444)
Comments.UserDisplayName: Anurag Singh
Tags: <machine-learning><convolutional-neural-networks><terminology><definitions><bottlenecks>
Title: What are bottleneck features?
UserDisplayName: Abhishek Bhatia
ThreadText: # What are bottleneck features?
  
  (Asked by: username_0 on 2017-04-03)
  
  In the blog post [Building powerful image classification models using very little data](https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html), bottleneck features are mentioned. What are the bottleneck features? Do they change with the architecture that is used? Are they the final output of convolutional layers before the fully-connected layer? Why are they called so?
  
  **Tags:** machine-learning, convolutional-neural-networks, terminology, definitions, bottlenecks
  > **Comments:**
  > **username_1**: [What are "bottlenecks" in neural networks?](https://ai.stackexchange.com/q/4864/2444)  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_2 on 2017-04-14. Score: 10
  
  > In the blog post [Building powerful image classification models using very little data](https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html), bottleneck features are mentioned. What are the bottleneck features?
  
  It's clearly written in the link you gave *the "bottleneck features" from the VGG16 model: the last activation maps before the fully-connected layers*.
  
  > Do they change with the architecture that is used?
  
  Sure. The author most likely used a pre-trained model (trained on a large data and now used only as a feature extractor)
  
  > Are they the final output of convolutional layers before the fully-connected layer?
  
  Yes.
  
  > Why are they called so?
  
  Given the input size to VGG, the feature maps of HxW dimensions are getting twice smaller after every max-pool operation. HxW is the smallest on the last convolutional layer.
  
  
  ---
  
  ### Answer by username_3 on 2017-10-31. Score: 7
  
  First, we need to talk about transfer learning. Imagine you trained a neuronal network over a dataset of images to detect cats, you can use part of the training you have done to work over another detecting something else. That's known as transfer learning.
  
  To do transfer learning, you will remove the last fully connected layer from the model and plug in your layers there. The "truncated" model output is going to be the features that will fill your "model". Those are the bottleneck features.
  
  VGG16 is a pretrain-model over ImageNet catalog that has very good accuracy. In the post you shared, is using that model as a base to detect cat and dogs with a higher accuracy.
  
  Bottleneck features depends on the model. In this case, we are using VGG16. There are others pre-trained models like VGG19, ResNet-50
  
  It's like you are cutting a model and adding your own layers. Mainly, the output layer to decide what you want to detect, the final output.
  
  
  ---
  
  