Ошибка при использовании пользовательской модели в TensorFlow Android Camera Demo

Я обучил модель с input_shape=[125,100,100,1]предсказать 8 поплавков. Я изменил эти параметры на демо, чтобы соответствовать настройкам моей модели.

Затем я добавил еще один параметр к размеру пакета

private static final int BATCH_SIZE = 125;

На стороне C++ я напечатал некоторую отладочную информацию, чтобы увидеть форму моих тензоров:

LOG (INFO)  << "input node: "  << input_tensors[0].first << ", "
          << "input shape: " << input_tensors[0].second.shape().DebugString();

tensorflow_inference_jni.cc:198 входной узел: input_node, input shape:
[125,100,100,1]

Но приложение аварийно завершает работу только при вызове vars->session->Run()функции

A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 16574 (InferenceThread)

Теперь, если я установил BATCH_SIZE = 1(всегда работая с моделью, обученной с размером пакета 125), приложение не аварийно завершает работу, но возвращает эту ошибку:

E/native: tensorflow_inference_jni.cc:213 Error during inference: Invalid argument: Input to reshape is a tensor with 8 values, but the requested shape has 1000
[[Node: output_node = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"](fullyconnected2_1/BiasAdd, output_node/shape)]]

Запрашиваемая форма 1000 в этой ошибке является num_output * batch_size I guess (8 * 125).

Введите описание изображения здесь

я что-то пропустил ?

1 ответ

  1. Я жестко закодировал размер партии на тренировке, поэтому мне пришлось кормить модель тензорами формы [125,100,100,1]. Это немного слишком много для мобильного телефона, поэтому Android решает убить приложение.

    Отлично работает, когда я переподготовил модель с batch_size = 1