def __init__(self, data, targets, cv_data, cv_targets, extra, layers, epochs=1, smoothing=1, new=True, filename_in=False): if len(cv_data) != len(cv_targets): raise Exception("Number of CV data and CV targets must be equal") if len(data) != len(targets): raise Exception("Number of data and targets must be equal") if new: class_tr_targets = [str(int(t[0]) - 1) for t in targets] # for pybrain's classification datset print "...training the DNNRegressor" if len(layers) > 2: # TODO testing only net = DNNRegressor(data, extra, class_tr_targets, layers, hidden_layer="TanhLayer", final_layer="SoftmaxLayer", compression_epochs=epochs, bias=True, autoencoding_only=False) print "...running net.fit()" net = net.fit() elif len(layers) == 2: net = buildNetwork(layers[0], layers[-1], outclass=SoftmaxLayer, bias=True) ds = ClassificationDataSet(len(data[0]), 1, nb_classes=9) bag = 1 noisy, _ = self.dropout(data, noise=0.0, bag=bag, debug=True) bagged_targets = [] for t in class_tr_targets: for b in range(bag): bagged_targets.append(t) for i,d in enumerate(noisy): t = bagged_targets[i] ds.addSample(d, t) ds._convertToOneOfMany() print "...smoothing for epochs: ", smoothing self.model = net preds = [self.predict(d) for d in cv_data] cv = score(preds, cv_targets, debug=False) preds = [self.predict(d) for d in data] tr = score(preds, targets, debug=False) trainer = BackpropTrainer(net, ds, verbose=True, learningrate=0.0008, momentum=0.04, weightdecay=0.05) # best score 0.398 after 50 compression epochs and 200 epochs with lr=0.0008, weightdecay=0.05, momentum=0.04. Used dropout of 0.2 in compression, 0.5 in softmax pretraining, and no dropout in smoothing. print "Train score before training: ", tr print "CV score before training: ", cv for i in range(smoothing): trainer.train() self.model = net preds = [self.predict(d) for d in cv_data] cv = score(preds, cv_targets, debug=False) preds = [self.predict(d) for d in data] tr = score(preds, targets, debug=False) print "Train/CV score at epoch ", (i+1), ': ', tr, '/', cv #if i == 1: #print "...saving the model" #save("data/1000_ex_4_hidden/net_epoch_1.txt", net) #elif i == 3: #print "...saving the model" #save("data/1000_ex_4_hidden/net_epoch_3.txt", net) #elif i == 5: #print "...saving the model" #save("data/1000_ex_4_hidden/net_epoch_5.txt", net) print "...saving the model" #save("data/1000_ex_4_hidden/net_epoch_10.txt", net) else: model = load(filename_in) self.model = model
def do_import(ast, module): if module in importedFiles: return True importedFiles.append(module) subprocess.call([sys.argv[0], "-c", module]) name_p = module.replace(".kh", ".kp") obj = my_pickle.load(open(name_p, "rb")) ast.ref.body += obj[0].body for it in obj[0].types.maps: ast.ref.types.update(it) symtab.update(obj[1])
def autoencode(self, data, targets, cv, epochs=1, new=True): if new: end = 1000 autoencoder = AutoEncoder( data[:end], targets[:end], [1875, 900, 9], hidden_layer="SigmoidLayer", final_layer="SigmoidLayer", compression_epochs=epochs, bias=True, autoencoding_only=True, ) autoencoder = autoencoder.fit() save(filename, autoencoder) else: autoencoder = load(filename) data = [autoencoder.activate(d) for d in data] cv = [autoencoder.activate(c) for c in cv] print data[0][:10] return data, cv