/*******************************************************************************
* Copyright (c) 2014 Imperial College London
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Raul Castro Fernandez - initial API and implementation
******************************************************************************/
import java.util.Vector;
import uk.ac.imperial.lsds.seep.api.annotations.Partitioned;
import uk.ac.imperial.lsds.seep.api.annotations.Partial;
import uk.ac.imperial.lsds.seep.api.annotations.Global;
import uk.ac.imperial.lsds.seep.api.annotations.Collection;
import uk.ac.imperial.lsds.seep.api.annotations.Any;
import uk.ac.imperial.lsds.seep.api.annotations.DriverProgram;
public class Driver implements DriverProgram{
@Partial
public Vector weights = new Vector();
private static final int ITER = 5;
private static final double DELTA = 0.3;
public void main(){
Vector items = null; // get data somehow
train(items); // call function -> implies this is an entry point
int item = 5; // a simple item to classify;
test(item);
}
public void train(Vector items){
for (int i = 0; i < ITER; i++) {
for (int j = 0; j<items.size(); j++) {
int t = i;
double predicted = classify(t, weights);
Vector gradient = new Vector();
for (int k = 0; k < items.size(); k++){
int f = k;
int label = 1;
gradient.add(f * (label - predicted) * DELTA);
weights = add(weights, gradient);
}
}
Vector gWeights = merge(weights);
@Global boolean success = assign(weights, gWeights);
}
}
public boolean test(int item){
double result = classify(item, weights);
boolean toReturn = false;
if(result > 0){
toReturn = true;
}
return toReturn;
}
private boolean assign(Vector weights, Vector gWeights){
weights = gWeights;
return true;
}
private double classify(int t, Vector weights){
return 0;
}
private Vector add(Vector weights, Vector gradient){
return gradient;
}
private Vector merge(@Collection Vector weights){
return weights;
}
}