view src/samer/models/BatchedTrainer.java @ 5:b67a33c44de7

Remove some crap, etc
author samer
date Fri, 05 Apr 2019 21:34:25 +0100
parents bf79fb79ee13
children
line wrap: on
line source
//
//  BatchedTrainer.java
//  
//
//  Created by Samer Abdallah on Wed Jul 10 2002.
//  Copyright (c) 2002 __MyCompanyName__. All rights reserved.
//

package samer.models;

import samer.core.types.*;
import samer.tools.*;

/** Manages a Model.Trainer to do batched learning.
	Calls accumulate() each iteration
	Flushes every <batch> iterations.
	Calls reset() on starting()
 */

public class BatchedTrainer extends AnonymousTask {
	Model.Trainer	trainer;
	VInteger				batch;
	int							count;
	Task						preFlush, postFlush;

	public BatchedTrainer(Model.Trainer T) { this(T,1); }
	public BatchedTrainer(Model.Trainer T, int b) {
		batch=new VInteger("batch",b);
		batch.setRange(1,batch.getMax());
		trainer=T;
		count=batch.value;
		postFlush=new NullTask();
		preFlush=new NullTask();
	}

	public Model.Trainer getTrainer() { return trainer; }
	public void setBatch(int n) { batch.set(n); }
	public VInteger getBatch() { return batch; }

	public void setPostFlush(Task t) { postFlush.dispose(); postFlush=t; }
	public Task getPostFlush() { return postFlush; }
	public void setPreFlush(Task t) { preFlush.dispose(); preFlush=t; }
	public Task getPreFlush() { return preFlush; }

	public String toString() { return "BatchedTrainer/"+batch.value+":"+trainer; }

	public void dispose() { 
		preFlush.dispose(); 
		postFlush.dispose();
		trainer.dispose(); 
		batch.dispose(); 
	}

	public void starting() { count=batch.value; trainer.reset(); }
	public void stopping() {}
	public void run() throws Exception {
		trainer.accumulate();
		if ((--count)<=0) {
			preFlush.run();
			trainer.flush();
			postFlush.run();
			count=batch.value;
		}
	}
}