Skip to content

Commit d5be1d4

Browse files
authored
use Evaluator in book tests (#5778)
1 parent d2e30a2 commit d5be1d4

5 files changed

+45
-25
lines changed

python/paddle/v2/fluid/tests/book/test_image_classification_train.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import paddle.v2.fluid.framework as framework
55
import paddle.v2.fluid.layers as layers
66
import paddle.v2.fluid.nets as nets
7+
import paddle.v2.fluid.evaluator as evaluator
78
from paddle.v2.fluid.executor import Executor
89
from paddle.v2.fluid.initializer import XavierInitializer
910
from paddle.v2.fluid.optimizer import AdamOptimizer
@@ -103,12 +104,13 @@ def conv_block(input, num_filter, groups, dropouts):
103104
predict = layers.fc(input=net, size=classdim, act='softmax')
104105
cost = layers.cross_entropy(input=predict, label=label)
105106
avg_cost = layers.mean(x=cost)
106-
accuracy = layers.accuracy(input=predict, label=label)
107107

108108
# optimizer = SGDOptimizer(learning_rate=0.001)
109109
optimizer = AdamOptimizer(learning_rate=0.001)
110110
opts = optimizer.minimize(avg_cost)
111111

112+
accuracy, acc_out = evaluator.accuracy(input=predict, label=label)
113+
112114
BATCH_SIZE = 128
113115
PASS_NUM = 1
114116

@@ -124,6 +126,7 @@ def conv_block(input, num_filter, groups, dropouts):
124126

125127
for pass_id in range(PASS_NUM):
126128
batch_id = 0
129+
accuracy.reset(exe)
127130
for data in train_reader():
128131
img_data = np.array(map(lambda x: x[0].reshape(data_shape),
129132
data)).astype("float32")
@@ -141,12 +144,14 @@ def conv_block(input, num_filter, groups, dropouts):
141144
outs = exe.run(framework.default_main_program(),
142145
feed={"pixel": tensor_img,
143146
"label": tensor_y},
144-
fetch_list=[avg_cost, accuracy])
147+
fetch_list=[avg_cost, acc_out])
145148

146149
loss = np.array(outs[0])
147150
acc = np.array(outs[1])
151+
pass_acc = accuracy.eval(exe)
148152
print("pass_id:" + str(pass_id) + " batch_id:" + str(batch_id) +
149-
" loss:" + str(loss) + " acc:" + str(acc))
153+
" loss:" + str(loss) + " acc:" + str(acc) + " pass_acc:" + str(
154+
pass_acc))
150155
batch_id = batch_id + 1
151156

152157
if batch_id > 1:

python/paddle/v2/fluid/tests/book/test_recognize_digits_conv.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
exe.run(framework.default_startup_program())
4747

4848
for pass_id in range(PASS_NUM):
49-
count = 0
5049
accuracy.reset(exe)
5150
for data in train_reader():
5251
img_data = np.array(map(lambda x: x[0].reshape([1, 28, 28]),
@@ -66,13 +65,14 @@
6665
loss = np.array(outs[0])
6766
acc = np.array(outs[1])
6867
pass_acc = accuracy.eval(exe)
69-
print "pass id : ", pass_id, pass_acc
68+
print("pass_id=" + str(pass_id) + " acc=" + str(acc) + " pass_acc=" +
69+
str(pass_acc))
7070
# print loss, acc
71-
if loss < 10.0 and acc > 0.9:
71+
if loss < 10.0 and pass_acc > 0.9:
7272
# if avg cost less than 10.0 and accuracy is larger than 0.9, we think our code is good.
7373
exit(0)
7474

7575
pass_acc = accuracy.eval(exe)
76-
print "pass id : ", pass_id, pass_acc
76+
print("pass_id=" + str(pass_id) + " pass_acc=" + str(pass_acc))
7777

7878
exit(1)

python/paddle/v2/fluid/tests/book/test_recognize_digits_mlp.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import paddle.v2.fluid.core as core
44
import paddle.v2.fluid.framework as framework
55
import paddle.v2.fluid.layers as layers
6+
import paddle.v2.fluid.evaluator as evaluator
67
from paddle.v2.fluid.executor import Executor
78
from paddle.v2.fluid.initializer import UniformInitializer
89
from paddle.v2.fluid.optimizer import MomentumOptimizer
@@ -30,11 +31,12 @@
3031

3132
cost = layers.cross_entropy(input=predict, label=label)
3233
avg_cost = layers.mean(x=cost)
33-
accuracy = layers.accuracy(input=predict, label=label)
3434

3535
optimizer = MomentumOptimizer(learning_rate=0.001, momentum=0.9)
3636
opts = optimizer.minimize(avg_cost)
3737

38+
accuracy, acc_out = evaluator.accuracy(input=predict, label=label)
39+
3840
train_reader = paddle.batch(
3941
paddle.reader.shuffle(
4042
paddle.dataset.mnist.train(), buf_size=8192),
@@ -47,6 +49,7 @@
4749

4850
PASS_NUM = 100
4951
for pass_id in range(PASS_NUM):
52+
accuracy.reset(exe)
5053
for data in train_reader():
5154
x_data = np.array(map(lambda x: x[0], data)).astype("float32")
5255
y_data = np.array(map(lambda x: x[1], data)).astype("int64")
@@ -61,9 +64,13 @@
6164
outs = exe.run(framework.default_main_program(),
6265
feed={'x': tensor_x,
6366
'y': tensor_y},
64-
fetch_list=[avg_cost, accuracy])
67+
fetch_list=[avg_cost, acc_out])
6568
out = np.array(outs[0])
6669
acc = np.array(outs[1])
67-
if out[0] < 5.0:
68-
exit(0) # if avg cost less than 5.0, we think our code is good.
70+
pass_acc = accuracy.eval(exe)
71+
72+
if pass_acc > 0.7:
73+
exit(0)
74+
# print("pass_id=" + str(pass_id) + " auc=" +
75+
# str(acc) + " pass_acc=" + str(pass_acc))
6976
exit(1)

python/paddle/v2/fluid/tests/book/test_understand_sentiment_conv.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import numpy as np
22
import paddle.v2 as paddle
33
import paddle.v2.fluid.core as core
4+
import paddle.v2.fluid.evaluator as evaluator
45
import paddle.v2.fluid.framework as framework
56
import paddle.v2.fluid.layers as layers
67
import paddle.v2.fluid.nets as nets
@@ -32,8 +33,8 @@ def convolution_net(input_dim, class_dim=2, emb_dim=32, hid_dim=32):
3233
avg_cost = layers.mean(x=cost)
3334
adam_optimizer = AdamOptimizer(learning_rate=0.002)
3435
opts = adam_optimizer.minimize(avg_cost)
35-
acc = layers.accuracy(input=prediction, label=label)
36-
return avg_cost, acc
36+
accuracy, acc_out = evaluator.accuracy(input=prediction, label=label)
37+
return avg_cost, accuracy, acc_out
3738

3839

3940
def to_lodtensor(data, place):
@@ -59,7 +60,8 @@ def main():
5960
dict_dim = len(word_dict)
6061
class_dim = 2
6162

62-
cost, acc = convolution_net(input_dim=dict_dim, class_dim=class_dim)
63+
cost, accuracy, acc_out = convolution_net(
64+
input_dim=dict_dim, class_dim=class_dim)
6365

6466
train_data = paddle.batch(
6567
paddle.reader.shuffle(
@@ -71,6 +73,7 @@ def main():
7173
exe.run(framework.default_startup_program())
7274

7375
for pass_id in xrange(PASS_NUM):
76+
accuracy.reset(exe)
7477
for data in train_data():
7578
tensor_words = to_lodtensor(map(lambda x: x[0], data), place)
7679

@@ -83,12 +86,13 @@ def main():
8386
outs = exe.run(framework.default_main_program(),
8487
feed={"words": tensor_words,
8588
"label": tensor_label},
86-
fetch_list=[cost, acc])
89+
fetch_list=[cost, acc_out])
8790
cost_val = np.array(outs[0])
8891
acc_val = np.array(outs[1])
89-
90-
print("cost=" + str(cost_val) + " acc=" + str(acc_val))
91-
if cost_val < 1.0 and acc_val > 0.7:
92+
pass_acc = accuracy.eval(exe)
93+
print("cost=" + str(cost_val) + " acc=" + str(acc_val) +
94+
" pass_acc=" + str(pass_acc))
95+
if cost_val < 1.0 and pass_acc > 0.8:
9296
exit(0)
9397
exit(1)
9498

python/paddle/v2/fluid/tests/book/test_understand_sentiment_dynamic_lstm.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import numpy as np
22
import paddle.v2 as paddle
33
import paddle.v2.fluid.core as core
4+
import paddle.v2.fluid.evaluator as evaluator
45
import paddle.v2.fluid.framework as framework
56
import paddle.v2.fluid.layers as layers
67
from paddle.v2.fluid.executor import Executor
@@ -41,8 +42,8 @@ def stacked_lstm_net(input_dim,
4142
avg_cost = layers.mean(x=cost)
4243
adam_optimizer = AdamOptimizer(learning_rate=0.002)
4344
opts = adam_optimizer.minimize(avg_cost)
44-
acc = layers.accuracy(input=prediction, label=label)
45-
return avg_cost, acc
45+
accuracy, acc_out = evaluator.accuracy(input=prediction, label=label)
46+
return avg_cost, accuracy, acc_out
4647

4748

4849
def to_lodtensor(data, place):
@@ -69,7 +70,8 @@ def main():
6970
dict_dim = len(word_dict)
7071
class_dim = 2
7172

72-
cost, acc = stacked_lstm_net(input_dim=dict_dim, class_dim=class_dim)
73+
cost, accuracy, acc_out = stacked_lstm_net(
74+
input_dim=dict_dim, class_dim=class_dim)
7375

7476
train_data = paddle.batch(
7577
paddle.reader.shuffle(
@@ -81,6 +83,7 @@ def main():
8183
exe.run(framework.default_startup_program())
8284

8385
for pass_id in xrange(PASS_NUM):
86+
accuracy.reset(exe)
8487
for data in train_data():
8588
tensor_words = to_lodtensor(map(lambda x: x[0], data), place)
8689

@@ -93,12 +96,13 @@ def main():
9396
outs = exe.run(framework.default_main_program(),
9497
feed={"words": tensor_words,
9598
"label": tensor_label},
96-
fetch_list=[cost, acc])
99+
fetch_list=[cost, acc_out])
97100
cost_val = np.array(outs[0])
98101
acc_val = np.array(outs[1])
99-
100-
print("cost=" + str(cost_val) + " acc=" + str(acc_val))
101-
if cost_val < 1.0 and acc_val > 0.7:
102+
pass_acc = accuracy.eval(exe)
103+
print("cost=" + str(cost_val) + " acc=" + str(acc_val) +
104+
" pass_acc=" + str(pass_acc))
105+
if cost_val < 1.0 and acc_val > 0.8:
102106
exit(0)
103107
exit(1)
104108

0 commit comments

Comments
 (0)