tensorflow cnn turorial -...

Post on 14-Sep-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Tensorflow CNNturorial2017/03/10

Lenet-5

[LeCun etal.,1998]

Today’sexample

Imagesource

The slides are from1. “Lecture 13: Neural networks for machine vision, Dr. Richard E. Turner”2. Lecture 7 & 12 in Stanford CS231n

32

3

Convolution Layer

32x32x3 image

width

height

32

depth

32

32

3

Convolution Layer

5x5x3 filter

32x32x3 image

Convolve the filter with the imagei.e. “slide over the image spatially, computing dot products”

32

32

3

Convolution Layer

5x5x3 filter

32x32x3 image

Convolve the filter with the imagei.e. “slide over the image spatially, computing dot products”

Filters always extend the full depth of the input volume

32

32

3

Convolution Layer

32x32x3 image 5x5x3 filter

1 number:the result of taking a dot product between the filter and a small 5x5x3 chunk of the image(i.e. 5*5*3 = 75-dimensional dot product + bias)

7

7x7 input (spatially) assume 3x3 filter

7

7

7x7 input (spatially) assume 3x3 filter

7

7

7x7 input (spatially) assume 3x3 filter

7

7

7x7 input (spatially) assume 3x3 filter

7

=> 5x5 output

7

7x7 input (spatially) assume 3x3 filter

7

32

32

3

Convolution Layeractivation map

32x32x3 image5x5x3 filter

1

28

28

convolve (slide) over all spatial locations

32

32

3

Convolution Layer

32x32x3 image 5x5x3 filter

activation maps

1

28

28

convolve (slide) over all spatial locations

consider a second, green filter

32

3 6

28

activation maps

32

28

Convolution Layer

For example, if we had 6 5x5 filters, we’ll get 6 separate activation maps:

We stack these up to get a “new image” of size 28x28x6!

Preview: ConvNet is a sequence of Convolution Layers, interspersed with activation functions

32

32

3

28

28

6

CONV, ReLUe.g. 65x5x3filters

Preview: ConvNet is a sequence of Convolutional Layers, interspersed with activation functions

32

32

3

CONV, ReLUe.g. 65x5x3filters 28

28

6

CONV, ReLUe.g. 10 5x5x6 filters

CONV, ReLU

….

10

24

24

32x32 input convolved repeatedly with 5x5 filters shrinks volumes spatially! (32 -> 28 -> 24 ...). Shrinking too fast is not good, doesn’t work well.

32

32

3

CONV, ReLUe.g. 65x5x3filters 28

28

6

CONV, ReLUe.g. 10 5x5x6 filters

CONV, ReLU

….

10

24

24

7

7x7 input (spatially) assume 3x3 filter

7

A closer look at spatial dimensions:

7

7x7 input (spatially) assume 3x3 filter

7

A closer look at spatial dimensions:

7

7x7 input (spatially) assume 3x3 filter

7

A closer look at spatial dimensions:

7

7x7 input (spatially) assume 3x3 filter

7

A closer look at spatial dimensions:

=> 5x5 output

7

7x7 input (spatially) assume 3x3 filter

7

A closer look at spatial dimensions:

7x7 input (spatially) assume 3x3 filter applied with stride 2

7

7

A closer look at spatial dimensions:

7x7 input (spatially) assume 3x3 filter applied with stride 2

7

7

A closer look at spatial dimensions:

7x7 input (spatially) assume 3x3 filter applied with stride 2=> 3x3 output!

7

7

A closer look at spatial dimensions:

7x7 input (spatially) assume 3x3 filter applied with stride 3?

7

7

A closer look at spatial dimensions:

7x7 input (spatially) assume 3x3 filter applied with stride 3?

7

7

A closer look at spatial dimensions:

doesn’t fit!cannot apply 3x3 filter on 7x7 input with stride 3.

In practice: Common to zero pad the border

e.g. input 7x73x3 filter, applied with stride 1pad with 1 pixel border => what is the output?

7x7 output!

0 0 0 0 0 0

0

0

0

0

In practice: Common to zero pad the border

e.g. input 7x73x3 filter, applied with stride 1pad with 1 pixel border => what is the output?

7x7 output!in general, common to see CONV layers with stride 1, filters of size FxF, and zero-padding with (F-1)/2. (will preserve size spatially)e.g. F = 3 => zero pad with 1

F = 5 => zero pad with 2F = 7 => zero pad with 3

0 0 0 0 0 0

0

0

0

0

Pooling layer- makes the representations smaller and more manageable- operates over each activation map independently:

1 1 2 4

5 6 7 8

3 2 1 0

1 2 3 4

Single depth slice

x

y

max pool with 2x2 filters and stride 2 6 8

3 4

MAX POOLING

Tensorflow implementation

• WeightInitialization

• ConvolutionandPooling• Convolutionlayer• Fullyconnectedlayer• ReadoutLayer

• Referenceandimagesource:https://www.tensorflow.org/get_started/mnist/pros

(Seesection‘BuildaMultilayerConvolutionalNetwork’)

Input(placeholder)

tf.placeholder

xisplaceholderforinputimage.yislabel withone-hotrepresentation,soseconddimensionofyisequaltonumberofclasses.

None indicatesthatthefirstdimension,correspondingtothebatchsize,whichcanbeanysize.

WeightInitialization

tf.truncated_normal

Thesevariablewillbeinitializedwhenuserrun‘tf.global_variables_initializer’.Nowtheyarejustnodesinagraphwithoutanyvalue.

ConvolutionandPooling

Stridesis4-d,followingNHWCformat.(Num_samples xHeightxWidthxChannels)

Recallstridesandpadding.padding=‘SAME’meansapplypaddingtokeepoutputsizeassameasinputsize.

Conv2dpadswithzeros andmax_pool padswith–inf.tf.nn.conv2d

tf.nn.max_pool

Convolutionlayer

tf.reshape

Convolutionlayer

Seehowthecodecreatesamodelbywrappinglayers.Becareofshape ofeachlayer.-1meansmatchthesizeofthatdimensioniscomputedsothatthetotalsizeremainsconstant.

tf.reshape

Reshape

tf.reshape

Forexample:

tensor‘t’is[[1,2],[3,4],[5,6],[7,8]],sothasshape[4,2]

(1) reshape(t,[2,4])è [[1,2,3,4],[5,6,7,8]]

(2) reshape(t,[-1,4])è [[1,2,3,4],[5,6,7,8]]

-1wouldbecomputedandbecomes‘2’

Fullyconnectedlayer

Flattenallthe mapsandconnectthemwithfullyconnectedlayer.Again,becareofshape.

ReadoutLayer

Usealayertomatchoutputsize.Done!

TrainingandEvaluation(optional)

Recommendation

• Searchforeachfunction,andyou’llwhat’severythinggoingon.

top related