Current model is a trained VGG19 model in Keras on 10 categories.

I want to see where different image categories lie in a 2d plane (to see whether images of the same class are being clustered and how far away different image categories are from each other).

I am currently thinking of running X number of images of each category through the CNN and somehow using the final convolutional layer weights (64x64 matrix) as my plot points (not sure how to make an entire matrix a single point nor if this makes sense)

Does something like what im trying to do already exist and if not, any idea on how to go about implementing this?


  • $\begingroup$ Have you considered multi-dimensional scaling or tSNE? $\endgroup$ – G5W Jun 24 '17 at 0:55
  • $\begingroup$ yes i considered using scikit's tSNE but not sure where to apply it. do i apply it on the 64x64 convolutional layer weights? or is there a better place? do i even have to apply it to my model in some way or are just images needed? for the first case, it would give me a 64xn matrix and not sure how that would help me $\endgroup$ – lostone Jun 24 '17 at 1:09
  • $\begingroup$ You would treat each image as a point in 64x64 dimensional space. Use tSNE to map it into a two dimensional space. $\endgroup$ – G5W Jun 24 '17 at 1:22
  • $\begingroup$ it would actually be 64x64x512. if i flatten it i can thus make each image 1x2097152 and then use tSNE to make it 1x2 and this can plot in 2-d space. i would be mapping from a extremely high dimensional space to just 2-d. Would this still be fine? $\endgroup$ – lostone Jun 24 '17 at 1:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.