private MyAbstractFBLayer BuildNetworkLayerMirrorPool(XmlNode layerItem) { MyPoolLayer originalLayer = null; bool layerMissing = true; // Parse foreach (XmlAttribute layerAttribute in layerItem.Attributes) { switch (layerAttribute.Name) { case "original": originalLayer = GetLayerById <MyPoolLayer>(layerAttribute.Value); layerMissing = false; break; default: throw new MyXMLBuilderException("Unknown attribute: " + layerAttribute.Name); } } // Validate values if (layerMissing) { throw new MyXMLBuilderException("Missing original layer id"); } // Success! MyAbstractFBLayer layer = new MyMirrorPoolLayer(m_network, originalLayer); m_network.AddLayer(layer); return(layer); }
private MyAbstractFBLayer BuildNetworkLayerPool(XmlNode layerItem) { uint stride = 0; MyPoolLayer.MyPoolRule rule = MyPoolLayer.MyPoolRule.MAX; bool strideMissing = true; bool ruleMissing = true; // Parse foreach (XmlAttribute layerAttribute in layerItem.Attributes) { switch (layerAttribute.Name) { case "stride": stride = uint.Parse(layerAttribute.Value); strideMissing = false; break; case "rule": switch (layerAttribute.Value) { case "max": rule = MyPoolLayer.MyPoolRule.MAX; ruleMissing = false; break; case "average": rule = MyPoolLayer.MyPoolRule.AVERAGE; ruleMissing = false; break; default: throw new MyXMLBuilderException("Unknown pooling rule: " + layerAttribute.Value); } break; default: throw new MyXMLBuilderException("Unknown attribute: " + layerAttribute.Name); } } // Validate values if (strideMissing) { throw new MyXMLBuilderException("Missing stride parameter"); } if (ruleMissing) { throw new MyXMLBuilderException("Missing rule parameter"); } if (stride <= 0) { throw new MyXMLBuilderException("Stride must be positive"); } // Success! MyAbstractFBLayer layer = new MyPoolLayer(m_network, stride, rule); m_network.AddLayer(layer); return(layer); }