Mercurial > hg > jslab
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; } } }