(
train_file,
test_file,
batch_size = 256,
maxlen = 100,
test_iter = 500,
save_iter = 5000,
model_type = 'DNN',
Memory_Size = 4,
)
| 77 | return test_auc, loss_sum, accuracy_sum, aux_loss_sum, best_auc[0] |
| 78 | |
| 79 | def train( |
| 80 | train_file, |
| 81 | test_file, |
| 82 | batch_size = 256, |
| 83 | maxlen = 100, |
| 84 | test_iter = 500, |
| 85 | save_iter = 5000, |
| 86 | model_type = 'DNN', |
| 87 | Memory_Size = 4, |
| 88 | ): |
| 89 | TEM_MEMORY_SIZE = Memory_Size |
| 90 | model_path = "dnn_save_path/taobao_ckpt_noshuff" + model_type |
| 91 | best_model_path = "dnn_best_model/taobao_ckpt_noshuff" + model_type |
| 92 | gpu_options = tf.GPUOptions(allow_growth=True) |
| 93 | with tf.Session(config=tf.ConfigProto(gpu_options=gpu_options)) as sess: |
| 94 | |
| 95 | # Obtained in the data preprocess stage. To save time, json files are not needed. |
| 96 | uid_n, item_n, cate_n, shop_n, node_n, product_n, brand_n = [7956430, 34196611, 5596, 4377722, 2975349, 65624, 584181] |
| 97 | BATCH_SIZE = batch_size |
| 98 | SEQ_LEN = maxlen |
| 99 | |
| 100 | if model_type == 'DNN': |
| 101 | model = Model_DNN(uid_n, item_n, cate_n, shop_n, node_n, product_n, brand_n, EMBEDDING_DIM, HIDDEN_SIZE, MEMORY_SIZE, BATCH_SIZE, SEQ_LEN) |
| 102 | elif model_type == 'PNN': |
| 103 | model = Model_PNN(uid_n, item_n, cate_n, shop_n, node_n, product_n, brand_n, EMBEDDING_DIM, HIDDEN_SIZE, MEMORY_SIZE, BATCH_SIZE, SEQ_LEN) |
| 104 | elif model_type == 'GRU4REC': |
| 105 | model = Model_GRU4REC(uid_n, item_n, cate_n, shop_n, node_n, product_n, brand_n, EMBEDDING_DIM, HIDDEN_SIZE, MEMORY_SIZE, BATCH_SIZE, SEQ_LEN) |
| 106 | elif model_type == 'DIN': |
| 107 | model = Model_DIN(uid_n, item_n, cate_n, shop_n, node_n, product_n, brand_n, EMBEDDING_DIM, HIDDEN_SIZE, MEMORY_SIZE, BATCH_SIZE, SEQ_LEN) |
| 108 | elif model_type == 'ARNN': |
| 109 | model = Model_ARNN(uid_n, item_n, cate_n, shop_n, node_n, product_n, brand_n, EMBEDDING_DIM, HIDDEN_SIZE, MEMORY_SIZE, BATCH_SIZE, SEQ_LEN) |
| 110 | elif model_type == 'DIEN': |
| 111 | model = Model_DIEN(uid_n, item_n, cate_n, shop_n, node_n, product_n, brand_n, EMBEDDING_DIM, HIDDEN_SIZE, MEMORY_SIZE, BATCH_SIZE, SEQ_LEN) |
| 112 | elif model_type == 'DIEN_with_neg': |
| 113 | model = Model_DIEN(uid_n, item_n, cate_n, shop_n, node_n, product_n, brand_n, EMBEDDING_DIM, HIDDEN_SIZE, MEMORY_SIZE, BATCH_SIZE, SEQ_LEN, use_negsample=True) |
| 114 | else: |
| 115 | print ("Invalid model_type : %s", model_type) |
| 116 | return |
| 117 | |
| 118 | #参数初始化 |
| 119 | sess.run(tf.global_variables_initializer()) |
| 120 | sess.run(tf.local_variables_initializer()) |
| 121 | |
| 122 | sys.stdout.flush() |
| 123 | |
| 124 | start_time = time.time() |
| 125 | last_time = start_time |
| 126 | iter = 0 |
| 127 | lr = 0.001 |
| 128 | best_auc= [0.0] |
| 129 | loss_sum = 0.0 |
| 130 | accuracy_sum = 0. |
| 131 | left_loss_sum = 0. |
| 132 | aux_loss_sum = 0. |
| 133 | mem_loss_sum = 0. |
| 134 | # set 1 epoch only |
| 135 | epoch = 1 |
| 136 | for itr in range(epoch): |
no test coverage detected