04a-mmdf.py 2.99 KB
# coding: utf-8

# In[29]:

# Import
import itertools
import shelve
import pickle
import numpy
import scipy
from scipy import sparse
import scipy.sparse
import scipy.io
from mlp import *
import mlp
import sys
import utils
import dill
from collections import Counter
from gensim.models import LdaModel



# In[3]:

#30_50_50_150_0.0001

# In[4]:

#db=shelve.open("SPELIKE_MLP_DB.shelve",writeback=True)
origin_corps=shelve.open("{}".format(sys.argv[2]))
in_dir = sys.argv[1]
if len(sys.argv) > 3 :
    features_key = sys.argv[3]
else :
    features_key = "LDA"

out_db=shelve.open("{}/mlp_scores.shelve".format(in_dir),writeback=True)

mlp_h = [ 250, 250  ]
mlp_loss = "categorical_crossentropy"
mlp_dropouts = [0.25]* len(mlp_h)
mlp_sgd = Adam(lr=0.0001)
mlp_epochs = 3000
mlp_batch_size = 5
mlp_input_activation = "relu"
mlp_output_activation="softmax"

ress = []
for key in origin_corps["features_key"].keys() :

    res=mlp.train_mlp(origin_corps[features_key][key]["TRAIN"],origin_corps["LABEL"][key]["TRAIN"],
            origin_corps[features_key][key]["DEV"],origin_corps["LABEL"][key]["DEV"],
            origin_corps[features_key][key]["TEST"],origin_corps["LABEL"][key]["TEST"],
            mlp_h,dropouts=mlp_dropouts,sgd=mlp_sgd,
            epochs=mlp_epochs,
            batch_size=mlp_batch_size,
            save_pred=False,keep_histo=False,
            loss="categorical_crossentropy",fit_verbose=0)
    arg_best=[]
    dev_best=[]
    arg_best.append(numpy.argmax(res[1]))
    dev_best.append(res[1][arg_best[-1]])
    res[1][arg_best[-1]]=0
    arg_best.append(numpy.argmax(res[1]))
    dev_best.append(res[1][arg_best[-1]])
    res[1][arg_best[-1]]=0
    arg_best.append(numpy.argmax(res[1]))
    dev_best.append(res[1][arg_best[-1]])
    res[1][arg_best[-1]]=0
    arg_best.append(numpy.argmax(res[1]))
    dev_best.append(res[1][arg_best[-1]])
    res[1][arg_best[-1]]=0
    arg_best.append(numpy.argmax(res[1]))
    dev_best.append(res[1][arg_best[-1]])
    res[1][arg_best[-1]]=0
    arg_best.append(numpy.argmax(res[1]))
    dev_best.append(res[1][arg_best[-1]])
    res[1][arg_best[-1]]=0
    arg_best.append(numpy.argmax(res[1]))
    dev_best.append(res[1][arg_best[-1]])
    res[1][arg_best[-1]]=0
    arg_best.append(numpy.argmax(res[1]))
    dev_best.append(res[1][arg_best[-1]])
    res[1][arg_best[-1]]=0
    arg_best.append(numpy.argmax(res[1]))
    dev_best.append(res[1][arg_best[-1]])
    res[1][arg_best[-1]]=0
    arg_best.append(numpy.argmax(res[1]))
    dev_best.append(res[1][arg_best[-1]])
    res[1][arg_best[-1]]=0
    arg_best.append(numpy.argmax(res[1]))
    dev_best.append(res[1][arg_best[-1]])
    res[1][arg_best[-1]]=0
    arg_best.append(numpy.argmax(res[1]))
    dev_best.append(res[1][arg_best[-1]])
    res[1][arg_best[-1]]=0




    test_best =[  res[2][x] for x in arg_best ]
    test_max = numpy.max(res[2])
    out_db[key]=(res,(dev_best,test_best,test_max))
    ress.append((key,dev_best,test_best,test_max))
print sys.argv[2]   
for el in ress :
    print el
out_db.close()
origin_corps.close()