我试图将格式为”.pb”的TensorFlow SSD Inception v2模型加载到ML.NET中,但一直收到以下“形状不匹配”错误:
System.InvalidOperationException: 'Input shape mismatch: Input 'image_tensor' has shape (-1, -1, -1, 3), but input data is of length 691200.'
我使用以下代码加载模型:
var pipeline = _mlContext.Transforms.ResizeImages(resizing: ImageResizingEstimator.ResizingKind.Fill, outputColumnName: "data", imageWidth: 640, imageHeight: 360, inputColumnName: nameof(ImageInputData.Image)) .Append(_mlContext.Transforms.ExtractPixels(outputColumnName: "image_tensor", inputColumnName: "data", outputAsFloatArray: false)) .Append(_mlContext.Model.LoadTensorFlowModel(tfModelFilePath) .ScoreTensorFlowModel( outputColumnNames: InputImageSettings.OutputNodes, inputColumnNames: InputImageSettings.InputNodes, addBatchDimensionInput: false)); var emptyData = new List<ImageInputData>(); var data = _mlContext.Data.LoadFromEnumerable(emptyData); ITransformer mlModel = pipeline.Fit(data);
错误消息说明了什么?它在比较数据形状和数据长度。这有什么相关性吗?
回答:
原来这是由ML.NET中的一个错误引起的(参见此问题)。该包的下一个版本将修复此问题。