void NeuralNetworkShaper::ProcessLayer()

in mlmodel/src/Validation/NeuralNetwork/NeuralNetworkShapes.cpp [1696:1823]


void NeuralNetworkShaper::ProcessLayer(const Specification::NeuralNetworkLayer& layer) {

    switch(layer.layer_case()) {
        case Specification::NeuralNetworkLayer::kConvolution:
            shapeConvolutionLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kPooling:
            shapePoolingLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kActivation:
            shapeUnchanged(layer);
            break;
        case Specification::NeuralNetworkLayer::kInnerProduct:
            shapeInnerProductLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kEmbedding:
            shapeEmbeddingLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kBatchnorm:
            shapeUnchanged(layer);
            break;
        case Specification::NeuralNetworkLayer::kMvn:
            shapeUnchanged(layer);
            break;
        case Specification::NeuralNetworkLayer::kL2Normalize:
            shapeUnchanged(layer);
            break;
        case Specification::NeuralNetworkLayer::kSoftmax:
            shapeUnchanged(layer);
            break;
        case Specification::NeuralNetworkLayer::kLrn:
            shapeUnchanged(layer);
            break;
        case Specification::NeuralNetworkLayer::kCrop:
            shapeCropLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kPadding:
            shapePaddingLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kUpsample:
            shapeUpsampleLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kUnary:
            shapeUnchanged(layer);
            break;
        case Specification::NeuralNetworkLayer::kAdd:
            shapeBroadcastLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kMultiply:
            shapeBroadcastLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kAverage:
            shapeBroadcastLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kScale:
            shapeUnchanged(layer);
            break;
        case Specification::NeuralNetworkLayer::kBias:
            shapeUnchanged(layer);
            break;
        case Specification::NeuralNetworkLayer::kMax:
            shapeUnchanged(layer);
            break;
        case Specification::NeuralNetworkLayer::kMin:
            shapeUnchanged(layer);
            break;
        case Specification::NeuralNetworkLayer::kDot:
            shapeDotLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kReduce:
            shapeReduceLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kLoadConstant:
            shapeLoadConstantLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kReshape:
            shapeReshapeLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kFlatten:
            shapeFlattenLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kPermute:
            shapePermuteLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kConcat:
            shapeConcatLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kSplit:
            shapeSplitLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kSequenceRepeat:
            shapeSequenceRepeatLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kReorganizeData:
            shapeReorganizeDataLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kSlice:
            shapeSliceLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kSimpleRecurrent:
            shapeSimpleRecurrentLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kGru:
            shapeGRULayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kUniDirectionalLSTM:
            shapeUnidirectionalLSTMLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kBiDirectionalLSTM:
            shapeBidirectionalLSTMLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kCustom:
            shapeCustomLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kResizeBilinear:
            shapeResizeBilinearLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::kCropResize:
            shapeCropResizeLayer(layer);
            break;
        case Specification::NeuralNetworkLayer::LAYER_NOT_SET:
            throw std::runtime_error("Layer type not found.");
            break;
        default:
            throw std::runtime_error("Shape inference not implemented for this layer type.");
            break;
    }
}