def train(maxlen=100, embedding_dim=128):   # 主训练/测试代码
    start = time.time()
    l_trainX, r_trainX, ret_labels, l_topredictX, r_topredictX = do.load_data_bi_word2vec(maxlen=maxlen,
                                                                                          words_keep=50000,
                                                                                          validation_portion=0.,
                                                                                          embedding_dim=embedding_dim,
                                                                                          ma="A")
    trainY = to_categorical(ret_labels, nb_classes=3)
    del ret_labels
    lnet = tflearn.input_data([None, maxlen, embedding_dim])
    rnet = tflearn.input_data([None, maxlen, embedding_dim])
    lnet = tflearn.gru(lnet, embedding_dim, dropout=0.8, return_seq=False, dynamic=True)
    rnet = tflearn.gru(rnet, embedding_dim, dropout=0.8, return_seq=False, dynamic=True)
    net = tflearn.layers.merge_outputs([lnet, rnet])
    net = tflearn.fully_connected(net, 3, activation='softmax')
    net = tflearn.regression(net, optimizer='adam', learning_rate=0.001,
                             loss='categorical_crossentropy')
    # Training
    model = tflearn.DNN(net, tensorboard_verbose=0)
    model.fit([l_trainX, r_trainX], trainY, validation_set=0.1, show_metric=True,
              batch_size=32)
    model.save('MODELS/E_W2V_GRU_TC{}_{}.dy'.format(embedding_dim, maxlen))
    # model.load('MODELS/E_W2V_GRU_TC{}_{}.dy'.format(embedding_dim, maxlen))
    del l_trainX
    del r_trainX
    del trainY
    idx2cla = {0: 'neu', 1: 'pos', 2: 'neg'}
    filename = "Result/result_{}.csv".format(datetime.datetime.now().strftime("%Y%m%d%H%M"))
    prefix = list(open('Result/A_AFTER_NRP_200', 'r').readlines())
    f = open(filename, 'w')
    f.write('SentenceId,View,Opinion\n')
    a = [0,     5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000, 55000]
    b = [5000, 10000, 15000, 20000, 25000, 30000, 35000, 40000, 45000, 50000, 55000, 65000]
    ANS = []
    for i in range(12):
        ans = model.predict([l_topredictX[a[i]:b[i]], r_topredictX[a[i]:b[i]]])
        ANS.extend([s for s in ans])
        print("ANS.LENGTH: {}".format(len(ans)))
    for i, r in enumerate(ANS):
        f.write(prefix[i].strip())
        idx = int(np.argmax(r))
        f.write(idx2cla[idx])
        k = ""
        for l in r:
            k += ',{:.4f}'.format(l)
        f.write(k)
        f.write('\n')
    f.close()
    end = time.time()
    print("TIME COST: {}".format(end-start))
    outf = vote_by_score(filename)
    add(outf)