Контекст: Я создал и обучил модель, которая может обнаруживать дефекты на продуктах.Модель обучается с использованием 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"]]
Желаемое поведение: Нет исключений
Что было сделано до сих пор: