|
|
|
@ -3,6 +3,7 @@ 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
|
|
|
|
|
import paddle.v2.framework.evaluator as evaluator
|
|
|
|
|
|
|
|
|
|
from paddle.v2.framework.framework import Program, g_main_program
|
|
|
|
|
from paddle.v2.framework.executor import Executor
|
|
|
|
@ -54,17 +55,24 @@ cost = layers.cross_entropy(
|
|
|
|
|
main_program=main_program,
|
|
|
|
|
startup_program=startup_program)
|
|
|
|
|
avg_cost = layers.mean(x=cost, main_program=main_program)
|
|
|
|
|
accuracy = layers.accuracy(
|
|
|
|
|
input=predict,
|
|
|
|
|
label=label,
|
|
|
|
|
main_program=main_program,
|
|
|
|
|
startup_program=startup_program)
|
|
|
|
|
|
|
|
|
|
# accuracy = layers.accuracy(
|
|
|
|
|
# input=predict,
|
|
|
|
|
# label=label,
|
|
|
|
|
# main_program=main_program,
|
|
|
|
|
# startup_program=startup_program)
|
|
|
|
|
# optimizer = optimizer.MomentumOptimizer(learning_rate=0.1 / 128.0,
|
|
|
|
|
# momentum=0.9)
|
|
|
|
|
optimizer = optimizer.AdamOptimizer(learning_rate=0.01, beta1=0.9, beta2=0.999)
|
|
|
|
|
opts = optimizer.minimize(avg_cost, startup_program)
|
|
|
|
|
|
|
|
|
|
accuracy = evaluator.accuracy(
|
|
|
|
|
input=predict,
|
|
|
|
|
label=label,
|
|
|
|
|
main_program=main_program,
|
|
|
|
|
startup_program=startup_program)
|
|
|
|
|
acc_out = accuracy._update_ops(
|
|
|
|
|
input=predict, label=label, main_program=main_program)
|
|
|
|
|
|
|
|
|
|
BATCH_SIZE = 50
|
|
|
|
|
PASS_NUM = 3
|
|
|
|
|
train_reader = paddle.batch(
|
|
|
|
@ -79,6 +87,7 @@ exe.run(startup_program, feed={}, fetch_list=[])
|
|
|
|
|
|
|
|
|
|
for pass_id in range(PASS_NUM):
|
|
|
|
|
count = 0
|
|
|
|
|
accuracy.reset(exe)
|
|
|
|
|
for data in train_reader():
|
|
|
|
|
img_data = np.array(map(lambda x: x[0].reshape([1, 28, 28]),
|
|
|
|
|
data)).astype("float32")
|
|
|
|
@ -93,11 +102,14 @@ for pass_id in range(PASS_NUM):
|
|
|
|
|
outs = exe.run(main_program,
|
|
|
|
|
feed={"pixel": tensor_img,
|
|
|
|
|
"label": tensor_y},
|
|
|
|
|
fetch_list=[avg_cost, accuracy])
|
|
|
|
|
fetch_list=[avg_cost, acc_out])
|
|
|
|
|
loss = np.array(outs[0])
|
|
|
|
|
acc = np.array(outs[1])
|
|
|
|
|
# pass_acc = accuracy.eval(exe)
|
|
|
|
|
# print pass_acc
|
|
|
|
|
print loss, acc
|
|
|
|
|
|
|
|
|
|
if loss < 10.0 and acc > 0.9:
|
|
|
|
|
# if avg cost less than 10.0 and accuracy is larger than 0.9, we think our code is good.
|
|
|
|
|
exit(0)
|
|
|
|
|
# if loss < 10.0 and acc > 0.9:
|
|
|
|
|
# # if avg cost less than 10.0 and accuracy is larger than 0.9, we think our code is good.
|
|
|
|
|
# exit(0)
|
|
|
|
|
exit(1)
|
|
|
|
|