vgg.py 1.7 KB
Newer Older
L
liaogang 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

M
minqiyang 已提交
15 16
from __future__ import print_function

W
Wang,Jeff 已提交
17
import paddle.fluid as fluid
L
liaogang 已提交
18 19 20


def vgg_bn_drop(input):
W
Wang,Jeff 已提交
21 22
    def conv_block(ipt, num_filter, groups, dropouts):
        return fluid.nets.img_conv_group(
L
liaogang 已提交
23 24 25 26 27
            input=ipt,
            pool_size=2,
            pool_stride=2,
            conv_num_filter=[num_filter] * groups,
            conv_filter_size=3,
W
Wang,Jeff 已提交
28
            conv_act='relu',
L
liaogang 已提交
29 30
            conv_with_batchnorm=True,
            conv_batchnorm_drop_rate=dropouts,
W
Wang,Jeff 已提交
31
            pool_type='max')
L
liaogang 已提交
32

W
Wang,Jeff 已提交
33
    conv1 = conv_block(input, 64, 2, [0.3, 0])
L
liaogang 已提交
34 35 36 37 38
    conv2 = conv_block(conv1, 128, 2, [0.4, 0])
    conv3 = conv_block(conv2, 256, 3, [0.4, 0.4, 0])
    conv4 = conv_block(conv3, 512, 3, [0.4, 0.4, 0])
    conv5 = conv_block(conv4, 512, 3, [0.4, 0.4, 0])

W
Wang,Jeff 已提交
39 40 41 42 43 44
    drop = fluid.layers.dropout(x=conv5, dropout_prob=0.5)
    fc1 = fluid.layers.fc(input=drop, size=512, act=None)
    bn = fluid.layers.batch_norm(input=fc1, act='relu')
    drop2 = fluid.layers.dropout(x=bn, dropout_prob=0.5)
    fc2 = fluid.layers.fc(input=drop2, size=512, act=None)
    predict = fluid.layers.fc(input=fc2, size=10, act='softmax')
M
minqiyang 已提交
45
    return predict