ML.NET формирует вектор, преобразованный из изображения для использования в предварительно обученной модели Tensorflow - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь использовать предварительно обученную модель Tensorflow в ML.NET. Я загружаю изображения и применяю преобразование в следующем конвейере:

var pipeline = mlContext.Transforms.LoadImages(outputColumnName: "ImageObject", imageFolder: imagesFolder, inputColumnName: nameof(ImageNetData.ImagePath))
    .Append(mlContext.Transforms.ResizeImages(outputColumnName: "ImageObjectResized", imageWidth: 256, imageHeight: 160, inputColumnName: "ImageObject"))
    .Append(mlContext.Transforms.ExtractPixels(outputColumnName: "batch_normalization_input", inputColumnName: "ImageObjectResized"))
    .Append(mlContext.Model.LoadTensorFlowModel(modelLocation).
        ScoreTensorFlowModel(outputColumnNames: new[] { InceptionSettings.outputTensorName },
        inputColumnNames: new[] { InceptionSettings.inputTensorName }, addBatchDimensionInput: true));

Модель загружается нормально, но когда япопытаться предсказать модель:

var probs = model.Predict(sample).PredictedLabels;

Я получаю следующую ошибку:

input must be 4-dimensional[1,1,160,256,3]
         [[{{node batch_normalization/cond/FusedBatchNormV3_1}}]]

Я могу визуализировать вектор "batch_normalization_input" и, кажется, {Плотный вектор размера122880} так что, похоже, он обладает всей необходимой информацией (умножьте 160 * 256 * 3), но я не знаю, как получить реальную форму вектора или заставить ее получить желаемую форму [1, 1,160,256,3].

Спасибо

...