Visualizing and Understanding Deep Neural Networks by Matt Zeiler

AI Council · 289K views · 2015 · 47:48

Open on YouTube

Machine learning & deep learningComputer vision, speech & NLPtalk

Why Data Science Stack Exchange recommends it

Data Science Stack Exchange users link it when explaining how to visualize and interpret what CNN layers and filters are detecting, especially deconvolution-style visualizations.

Recommended by 1 people across 1 different months, 2016 to 2020.

What it is

A 2015 conference talk by Matthew Zeiler, founder and CEO of Clarifai, on how to visualize what the intermediate layers of large convolutional neural networks have learned. He presents a deconvolution-based technique used to diagnose models and guide better architecture choices.

What people said

Recommends Robin · 2018-09 · Data Science Stack Exchange · on “Is there a way to visualise what/how my image classifier has identified an image?”

Actually you don't need to retrain the model, you could use deconvolution networks (see this video [this video] of Matthew Zeiler explaining this paper [LINK] : Visualizing and Understanding Deep Neural Networks) or get inspiration with this paper [LINK] : Methods for Interpreting and Understanding Deep Neural Networks.

Cites Martin Thoma · 2016-01 · Data Science Stack Exchange · on “What is the difference between concept learning and classification?”

So with techniques like the ones used in deep dream / the ones presented by Matt Zeiler in Visualizing and Understanding Deep Neural Networks [this video] one can say that the CNN is learning the concept of "cats" and can of course be used to classify images as "cats"?

Cites n1k31t4 · 2018-08 · Data Science Stack Exchange · on “how to visualize InceptionV3 hidden layers”

Examples Here are two adapted functions from the first of the links below that should get some weights out for a given input sample for you and plot the activations for some filters of that layer: def getActivations(layer,sample): units = sess.run(layer,feed_dict={x:np.reshape(sample, [1,784], order='F'), keep_prob:1.0}) plotNNFilter(units) def plotNNFilter(units): filters = units.shape[3] plt.figure(1, figsize=(20,20)) n_columns = 6 n_rows = math.ceil(filters / n_columns) + 1 for i in range(filters): plt.subplot(n_rows, n_columns, i+1) plt.title('Filter ' + str(i)) plt.imshow(units[0,:,:,i], interpolation="nearest", cmap="gray") This is the result, showing the second layer of activations fr

Cites Mikhail M · 2020-02 · Data Science Stack Exchange · on “What can we understand from max-activation generated images?”

There are several approaches to generate psychedelic images, providing maximum activations for individual neirons in convolutional neural networks. For example there is a lot of them there [LINK] or a bit in [LINK] (M. Zeiler) or in [this video] But what can we get from them? E.g. here [LINK] does presence of 6 fish’es pieces means there are mainly 6 different positions of fishes which the net saw on 1000 train images? Or this is rather caused by some corner effects or patter size? Like 224 source pixels/100 = 2.2 fishes horizontally. I also don't understand well how they are obtained, so can't conjecture what aspects they can depict. There is approach when we find parts of train/validation image