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;
}
}