in mlmodel/src/Validation/NeuralNetwork/NeuralNetworkValidator.cpp [38:337]
Result NeuralNetworkSpecValidator::validateLayer(const Specification::NeuralNetworkLayer& layer) {
switch(layer.layer_case()) {
case Specification::NeuralNetworkLayer::LayerCase::kConvolution:
return validateConvolutionLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kConvolution3D:
return validateConvolution3DLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kInnerProduct:
return validateInnerProductLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kBatchnorm:
return validateBatchnormLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kActivation:
return validateActivation(layer);
case Specification::NeuralNetworkLayer::LayerCase::kPooling:
return validatePoolingLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kPooling3D:
return validatePooling3dLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kGlobalPooling3D:
return validateGlobalPooling3dLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kPadding:
return validatePaddingLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kConcat:
return validateConcatLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kLrn:
return validateLRNLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kSoftmax:
return validateSoftmaxLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kSplit:
return validateSplitLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kAdd:
return validateAddLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kMultiply:
return validateMultiplyLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kUnary:
return validateUnaryFunctionLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kUpsample:
return validateUpsampleLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kBias:
return validateBiasLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kL2Normalize:
return validateL2NormLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReshape:
return validateReshapeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kFlatten:
return validateFlattenLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kPermute:
return validatePermuteLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReduce:
return validateReduceLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kLoadConstant:
return validateLoadConstantLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kScale:
return validateScaleLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kSimpleRecurrent:
return validateSimpleRecurrentLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kGru:
return validateGRULayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kUniDirectionalLSTM:
return validateUniDirectionalLSTMLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kBiDirectionalLSTM:
return validateBiDirectionalLSTMLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kCrop:
return validateCropLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kAverage:
return validateAverageLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kMax:
return validateMaxLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kMin:
return validateMinLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kDot:
return validateDotLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kMvn:
return validateMvnLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kEmbedding:
return validateEmbeddingLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kSequenceRepeat:
return validateSequenceRepeatLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReorganizeData:
return validateReorganizeDataLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kSlice:
return validateSliceLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kCustom:
return validateCustomLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kResizeBilinear:
return validateResizeBilinearLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kCropResize:
return validateCropResizeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kTranspose:
return validateTransposeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kBranch:
return validateBranchLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kCopy:
return validateCopyLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kBatchedMatmul:
return validateBatchedMatmulLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kConcatND:
return validateConcatNDLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kSoftmaxND:
return validateSoftmaxNDLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReverse:
return validateReverseLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kFillLike:
return validateFillLikeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kFillStatic:
return validateFillStaticLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kFillDynamic:
return validateFillDynamicLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kWhereBroadcastable:
return validateWhereLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kSin:
case Specification::NeuralNetworkLayer::LayerCase::kCos:
case Specification::NeuralNetworkLayer::LayerCase::kTan:
case Specification::NeuralNetworkLayer::LayerCase::kAsin:
case Specification::NeuralNetworkLayer::LayerCase::kAcos:
case Specification::NeuralNetworkLayer::LayerCase::kAtan:
case Specification::NeuralNetworkLayer::LayerCase::kSinh:
case Specification::NeuralNetworkLayer::LayerCase::kCosh:
case Specification::NeuralNetworkLayer::LayerCase::kTanh:
case Specification::NeuralNetworkLayer::LayerCase::kAsinh:
case Specification::NeuralNetworkLayer::LayerCase::kAcosh:
case Specification::NeuralNetworkLayer::LayerCase::kAtanh:
return validateTrigonometryLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kExp2:
return validateExp2Layer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kMatrixBandPart:
return validateMatrixBandPartLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kUpperTriangular:
return validateUpperTriangularLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kLowerTriangular:
return validateLowerTriangularLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kPowBroadcastable:
return validatePowBroadcastableLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kGreaterThan:
case CoreML::Specification::NeuralNetworkLayer::kGreaterEqual:
case CoreML::Specification::NeuralNetworkLayer::kLessEqual:
case CoreML::Specification::NeuralNetworkLayer::kLessThan:
case CoreML::Specification::NeuralNetworkLayer::kEqual:
case CoreML::Specification::NeuralNetworkLayer::kNotEqual:
case CoreML::Specification::NeuralNetworkLayer::kLogicalAnd:
case CoreML::Specification::NeuralNetworkLayer::kLogicalOr:
case CoreML::Specification::NeuralNetworkLayer::kLogicalXor:
case CoreML::Specification::NeuralNetworkLayer::kLogicalNot:
return validateBooleanElementwiseLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kLoop:
return validateLoopLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kLoopContinue:
case CoreML::Specification::NeuralNetworkLayer::kLoopBreak:
return validateLoopContinueBreakLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kErf:
case CoreML::Specification::NeuralNetworkLayer::kGelu:
case CoreML::Specification::NeuralNetworkLayer::kClampedReLU:
return validateActivationLayers(layer);
case CoreML::Specification::NeuralNetworkLayer::kRankPreservingReshape:
return validateRankPreservingReshapeLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kExpandDims:
return validateExpandDimsLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kFlattenTo2D:
return validateFlattenTo2DLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReshapeLike:
return validateReshapeLikeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReshapeStatic:
return validateReshapeStaticLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReshapeDynamic:
return validateReshapeDynamicLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kSqueeze:
return validateSqueezeLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kBroadcastToLike:
return validateBroadcastToLikeLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kBroadcastToStatic:
return validateBroadcastToStaticLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kBroadcastToDynamic:
return validateBroadcastToDynamicLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kAddBroadcastable:
return validateAddBroadcastableLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kSubtractBroadcastable:
return validateSubtractBroadcastableLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kMultiplyBroadcastable:
return validateMultiplyBroadcastableLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kDivideBroadcastable:
return validateDivideBroadcastableLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kMaxBroadcastable:
return validateMaxBroadcastableLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kMinBroadcastable:
return validateMinBroadcastableLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kFloorDivBroadcastable:
return validateFloorDivBroadcastableLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kModBroadcastable:
return validateModBroadcastableLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kGather:
return validateGatherLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kScatter:
return validateScatterLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kGatherND:
return validateGatherNDLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kScatterND:
return validateScatterNDLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kGatherAlongAxis:
return validateGatherAlongAxisLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kScatterAlongAxis:
return validateScatterAlongAxisLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kWhereNonZero:
return validateWhereNonZeroLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kStack:
return validateStackLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kSplitND:
return validateSplitNDLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kLoadConstantND:
return validateLoadConstantNDLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kCeil:
return validateCeilLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kFloor:
return validateFloorLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kRound:
return validateRoundLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kSign:
return validateSignLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kClip:
return validateClipLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kSliceStatic:
return validateSliceStaticLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kSliceDynamic:
return validateSliceDynamicLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kGetShape:
return validateGetShapeLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kTile:
return validateTileLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kRangeStatic:
return validateRangeStaticLayer(layer);
case CoreML::Specification::NeuralNetworkLayer::kRangeDynamic:
return validateRangeDynamicLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kEmbeddingND:
return validateEmbeddingNDLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kSlidingWindows:
return validateSlidingWindowsLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kRandomNormalLike:
return validateRandomNormalLikeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kRandomNormalStatic:
return validateRandomNormalStaticLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kRandomNormalDynamic:
return validateRandomNormalDynamicLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kRandomUniformLike:
return validateRandomUniformLikeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kRandomUniformStatic:
return validateRandomUniformStaticLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kRandomUniformDynamic:
return validateRandomUniformDynamicLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kRandomBernoulliLike:
return validateRandomBernoulliLikeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kRandomBernoulliStatic:
return validateRandomBernoulliStaticLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kRandomBernoulliDynamic:
return validateRandomBernoulliDynamicLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kTopK:
return validateTopKLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kArgMax:
return validateArgMaxLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kArgMin:
return validateArgMinLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kCategoricalDistribution:
return validateCategoricalDistributionLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReduceL1:
return validateReductionTypeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReduceL2:
return validateReductionTypeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReduceMax:
return validateReductionTypeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReduceMin:
return validateReductionTypeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReduceSum:
return validateReductionTypeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReduceProd:
return validateReductionTypeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReduceMean:
return validateReductionTypeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReduceLogSum:
return validateReductionTypeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReduceSumSquare:
return validateReductionTypeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReduceLogSumExp:
return validateReductionTypeLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kReverseSeq:
return validateReverseSeqLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kLayerNormalization:
return validateLayerNormalizationLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kConstantPad:
return validateConstantPadLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kNonMaximumSuppression:
return validateNMSLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kOneHot:
return validateOneHotLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kCumSum:
return validateCumSumLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kArgSort:
return validateArgsortLayer(layer);
case Specification::NeuralNetworkLayer::LayerCase::kSliceBySize:
return validateSliceBySizeLayer(layer);
default:
return validateFailUnknownType(layer);
}
}