Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }