package org.deeplearning4j.nn.conf.serde;
import org.deeplearning4j.nn.conf.MultiLayerConfiguration;
import org.deeplearning4j.nn.conf.layers.Layer;
import org.nd4j.shade.jackson.core.JsonParser;
import org.nd4j.shade.jackson.core.JsonProcessingException;
import org.nd4j.shade.jackson.databind.DeserializationContext;
import org.nd4j.shade.jackson.databind.JsonDeserializer;
import java.io.IOException;
public class MultiLayerConfigurationDeserializer extends BaseNetConfigDeserializer<MultiLayerConfiguration> {
public MultiLayerConfigurationDeserializer(JsonDeserializer<?> defaultDeserializer) {
super(defaultDeserializer, MultiLayerConfiguration.class);
}
@Override
public MultiLayerConfiguration deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
MultiLayerConfiguration conf = (MultiLayerConfiguration)defaultDeserializer.deserialize(jp, ctxt);
//Updater configuration changed after 0.8.0 release
//Previously: enumerations and fields. Now: classes
//Here, we manually create the appropriate Updater instances, if the IUpdater field is empty
Layer[] layers = new Layer[conf.getConfs().size()];
for( int i=0; i<layers.length; i++ ){
layers[i] = conf.getConf(i).getLayer();
}
handleUpdaterBackwardCompatibility(layers);
return conf;
}
}