Implementing
CapsNets
with TensorFlow
Aurélien Géron, November 2017
Aurélien Géron, 2017NIPS 2017 Paper
Aurélien Géron, 2017Jupyter Notebook
Aurélien Géron, 2017Jupyter Notebook
Aurélien Géron, 2017Input Layer
Aurélien Géron, 2017Input Layer
Input Images
Aurélien Géron, 2017Input Layer
Input Images
Aurélien Géron, 2017Input Layer
Input Images
Aurélien Géron, 2017Primary Capsules
Input Images
Primary Capsules
Aurélien Géron, 2017Primary Capsules
Input Images
Primary Capsules
32
Aurélien Géron, 2017Primary Capsules
Input Images
Primary Capsules
Aurélien Géron, 2017Primary Capsules
Input Images
Primary Capsules
Aurélien Géron, 2017Primary Capsules
Input Images
Primary Capsules
Aurélien Géron, 2017Primary Capsules
Input Images
Primary Capsules
Aurélien Géron, 2017Primary Capsules
Input Images
Primary Capsules
Aurélien Géron, 2017Primary Capsules
Input Images
Primary Capsules
Aurélien Géron, 2017Primary Capsules
Input Images
Primary Capsules
Aurélien Géron, 2017Primary Capsules
Input Images
Primary Capsules
Aurélien Géron, 2017Digit Capsules
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Aurélien Géron, 2017Digit Capsules
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Aurélien Géron, 2017Digit Capsules > Predict Outputs
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Aurélien Géron, 2017Digit Capsules > Predict Outputs
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Predict Outputs
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Predict Outputs
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Predict Outputs
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Predict Outputs
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Predict Outputs
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Predict Outputs
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Predict Outputs
Aurélien Géron, 2017Digit Capsules > Predict Outputs
Aurélien Géron, 2017Digit Capsules > Predict Outputs
Aurélien Géron, 2017Digit Capsules > Predict Outputs
10
Aurélien Géron, 2017Digit Capsules > Predict Outputs
=
Aurélien Géron, 2017Digit Capsules > Predict Outputs
=
Batch
size
Aurélien Géron, 2017Digit Capsules > Predict Outputs
Aurélien Géron, 2017Digit Capsules > Predict Outputs
Aurélien Géron, 2017Digit Capsules > Predict Outputs
(?, 1152, 8)
Shape
Aurélien Géron, 2017Digit Capsules > Predict Outputs
(?, 1152, 8)
(?, 1152, 8, 1)
Aurélien Géron, 2017Digit Capsules > Predict Outputs
(?, 1152, 8)
(?, 1152, 8, 1)
(?, 1152, 1, 8, 1)
Aurélien Géron, 2017Digit Capsules > Predict Outputs
(?, 1152, 8)
(?, 1152, 8, 1)
(?, 1152, 1, 8, 1)
(?, 1152, 10, 8, 1)
Aurélien Géron, 2017Digit Capsules > Predict Outputs
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement
Aurélien Géron, 2017Broadcasting
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement > Round 2
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement > Round 2
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement > Round 2
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement > Round 2
=
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement > Round 2
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement > Round 2
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement > Round 2
Aurélien Géron, 2017
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 98 9 0 1
Digit Capsules > Routing by Agreement > Round 2
Aurélien Géron, 2017Digit Capsules > Routing by Agreement
Aurélien Géron, 2017Digit Capsules > Routing by Agreement
Aurélien Géron, 2017Digit Capsules > Routing by Agreement
Aurélien Géron, 2017Digit Capsules
Input Images
Primary Capsules
Digit Capsules
0 1 2 3 4 5 6 7 8 9 0 18 9
Aurélien Géron, 2017Estimated Class Probabilities
Input Images
Primary Capsules
Digit Capsules
Length
0 1 2 3 4 5 6 7 8 9
0 0 0 0 .7 0 0 .1 0 .2
0 1
0 0
8 9
.3 0
Aurélien Géron, 2017Predictions
Input Images
Primary Capsules
Digit Capsules
Length
Predictions
0 1 2 3 4 5 6 7 8 9
0 0 0 0 .7 0 0 .1 0 .2
4
0 1
0 0
8 9
.3 0
3 6
Aurélien Géron, 2017Predictions
Input Images
Primary Capsules
Digit Capsules
Length
Predictions
0 1 2 3 4 5 6 7 8 9
0 0 0 0 .7 0 0 .1 0 .2
4
0 1
0 0
8 9
.3 0
3 6
Aurélien Géron, 2017Predictions
Input Images
Primary Capsules
Digit Capsules
Length
Predictions
7 3 4 6 7
Aurélien Géron, 2017Accuracy
Input Images
Primary Capsules
Digit Capsules
Length
Predictions
Labels
Accuracy
7 3 4 6 1
7 3 4 6 7
80%
Aurélien Géron, 2017Accuracy
Input Images
Primary Capsules
Digit Capsules
Length
Predictions
Labels
Accuracy
7 3 4 6 1
7 3 4 6 7
80%
Aurélien Géron, 2017Accuracy
Input Images
Primary Capsules
Digit Capsules
Length
Predictions
Labels
Accuracy
7 3 4 6 1
7 3 4 6 7
80%
Aurélien Géron, 2017Training
Input Images
Primary Capsules
Digit Capsules
Length
Predictions
Labels
Aurélien Géron, 2017Margin Loss
Input Images
Primary Capsules
Digit Capsules
Length
Predictions
Margin Loss
Labels
Margin Loss
Length
Aurélien Géron, 2017Margin Loss
Input Images
Primary Capsules
Digit Capsules
Length
Predictions
Margin Loss
Labels
Margin Loss
Length
Aurélien Géron, 2017Decoder
Input Images
Primary Capsules
Digit Capsules
Decoder
Margin Loss
Labels
Length
Predictions
Aurélien Géron, 2017Decoder
Aurélien Géron, 2017Decoder
Input Images
Primary Capsules
Digit Capsules
Decoder
Margin Loss
Labels
Length
Predictions
Aurélien Géron, 2017Reconstruction Loss
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Aurélien Géron, 2017Reconstruction Loss
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Aurélien Géron, 2017Reconstruction Loss
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Aurélien Géron, 2017Final Loss
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Aurélien Géron, 2017Final Loss
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Aurélien Géron, 2017Final Loss
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Aurélien Géron, 2017Training Operation
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Training Operation
Aurélien Géron, 2017Training Operation
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Training Operation
Aurélien Géron, 2017Training Operation
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Training Operation
Aurélien Géron, 2017Mask
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Training Operation
Mask
×
Aurélien Géron, 2017Mask
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Training Operation
Mask
×
Aurélien Géron, 2017Mask
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Training Operation
Mask
×
Aurélien Géron, 2017Mask
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Training Operation
Mask
×
Aurélien Géron, 2017Mask
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Length
Predictions
Loss
Training Operation
Mask
×
Mask with Labels
Labels
Aurélien Géron, 2017Mask
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Training Operation
Mask
×
Mask with Labels
Aurélien Géron, 2017Mask
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Training Operation
Mask
×
Mask with Labels
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
A.eval()
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
A.eval()
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
A.eval()
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
A.eval()
Aurélien Géron, 2017Resolving Dependencies
A
D
F
B
E
G
A.eval()
C
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
A.eval()
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
A.eval()
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
sess.run([A, E])
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
sess.run([A, E])
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
sess.run([A, E])
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
sess.run([A, E])
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
sess.run([A, E])
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
sess.run([A, E])
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
G
sess.run([A, E])
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
sess.run([A, E])
G
Aurélien Géron, 2017Resolving Dependencies
A
C D
F
B
E
sess.run([A, E])
G
Aurélien Géron, 2017Resolving Dependencies
mask_with_labels
reconstruction_targets
y y_pred
Aurélien Géron, 2017Resolving Dependencies
mask_with_labels
reconstruction_targets
y y_pred
Aurélien Géron, 2017Resolving Dependencies
mask_with_labels
reconstruction_targets
y y_pred
Aurélien Géron, 2017Resolving Dependencies
mask_with_labels
reconstruction_targets
y y_pred
Aurélien Géron, 2017Resolving Dependencies
mask_with_labels
reconstruction_targets
y y_pred
Aurélien Géron, 2017Resolving Dependencies
mask_with_labels
reconstruction_targets
y y_pred
Aurélien Géron, 2017Resolving Dependencies
mask_with_labels
reconstruction_targets
y y_pred
True
Aurélien Géron, 2017Resolving Dependencies
mask_with_labels
reconstruction_targets
y y_pred
True
Value of y
Aurélien Géron, 2017Resolving Dependencies
mask_with_labels
reconstruction_targets
y y_pred
True
Value of y
Evaluated for nothing
Aurélien Géron, 2017Resolving Dependencies
mask_with_labels
reconstruction_targets
y y_pred
False
Aurélien Géron, 2017Resolving Dependencies
mask_with_labels
reconstruction_targets
y y_pred
Value of y_pred
False
Aurélien Géron, 2017Resolving Dependencies
mask_with_labels
reconstruction_targets
y y_pred
Value of y_pred
Evaluated for nothing
and needs to be fed!
False
Aurélien Géron, 2017Mask
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Training Operation
Mask
×
Mask with Labels
Aurélien Géron, 2017Mask
Input Images
Primary Capsules
Digit Capsules
Decoder
Reconstruction LossMargin Loss
Labels
Length
Predictions
Loss
Training Operation
Mask
×
Mask with Labels
Aurélien Géron, 2017Training
Aurélien Géron, 2017Predictions and Reconstructions
Aurélien Géron, 2017Predictions and Reconstructions
Aurélien Géron, 2017Predictions and Reconstructions
Aurélien Géron, 2017Tweaking Output Vectors
-0.50 -0.40 -0.30 -0.20 -0.10 Original +0.10 +0.20 +0.30 +0.40 +0.50
Amazon: https://goo.gl/IoWYKD
Twitter: @aureliengeron
github.com/ageron
Amazon: https://goo.gl/IoWYKD
Twitter: @aureliengeron
github.com/ageron
...
Amazon: https://goo.gl/IoWYKD
Twitter: @aureliengeron
github.com/ageron
...
CapsNets
using

How To Implement CapsNets using TensorFlow