コード例 #1
0
        public static Type GetLayerInfoType(this LayerDiscriminator discriminator)
        {
            switch (discriminator)
            {
            case LayerDiscriminator.ActivationLayerInfo:
                return(typeof(ActivationLayerInfo));

            case LayerDiscriminator.ConvolutionLayerInfo:
                return(typeof(ConvolutionLayerInfo));

            case LayerDiscriminator.PaddingLayerInfo:
                return(typeof(PaddingLayerInfo));

            case LayerDiscriminator.ParameterizedLayerInfo:
                return(typeof(ParameterizedLayerInfo));

            case LayerDiscriminator.PoolingLayerInfo:
                return(typeof(PoolingLayerInfo));

            default: return(typeof(LayerInfo));
            }
        }
コード例 #2
0
        public override LayerInfo Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            if (reader.TokenType != JsonTokenType.StartObject)
            {
                throw new JsonException();
            }
            if (!reader.Read() || reader.TokenType != JsonTokenType.PropertyName || reader.GetString() != nameof(LayerDiscriminator))
            {
                throw new JsonException();
            }
            if (!reader.Read() || reader.TokenType != JsonTokenType.Number)
            {
                throw new JsonException();
            }

            LayerDiscriminator layerDiscriminator = (LayerDiscriminator)reader.GetInt32();

            if (!reader.Read() || reader.GetString() != "LayerData")
            {
                throw new JsonException();
            }
            if (!reader.Read() || reader.TokenType != JsonTokenType.StartObject)
            {
                throw new JsonException();
            }

            var type      = layerDiscriminator.GetLayerInfoType();
            var layerInfo = (LayerInfo)JsonSerializer.Deserialize(ref reader, type);

            if (!reader.Read() || reader.TokenType != JsonTokenType.EndObject)
            {
                throw new JsonException();
            }

            return(layerInfo);
        }