''' Created on 05/06/2014 @author: nikolay ''' from __builtin__ import map import sys import time import collections import logging from os.path import os from sys import maxint from autoscale.FANNWrapper import FANNWrapper from math import * fann = FANNWrapper(topology=(1, 250, 2)); for k in range(1, 1000): for i in range(k, 10000, k): expOutput = [log(i * 10), log(i * 10)] rmse = fann.train(n=i, expOutput=expOutput, trainTimes = 1, revert=False, maxRMSE=0.05) print "Training with i = %d, RMSE: %.4f, output=[%.4f, %.4f]" % (i, rmse, expOutput[0], expOutput[1]) for i in range(1, 10000, 100): result = fann.run(i) rmse = fann.rmse(i, result) print "Result: %d, RMSE: %.4f, output=[%.4f, %.4f]" % (i, rmse, result[0], result[1])
minUsers, maxUsers = (min(measurement.numberOfUsers(), minUsers), max(measurement.numberOfUsers(), maxUsers)) if k % 50 == 0: statHeader(trainingResFile, overwrite=False) rmsePre = fann.rmse(measurement.numberOfUsers(), (cpu, mem)) avgRMSE = rmsePre if len(rmses) == 0 else sum(rmses) / len(rmses) if rmsePre < 0.01: log.info("Predicted well!!! RMSE: %.5f" % (rmsePre)) time.sleep(sleepPeriod) continue rmses.append(rmsePre) run = fann.run(measurement.numberOfUsers()) annPart = 2**len(annomalies) * reduce( lambda x, y: x * y, map(lambda x: sigmoid(x), annomalies)) rmsePart = max(1.0, rmsePre / avgRMSE) lrk = getLrk(k=k, lr=lr, rmsePart=rmsePart, annPart=annPart, epochCode=epochCode) mk = getMk(k=k, lr=lr, lrk=lrk, epochCode=epochCode) ek = nextEpoch(lrk=lrk, lr=lr, epochCode=epochCode) # sleepPeriod = defSleepPeriod if ek < 2 else defSleepPeriod / 2.0
if measurement is not None and measurement.isValid() : minUsers, maxUsers = (min(measurement.numberOfUsers(), minUsers), max(measurement.numberOfUsers(), maxUsers)) if k % 50 == 0: statHeader(trainingResFile, overwrite=False); rmsePre = fann.rmse(measurement.numberOfUsers(), (cpu, mem)) avgRMSE = rmsePre if len(rmses) == 0 else sum(rmses) / len(rmses) if rmsePre < 0.01: log.info("Predicted well!!! RMSE: %.5f" % (rmsePre)) time.sleep(sleepPeriod) continue rmses.append(rmsePre) run = fann.run(measurement.numberOfUsers()) annPart = 2**len(annomalies) * reduce(lambda x, y : x * y, map(lambda x : sigmoid(x), annomalies)) rmsePart = max(1.0, rmsePre / avgRMSE) lrk = getLrk(k=k, lr=lr, rmsePart=rmsePart, annPart=annPart, epochCode = epochCode) mk = getMk(k=k, lr=lr, lrk = lrk, epochCode = epochCode) ek = nextEpoch(lrk=lrk, lr=lr, epochCode=epochCode) # sleepPeriod = defSleepPeriod if ek < 2 else defSleepPeriod / 2.0 # Speculated run ... fann.config(momentum = mk, learning_rate = lrk) rmsePost=fann.train(measurement.numberOfUsers(), (cpu, mem), trainTimes=1, revert = True) lrkBuff = lrk