6
6
7
7
The user api could be simpler and carefully designed.
8
8
"""
9
- import py_paddle .swig_paddle as api
10
- from py_paddle import DataProviderConverter
11
- import paddle .trainer .PyDataProvider2 as dp
12
- import numpy as np
13
9
import random
14
- from mnist_util import read_from_mnist
15
- from paddle .trainer_config_helpers import *
16
- import paddle .v2
17
10
11
+ import numpy as np
12
+ import paddle .v2 as paddle_v2
13
+ import py_paddle .swig_paddle as api
14
+ from paddle .trainer_config_helpers import *
15
+ from py_paddle import DataProviderConverter
18
16
19
- def network_config ():
20
- imgs = data_layer (name = 'pixel' , size = 784 )
21
- hidden1 = fc_layer (input = imgs , size = 200 )
22
- hidden2 = fc_layer (input = hidden1 , size = 200 )
23
- inference = fc_layer (input = hidden2 , size = 10 , act = SoftmaxActivation ())
24
- cost = classification_cost (
25
- input = inference , label = data_layer (
26
- name = 'label' , size = 10 ))
27
- outputs (cost )
17
+ from mnist_util import read_from_mnist
28
18
29
19
30
20
def init_parameter (network ):
@@ -67,7 +57,7 @@ def input_order_converter(generator):
67
57
def main ():
68
58
api .initPaddle ("-use_gpu=false" , "-trainer_count=4" ) # use 4 cpu cores
69
59
70
- optimizer = paddle . v2 .optimizer .Adam (
60
+ optimizer = paddle_v2 .optimizer .Adam (
71
61
learning_rate = 1e-4 ,
72
62
batch_size = 1000 ,
73
63
model_average = ModelAverage (average_window = 0.5 ),
@@ -79,8 +69,20 @@ def main():
79
69
updater = optimizer .create_local_updater ()
80
70
assert isinstance (updater , api .ParameterUpdater )
81
71
72
+ # define network
73
+ images = paddle_v2 .layer .data (
74
+ name = 'pixel' , type = paddle_v2 .data_type .dense_vector (784 ))
75
+ label = paddle_v2 .layer .data (
76
+ name = 'label' , type = paddle_v2 .data_type .integer_value (10 ))
77
+ hidden1 = paddle_v2 .layer .fc (input = images , size = 200 )
78
+ hidden2 = paddle_v2 .layer .fc (input = hidden1 , size = 200 )
79
+ inference = paddle_v2 .layer .fc (input = hidden2 ,
80
+ size = 10 ,
81
+ act = paddle_v2 .activation .Softmax ())
82
+ cost = paddle_v2 .layer .classification_cost (input = inference , label = label )
83
+
82
84
# Create Simple Gradient Machine.
83
- model_config = parse_network_config ( network_config )
85
+ model_config = paddle_v2 . layer . parse_network ( cost )
84
86
m = api .GradientMachine .createFromConfigProto (model_config ,
85
87
api .CREATE_MODE_NORMAL ,
86
88
optimizer .enable_types ())
@@ -97,8 +99,7 @@ def main():
97
99
98
100
# DataProvider Converter is a utility convert Python Object to Paddle C++
99
101
# Input. The input format is as same as Paddle's DataProvider.
100
- converter = DataProviderConverter (
101
- input_types = [dp .dense_vector (784 ), dp .integer_value (10 )])
102
+ converter = DataProviderConverter (input_types = [images .type , label .type ])
102
103
103
104
train_file = './data/raw_data/train'
104
105
test_file = './data/raw_data/t10k'
0 commit comments