diff --git a/fluid/PaddleRec/gru4rec/README.md b/fluid/PaddleRec/gru4rec/README.md index 0ea3f838eaf9e2f46b7d1551a36aa1f6b462ce44..9c4a5247fe2ecb64e79ba96e0922f0fd1750aa8e 100644 --- a/fluid/PaddleRec/gru4rec/README.md +++ b/fluid/PaddleRec/gru4rec/README.md @@ -79,7 +79,7 @@ SessionId ItemId Time 2 214757407 1396850438.247 ``` -数据格式需要转换 运行脚本 +数据格式需要转换, 运行脚本如下 ``` python convert_format.py ``` @@ -101,7 +101,7 @@ python convert_format.py 根据训练和测试文件生成字典和对应的paddle输入文件 -注意需要将训练文件放到一个目录下面,测试文件放到一个目录下面,同时支持多训练文件 +需要将训练文件放到目录raw_train_data下,测试文件放到目录raw_test_data下,并生成对应的train_data,test_data和vocab.txt文件 ``` python text2paddle.py raw_train_data/ raw_test_data/ train_data test_data vocab.txt ``` diff --git a/fluid/PaddleRec/gru4rec/net.py b/fluid/PaddleRec/gru4rec/net.py index ebb512377eae865b90f3d0360931a744b1a0ad07..6a715443ff1e72ae77aba51d5eaffe4eefee9687 100644 --- a/fluid/PaddleRec/gru4rec/net.py +++ b/fluid/PaddleRec/gru4rec/net.py @@ -171,7 +171,8 @@ def train_cross_entropy_network(vocab_size, neg_size, hid_size, drop_out=0.2): ele_mul = fluid.layers.elementwise_mul(emb_label_drop, gru) red_sum = fluid.layers.reduce_sum(input=ele_mul, dim=1, keep_dim=True) - pre = fluid.layers.sequence_reshape(input=red_sum, new_dim=(neg_size + 1)) + pre_ = fluid.layers.sequence_reshape(input=red_sum, new_dim=(neg_size + 1)) + pre = fluid.layers.softmax(input=pre_) cost = fluid.layers.cross_entropy(input=pre, label=pos_label) cost_sum = fluid.layers.reduce_sum(input=cost) diff --git a/fluid/PaddleRec/gru4rec/train_sample_neg.py b/fluid/PaddleRec/gru4rec/train_sample_neg.py index eb7ec3d4901d9ab7916546d83570534c81a8b0ff..1b1736cf937723bc86693c0d8cd39e579735f129 100644 --- a/fluid/PaddleRec/gru4rec/train_sample_neg.py +++ b/fluid/PaddleRec/gru4rec/train_sample_neg.py @@ -68,9 +68,11 @@ def train(): # Train program if args.loss == 'bpr': + print('bpr loss') src, pos_label, label, avg_cost = net.train_bpr_network( neg_size=args.neg_size, vocab_size=vocab_size, hid_size=hid_size) else: + print('cross-entory loss') src, pos_label, label, avg_cost = net.train_cross_entropy_network( neg_size=args.neg_size, vocab_size=vocab_size, hid_size=hid_size) diff --git a/fluid/PaddleRec/gru4rec/utils.py b/fluid/PaddleRec/gru4rec/utils.py index 429026b831454e44869238744c890e6139a6074d..1cd6a313b2a5097b16c473722737e0e6936f4e31 100644 --- a/fluid/PaddleRec/gru4rec/utils.py +++ b/fluid/PaddleRec/gru4rec/utils.py @@ -45,8 +45,8 @@ def to_lodtensor_bpr(raw_data, neg_size, vocab_size, place): neg_data = np.tile(pos_data, neg_size) np.random.shuffle(neg_data) for ii in range(length * neg_size): - if neg_data[ii] == pos_data[ii / neg_size]: - neg_data[ii] = pos_data[length - 1 - ii / neg_size] + if neg_data[ii] == pos_data[ii // neg_size]: + neg_data[ii] = pos_data[length - 1 - ii // neg_size] label_data = np.column_stack( (pos_data.reshape(length, 1), neg_data.reshape(length, neg_size))) diff --git a/fluid/PaddleRec/ssr/infer.py b/fluid/PaddleRec/ssr/infer.py index d5c9ee1b5dc95eb403932e0ff7534bfadc7568d7..38fb5cd762e117409b12ce8bd202f110a1cdfcb4 100644 --- a/fluid/PaddleRec/ssr/infer.py +++ b/fluid/PaddleRec/ssr/infer.py @@ -81,7 +81,7 @@ def infer(args, vocab_size, test_reader): start_up_program = fluid.Program() with fluid.program_guard(main_program, start_up_program): acc = model(vocab_size, emb_size, hid_size) - for epoch in xrange(start_index, last_index + 1): + for epoch in range(start_index, last_index + 1): copy_program = main_program.clone() model_path = model_dir + "/epoch_" + str(epoch) fluid.io.load_params(