TensorflowSharp и модель из концентратора без ввода - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь перенести код python на TensorflowSharp. Он загружает сохраненную модель TF2 из здесь , которая получает векторные векторы изображений. Python код:

# This is required for the mobilenet model we are using
img  = tf.image.convert_image_dtype(img, tf.float32)[tf.newaxis, ...]

module = tf.saved_model.load(path)
# Calculate the image feature vector of the img
features = module(img)

Мой код C# выглядит иначе, и у меня нет функции «модуль», которая делает это автоматически. Я получаю NullReferenceException здесь: graph ["input"] [0]

TFGraph graph = new TFGraph();
TFTensor tensor;
tensor = TFTensor.CreateString(File.ReadAllBytes(filepath));

TFOutput input, output;
var tfSessionOptions = new TFSessionOptions();
var metaGraphUnused = new TFBuffer();
var session = TFSession.FromSavedModel(tfSessionOptions, null, dir, new[] { "serve" }, graph, metaGraphUnused);

ConstructGraphToNormalizeImage(out graph, out input, out output, 96, 96, 3);

// Execute that graph to normalize this one image
using (var session2 = new TFSession(graph))
{
    var normalized = session2.Run(
        inputs: new[] { input },
        inputValues: new[] { tensor },
        outputs: new[] { output });

    tensor = normalized[0];
}


var runner = session.GetRunner();
runner.AddInput(graph["input"][0], tensor);
runner.Fetch(graph["output"][0]);

// Run the model
var res_output = runner.Run();
var nums = (float[])res_output[0].GetValue(jagged: false);

Модель, похоже, не имеет ввода и выглядит иначе, чем образцы моделей из учебных пособий. Что я должен сделать, чтобы иметь возможность использовать его? Как найти названия входных и выходных тензоров?

Визуализация модели с Netron

Заранее спасибо.

...