/**
* {@inheritDoc}
*/
@Override
public void save(final OutputStream os, final Object obj) {
final EncogWriteHelper out = new EncogWriteHelper(os);
final RBFNetwork net = (RBFNetwork) obj;
final FlatNetworkRBF flat = (FlatNetworkRBF) net.getFlat();
out.addSection("RBF-NETWORK");
out.addSubSection("PARAMS");
out.addProperties(net.getProperties());
out.addSubSection("NETWORK");
out.writeProperty(BasicNetwork.TAG_BEGIN_TRAINING,
flat.getBeginTraining());
out.writeProperty(BasicNetwork.TAG_CONNECTION_LIMIT,
flat.getConnectionLimit());
out.writeProperty(BasicNetwork.TAG_CONTEXT_TARGET_OFFSET,
flat.getContextTargetOffset());
out.writeProperty(BasicNetwork.TAG_CONTEXT_TARGET_SIZE,
flat.getContextTargetSize());
out.writeProperty(BasicNetwork.TAG_END_TRAINING, flat.getEndTraining());
out.writeProperty(BasicNetwork.TAG_HAS_CONTEXT, flat.getHasContext());
out.writeProperty(PersistConst.INPUT_COUNT, flat.getInputCount());
out.writeProperty(BasicNetwork.TAG_LAYER_COUNTS, flat.getLayerCounts());
out.writeProperty(BasicNetwork.TAG_LAYER_FEED_COUNTS,
flat.getLayerFeedCounts());
out.writeProperty(BasicNetwork.TAG_LAYER_CONTEXT_COUNT,
flat.getLayerContextCount());
out.writeProperty(BasicNetwork.TAG_LAYER_INDEX, flat.getLayerIndex());
out.writeProperty(PersistConst.OUTPUT, flat.getLayerOutput());
out.writeProperty(PersistConst.OUTPUT_COUNT, flat.getOutputCount());
out.writeProperty(BasicNetwork.TAG_WEIGHT_INDEX, flat.getWeightIndex());
out.writeProperty(PersistConst.WEIGHTS, flat.getWeights());
out.writeProperty(BasicNetwork.TAG_BIAS_ACTIVATION,
flat.getBiasActivation());
out.addSubSection("ACTIVATION");
for (final ActivationFunction af : flat.getActivationFunctions()) {
out.addColumn(af.getClass().getSimpleName());
for (int i = 0; i < af.getParams().length; i++) {
out.addColumn(af.getParams()[i]);
}
out.writeLine();
}
out.addSubSection("RBF");
for (final RadialBasisFunction rbf : flat.getRBF()) {
out.addColumn(rbf.getClass().getSimpleName());
out.addColumn(rbf.getWidth());
out.addColumn(rbf.getPeak());
for (int i = 0; i < rbf.getCenters().length; i++) {
out.addColumn(rbf.getCenters()[i]);
}
out.writeLine();
}
out.flush();
}