From 3ad8e78c9a8216844917d4d77c57d5a1eb078121 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 22 May 2019 07:07:10 +0000 Subject: [PATCH] add ce --- 01.fit_a_line/.run_ce.sh | 4 ++ 01.fit_a_line/_ce.py | 36 ++++++++++++++ .../fit_a_line.inference.model/__model__ | Bin 0 -> 4800 bytes .../fit_a_line.inference.model/fc_0.b_0 | Bin 0 -> 28 bytes .../fit_a_line.inference.model/fc_0.w_0 | Bin 0 -> 78 bytes 01.fit_a_line/image/prediction_gt.png | Bin 43694 -> 32130 bytes 01.fit_a_line/image/ranges.png | Bin 8763 -> 6737 bytes 01.fit_a_line/test_cost_factor.txt | 1 + 01.fit_a_line/train.py | 47 +++++++++++++----- 01.fit_a_line/train_cost_factor.txt | 1 + 10 files changed, 76 insertions(+), 13 deletions(-) create mode 100644 01.fit_a_line/.run_ce.sh create mode 100644 01.fit_a_line/_ce.py create mode 100644 01.fit_a_line/fit_a_line.inference.model/__model__ create mode 100644 01.fit_a_line/fit_a_line.inference.model/fc_0.b_0 create mode 100644 01.fit_a_line/fit_a_line.inference.model/fc_0.w_0 create mode 100644 01.fit_a_line/test_cost_factor.txt create mode 100644 01.fit_a_line/train_cost_factor.txt diff --git a/01.fit_a_line/.run_ce.sh b/01.fit_a_line/.run_ce.sh new file mode 100644 index 0000000..7e96905 --- /dev/null +++ b/01.fit_a_line/.run_ce.sh @@ -0,0 +1,4 @@ +#!/bin/bash +#This file is only used for continuous evaluation. +python train.py --enable_ce | python _ce.py + diff --git a/01.fit_a_line/_ce.py b/01.fit_a_line/_ce.py new file mode 100644 index 0000000..14490d8 --- /dev/null +++ b/01.fit_a_line/_ce.py @@ -0,0 +1,36 @@ +### This file is only used for continuous evaluation test! +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +import os +import sys +sys.path.append(os.environ['ceroot']) +from kpi import CostKpi + +train_cost_kpi = CostKpi('train_cost', 0.02, 0, actived=True, desc='train cost') +test_cost_kpi = CostKpi('test_cost', 0.02, 0, actived=True, desc='test cost') +tracking_kpis=[train_cost_kpi,test_cost_kpi] + +def parse_log(log): + for line in log.split('\n'): + fs = line.strip().split('\t') + print(fs) + if len(fs) == 3 and fs[0] =='kpis': + print("-----%s" % fs) + kpi_name = fs[1] + kpi_value = float(fs[2]) + yield kpi_name,kpi_value +def log_to_ce(log): + kpi_tracker = {} + for kpi in tracking_kpis: + kpi_tracker[kpi.name]=kpi + + for (kpi_name, kpi_value) in parse_log(log): + print(kpi_name,kpi_value) + kpi_tracker[kpi_name].add_record(kpi_value) + kpi_tracker[kpi_name].persist() + +if __name__ == '__main__': + log = sys.stdin.read() + log_to_ce(log) + diff --git a/01.fit_a_line/fit_a_line.inference.model/__model__ b/01.fit_a_line/fit_a_line.inference.model/__model__ new file mode 100644 index 0000000000000000000000000000000000000000..80b52f9c98960f6485f7246ac7513a017a1b9ed7 GIT binary patch literal 4800 zcmeHL&2QsG6pyz}nhs6tO&6$qK$fLd(vr37rpqQP0#Xkgfg=c^(bOKdqxehqICWSd zao~i6kT`JXLqbR#;ex~!@!#+#EYD-7o7gFt zM^aj-?oe)Bwr@4jfu!u9O@~q&THDZ4P}8ySv3`Y*+dIuIrHLBNy4;c_80#P;#<&;4 z=&LZgkM>}6w)A63mgL$&O?eGT>GJWG7=In@#ujlY9uD=VE_P5LItQBwY&Os)*ev5Q zm)jF~v@aTH8%ZCub4QzKaTK^zH22U;MH5d*B-gc{ z>u3jh0J|G=VvXhc*$qs74+!s46YPvX+Igw@P^_Yi6OB3cD%D+sB4>qs)R-x{cqkwHpP3rQcgpYZ*5 zPK-H{D;r+omRWHJ?M|_ucoIK<5!I>+abc*fmB{ra=+QI;lp z>d{f2Fd)3XTBReg;m>pAq{v~8C1O=uj3w=%YG$bc-xTmgyk9fynk(u^&Dkb)FV-Ea z%lt6mqqL{S>=QaNdn&Q`NMyu+%cwt_XfGqr97pC^lxb9jMW(VxUFyMET(Ov9kc8#L z{Cuk-E-zTHP8NK>N)}WdIqgG4f|wV?JZB_c)bmFjlCl`Y5|S*2dL!Z)Ggg{(%3K{j z5D*Klf+}I45StLr0v`xhq^Ly?y4keMo8A-Pqf9Rx7pfBK3(ffNQoJHrrJ`^jwWio6 zoM0!2JiAB?yp>j_A+(ttsSwOBE2+e6znm*@sXA8bqFOHN z@GD3bF+&^o02|z%ai> XF1s@dvKD%Kjka=Qg}*!hn+xmTT5%J8 literal 0 HcmV?d00001 diff --git a/01.fit_a_line/fit_a_line.inference.model/fc_0.b_0 b/01.fit_a_line/fit_a_line.inference.model/fc_0.b_0 new file mode 100644 index 0000000000000000000000000000000000000000..38a25caf143d4260999707922e1c05294bd692fb GIT binary patch literal 28 VcmZQzKm{y7E(fasqq*irM*sv40d)WX literal 0 HcmV?d00001 diff --git a/01.fit_a_line/fit_a_line.inference.model/fc_0.w_0 b/01.fit_a_line/fit_a_line.inference.model/fc_0.w_0 new file mode 100644 index 0000000000000000000000000000000000000000..54b618de920b2f6764c28fa7aa896b1991c957da GIT binary patch literal 78 zcmZQzKm}|-E(fasuK;6X;eq{&{65=TZL&S!SbNESlLP;Oy+J1HdJX^p>v9}< literal 0 HcmV?d00001 diff --git a/01.fit_a_line/image/prediction_gt.png b/01.fit_a_line/image/prediction_gt.png index 69dee8cb479aa878a4ff10b0bbeb97a4774aa2ac..0d4138d369aac72614874469b81578a60df877b9 100644 GIT binary patch literal 32130 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 YA-rLUvRu^QmyUQSrz)F&&-D5K0mJZM!~g&Q literal 43694 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 z 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 literal 8763 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 C(;o-` diff --git a/01.fit_a_line/test_cost_factor.txt b/01.fit_a_line/test_cost_factor.txt new file mode 100644 index 0000000..fd04135 --- /dev/null +++ b/01.fit_a_line/test_cost_factor.txt @@ -0,0 +1 @@ +[22.407488] \ No newline at end of file diff --git a/01.fit_a_line/train.py b/01.fit_a_line/train.py index dcae9ac..e51eb3d 100644 --- a/01.fit_a_line/train.py +++ b/01.fit_a_line/train.py @@ -15,6 +15,7 @@ from __future__ import print_function import sys +import argparse import math import numpy @@ -22,6 +23,13 @@ import numpy import paddle import paddle.fluid as fluid +def parse_args(): + parser = argparse.ArgumentParser("fit_a_line") + parser.add_argument('--enable_ce', action='store_true', help="If set, run the task with continuous evaluation logs." ) + parser.add_argument('--use_gpu', type=bool, default=False, help="Whether to use GPU or not." ) + parser.add_argument('--num_epochs', type=int, default=100, help="number of epochs." ) + args = parser.parse_args() + return args # For training test cost def train_test(executor, program, reader, feeder, fetch_list): @@ -52,21 +60,30 @@ def save_result(points1, points2): def main(): batch_size = 20 - train_reader = paddle.batch( - paddle.reader.shuffle(paddle.dataset.uci_housing.train(), buf_size=500), - batch_size=batch_size) - test_reader = paddle.batch( - paddle.reader.shuffle(paddle.dataset.uci_housing.test(), buf_size=500), - batch_size=batch_size) + + if args.enable_ce: + train_reader = paddle.batch(paddle.dataset.uci_housing.train(), batch_size=batch_size) + test_reader = paddle.batch(paddle.dataset.uci_housing.test(), batch_size=batch_size) + else : + train_reader = paddle.batch( + paddle.reader.shuffle(paddle.dataset.uci_housing.train(), buf_size=500), + batch_size=batch_size) + test_reader = paddle.batch( + paddle.reader.shuffle(paddle.dataset.uci_housing.test(), buf_size=500), + batch_size=batch_size) # feature vector of length 13 x = fluid.layers.data(name='x', shape=[13], dtype='float32') y = fluid.layers.data(name='y', shape=[1], dtype='float32') - y_predict = fluid.layers.fc(input=x, size=1, act=None) main_program = fluid.default_main_program() startup_program = fluid.default_startup_program() - + + if args.enable_ce: + main_program.random_seed = 90 + startup_program.random_seed = 90 + + y_predict = fluid.layers.fc(input=x, size=1, act=None) cost = fluid.layers.square_error_cost(input=y_predict, label=y) avg_loss = fluid.layers.mean(cost) @@ -76,13 +93,13 @@ def main(): test_program = main_program.clone(for_test=True) # can use CPU or GPU - use_cuda = False + use_cuda = args.use_gpu place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() exe = fluid.Executor(place) # Specify the directory to save the parameters params_dirname = "fit_a_line.inference.model" - num_epochs = 100 + num_epochs = args.num_epochs # main train loop. feeder = fluid.DataFeeder(place=place, feed_list=[x, y]) @@ -123,9 +140,12 @@ def main(): sys.exit("got NaN loss, training failed.") if params_dirname is not None: # We can save the trained parameters for the inferences later - fluid.io.save_inference_model(params_dirname, ['x'], [y_predict], - exe) - + fluid.io.save_inference_model(params_dirname, ['x'], [y_predict], exe) + + if args.enable_ce and pass_id == args.num_epochs - 1: + print("kpis\ttrain_cost\t%f" % avg_loss_value[0]) + print("kpis\ttest_cost\t%f" % test_metics[0]) + infer_exe = fluid.Executor(place) inference_scope = fluid.core.Scope() @@ -162,4 +182,5 @@ def main(): if __name__ == '__main__': + args=parse_args() main() diff --git a/01.fit_a_line/train_cost_factor.txt b/01.fit_a_line/train_cost_factor.txt new file mode 100644 index 0000000..98fa217 --- /dev/null +++ b/01.fit_a_line/train_cost_factor.txt @@ -0,0 +1 @@ +[46.631863] \ No newline at end of file -- GitLab