diff --git a/06.understand_sentiment/README.cn.md b/06.understand_sentiment/README.cn.md index d7b80d80264828aa43e5333d6976504f8716e9ca..4bacddb4b17317b2ca17b8445c1d7624baa2da8f 100644 --- a/06.understand_sentiment/README.cn.md +++ b/06.understand_sentiment/README.cn.md @@ -257,6 +257,9 @@ train_reader = paddle.batch( paddle.reader.shuffle( paddle.dataset.imdb.train(word_dict), buf_size=25000), batch_size=BATCH_SIZE) +print("Reading testing data....") +test_reader = paddle.batch( + paddle.dataset.imdb.test(word_dict), batch_size=BATCH_SIZE) ``` word_dict是一个字典序列,是词和label的对应关系,运行下一行可以看到具体内容: ```python @@ -275,6 +278,28 @@ sgd_optimizer = optimizer_func()#训练优化函数 sgd_optimizer.minimize(avg_cost) ``` +该函数用来计算训练中模型在test数据集上的结果 +```python +def train_test(program, reader): + count = 0 + feed_var_list = [ + program.global_block().var(var_name) for var_name in feed_order + ] + feeder_test = fluid.DataFeeder(feed_list=feed_var_list, place=place) + test_exe = fluid.Executor(place) + accumulated = len([avg_cost, accuracy]) * [0] + for test_data in reader(): + avg_cost_np = test_exe.run( + program=program, + feed=feeder_test.feed(test_data), + fetch_list=[avg_cost, accuracy]) + accumulated = [ + x[0] + x[1][0] for x in zip(accumulated, avg_cost_np) + ] + count += 1 + return [x / count for x in accumulated] +``` + ### 提供数据并构建主训练循环 `feed_order`用来定义每条产生的数据和`fluid.layers.data`之间的映射关系。比如,`imdb.train`产生的第一列的数据对应的是`words`这个特征。 @@ -379,7 +404,7 @@ with fluid.scope_guard(inference_scope): fetch_targets] = fluid.io.load_inference_model(params_dirname, exe) assert feed_target_names[0] == "words" - results = exe.run(inference_program, + results = exe.run(inferencer, feed={feed_target_names[0]: tensor_words}, fetch_list=fetch_targets, return_numpy=False) diff --git a/06.understand_sentiment/index.cn.html b/06.understand_sentiment/index.cn.html index f1817c137359047d628e4f1cbe0fe0c6e84096e1..c60892e5ed94e0089db63bc99ced9d6fd5595eba 100644 --- a/06.understand_sentiment/index.cn.html +++ b/06.understand_sentiment/index.cn.html @@ -299,6 +299,9 @@ train_reader = paddle.batch( paddle.reader.shuffle( paddle.dataset.imdb.train(word_dict), buf_size=25000), batch_size=BATCH_SIZE) +print("Reading testing data....") +test_reader = paddle.batch( + paddle.dataset.imdb.test(word_dict), batch_size=BATCH_SIZE) ``` word_dict是一个字典序列,是词和label的对应关系,运行下一行可以看到具体内容: ```python @@ -317,6 +320,28 @@ sgd_optimizer = optimizer_func()#训练优化函数 sgd_optimizer.minimize(avg_cost) ``` +该函数用来计算训练中模型在test数据集上的结果 +```python +def train_test(program, reader): + count = 0 + feed_var_list = [ + program.global_block().var(var_name) for var_name in feed_order + ] + feeder_test = fluid.DataFeeder(feed_list=feed_var_list, place=place) + test_exe = fluid.Executor(place) + accumulated = len([avg_cost, accuracy]) * [0] + for test_data in reader(): + avg_cost_np = test_exe.run( + program=program, + feed=feeder_test.feed(test_data), + fetch_list=[avg_cost, accuracy]) + accumulated = [ + x[0] + x[1][0] for x in zip(accumulated, avg_cost_np) + ] + count += 1 + return [x / count for x in accumulated] +``` + ### 提供数据并构建主训练循环 `feed_order`用来定义每条产生的数据和`fluid.layers.data`之间的映射关系。比如,`imdb.train`产生的第一列的数据对应的是`words`这个特征。 @@ -421,7 +446,7 @@ with fluid.scope_guard(inference_scope): fetch_targets] = fluid.io.load_inference_model(params_dirname, exe) assert feed_target_names[0] == "words" - results = exe.run(inference_program, + results = exe.run(inferencer, feed={feed_target_names[0]: tensor_words}, fetch_list=fetch_targets, return_numpy=False)