@ -1,13 +1,12 @@
import numpy as np
import paddle . v2 as paddle
import paddle . v2 . framework . core as core
import paddle . v2 . framework . layers as layers
import paddle . v2 . framework . nets as nets
import paddle . v2 . framework . core as core
import paddle . v2 . framework . optimizer as optimizer
from paddle . v2 . framework . framework import Program , g_program
from paddle . v2 . framework . executor import Executor
import numpy as np
from paddle . v2 . framework . framework import g_init_program , g_program
from paddle . v2 . framework . initializer import XavierInitializer
def resnet_cifar10 ( input , depth = 32 , program = None , init_program = None ) :
@ -124,7 +123,7 @@ def resnet_cifar10(input, depth=32, program=None, init_program=None):
return pool
def vgg16_bn_drop ( input , program , init_program ) :
def vgg16_bn_drop ( input , program = None , init_program = None ) :
def conv_block ( input ,
num_filter ,
groups ,
@ -155,6 +154,7 @@ def vgg16_bn_drop(input, program, init_program):
fc1 = layers . fc ( input = drop ,
size = 512 ,
act = None ,
param_attr = { " initializer " : XavierInitializer ( ) } ,
program = program ,
init_program = init_program )
reshape1 = layers . reshape (
@ -169,46 +169,34 @@ def vgg16_bn_drop(input, program, init_program):
fc2 = layers . fc ( input = drop2 ,
size = 512 ,
act = None ,
param_attr = { " initializer " : XavierInitializer ( ) } ,
program = program ,
init_program = init_program )
return fc2
init_program = Program ( )
program = Program ( )
classdim = 10
data_shape = [ 3 , 32 , 32 ]
images = layers . data (
name = ' pixel ' , shape = data_shape , data_type = ' float32 ' , program = program )
label = layers . data (
name = ' label ' ,
shape = [ 1 ] ,
data_type = ' int64 ' ,
program = program ,
init_program = init_program )
images = layers . data ( name = ' pixel ' , shape = data_shape , data_type = ' float32 ' )
label = layers . data ( name = ' label ' , shape = [ 1 ] , data_type = ' int64 ' )
# Add neural network config
# option 1. resnet
net = resnet_cifar10 ( images , 32 , program , init_program )
# net = resnet_cifar10(images, 32)
# option 2. vgg
# net = vgg16_bn_drop(images, program, init_program )
net = vgg16_bn_drop ( images )
# print(program)
predict = layers . fc ( input = net ,
size = classdim ,
act = ' softmax ' ,
program = program ,
init_program = init_program )
cost = layers . cross_entropy (
input = predict , label = label , program = program , init_program = init_program )
avg_cost = layers . mean ( x = cost , program = program , init_program = init_program )
predict = layers . fc ( input = net , size = classdim , act = ' softmax ' )
cost = layers . cross_entropy ( input = predict , label = label )
avg_cost = layers . mean ( x = cost )
accuracy = layers . accuracy ( input = predict , label = label )
sgd_optimizer = optimizer . SGDOptimizer ( learning_rate = 0.001 )
opts = sgd_optimizer . minimize ( avg_cost , init_program )
# optimizer = optimizer.SGDOptimizer(learning_rate=0.001)
optimizer = optimizer . AdamOptimizer ( learning_rate = 0.001 )
opts = optimizer . minimize ( avg_cost )
BATCH_SIZE = 128
PASS_NUM = 1
@ -221,7 +209,7 @@ train_reader = paddle.batch(
place = core . CPUPlace ( )
exe = Executor ( place )
exe . run ( init_program, feed = { } , fetch_list = [ ] )
exe . run ( g_ init_program, feed = { } , fetch_list = [ ] )
for pass_id in range ( PASS_NUM ) :
batch_id = 0
@ -239,14 +227,15 @@ for pass_id in range(PASS_NUM):
tensor_img . set ( img_data , place )
tensor_y . set ( y_data , place )
outs = exe . run ( program,
outs = exe . run ( g_ program,
feed = { " pixel " : tensor_img ,
" label " : tensor_y } ,
fetch_list = [ avg_cost ])
fetch_list = [ avg_cost , accuracy ])
loss = np . array ( outs [ 0 ] )
acc = np . array ( outs [ 1 ] )
print ( " pass_id: " + str ( pass_id ) + " batch_id: " + str ( batch_id ) +
" loss: " + str ( loss ) )
" loss: " + str ( loss ) + " acc: " + str ( acc ) )
batch_id = batch_id + 1
if batch_id > 1 :