Попытка использовать неинициализированное значение - не удалось сделать прогноз, используя тензор потока - PullRequest
0 голосов
/ 12 октября 2018

Контекст: Я создал и обучил модель, которая может обнаруживать дефекты на продуктах.Модель обучается с использованием Keras и сохраняется на диск в виде файла .h5.Поскольку текущая система обнаружения дефектов написана с использованием .NET, я преобразовал модель .h5 в формат .pb и для ее загрузки использовал тензор потока (TFS).

Код:

var resourceFolder = "Dataset/Robot";
var tfGraph = new TFGraph();
using (var tmpSess = new TFSession(tfGraph))
using (var tfSessionOptions = new TFSessionOptions())
using (var metaGraphUnused = new TFBuffer())
{
    tmpSess.FromSavedModel(tfSessionOptions, null, resourceFolder, new[] {"serve"}, tfGraph, metaGraphUnused);
    var runner = tmpSess.GetRunner();
    var tfTensor = CreateTensor(dataset);
    runner.AddInput(tfGraph["input_1"][0], tfTensor).Fetch(tfGraph["conv2d_23/BiasAdd"][0]);
    var output = runner.Run();
}

Проблема : TFS выдает следующее исключение, когда я делаю прогноз (var output = runner.Run();): Attempting to use uninitialized value {X}. X изменяется всякий раз, когда я перезапускаю программу.Вот некоторые значения X:

  • conv2d_21 / kernel [[Узел: conv2d_21 / kernel / read = IdentityT = DT_FLOAT, _device = "/ job: localhost / replica: 0 / task: 0 / device:CPU: 0 "]]
  • batch_normalization_22 / moving_variance [[Узел: batch_normalization_22 / moving_variance / read = Identity [T = DT_FLOAT, _class = [" loc: @ batch_normalization_22 / cond / FusedBatchNorm / Switch_4 "], *)1019 *
  • conv2d_23 / bias [[Узел: conv2d_23 / bias / read = IdentityT = DT_FLOAT, _device = "/ job: localhost / replica: 0 / task: 0 / device: CPU: 0"]]

Желаемое поведение: Нет исключений

Что было сделано до сих пор:

...