1 | layer { |
2 | bottom: "data" |
3 | top: "conv1" |
4 | name: "conv1" |
5 | type: "Convolution" |
6 | convolution_param { |
7 | num_output: 64 |
8 | kernel_size: 7 |
9 | pad: 3 |
10 | stride: 2 |
11 | } |
12 | } |
13 | |
14 | layer { |
15 | bottom: "conv1" |
16 | top: "conv1" |
17 | name: "bn_conv1" |
18 | type: "BatchNorm" |
19 | batch_norm_param { |
20 | use_global_stats: true |
21 | } |
22 | } |
23 | |
24 | layer { |
25 | bottom: "conv1" |
26 | top: "conv1" |
27 | name: "scale_conv1" |
28 | type: "Scale" |
29 | scale_param { |
30 | bias_term: true |
31 | } |
32 | } |
33 | |
34 | layer { |
35 | bottom: "conv1" |
36 | top: "conv1" |
37 | name: "conv1_relu" |
38 | type: "ReLU" |
39 | } |
40 | |
41 | layer { |
42 | bottom: "conv1" |
43 | top: "pool1" |
44 | name: "pool1" |
45 | type: "Pooling" |
46 | pooling_param { |
47 | kernel_size: 3 |
48 | stride: 2 |
49 | pool: MAX |
50 | } |
51 | } |
layer {
name: "does_not_matter_anyway"
bottom: "A"
top: "B"
...
}
layer {
bottom: "conv1"
top: "pool1"
name: "pool1"
type: "Pooling"
pooling_param {
kernel_size: 3
stride: 2
pool: MAX
}
}
The `pool1` layers are bellow `conv1`, it means its input is `conv1` output. Is it right?
why they do not write as (...)
bottom: "conv1_relu"
layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
...
}
layer {
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
...
}
layer {
name: "conv2"
type: "Convolution"
bottom: "pool1"
top: "conv2"
...
}
layer {
name: "my_convolution_layer"
type: "Convolution"
bottom: "data"
top: "conv1"
...
}
layer {
name: "pooling_is_awesome"
type: "Pooling"
bottom: "conv1"
top: "pool1"
...
}
layer {
name: "another_conv_yeah"
type: "Convolution"
bottom: "pool1"
top: "conv2"
...
}
layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
...
}
layer {
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
...
}
layer {
name: "conv2"
type: "Convolution"
bottom: "conv1"
top: "conv2"
...
}
layer {
bottom: "data"
top: "conv1"
name: "conv1"
type: "Convolution"
...
}
layer {
bottom: "conv1"
top: "conv1"
name: "bn_conv1"
...
}
layer {
bottom: "conv1"
top: "conv1"
name: "scale_conv1"
...
}
layer {
bottom: "conv1"
top: "conv1"
name: "conv1_relu"
type: "ReLU"
}
layer {
bottom: "conv1"
top: "pool1"
name: "pool1"
type: "Pooling"
...
}
Yes, I was wrong when calling a layer as a blob. It must be a blob. A blob has input (defines by bottom tag) and output (defined by top tag).