У меня есть модель CNN для классификации текста, в которой используется предварительно обученное вложение перчатки.Я заморозил этот график, оптимизированный для вывода и использования его на андроид студии.Проблема в том, что я пытаюсь передать весовые коэффициенты в модель для вывода.У меня есть JSON-файл с парами ключ-значение между словами и вложением, который я использую для создания ввода вложений из текста, который вводит пользователь. Я уже могу получить вложения из файла JSON, но когда я пытаюсьподать его в график для вывода, это дает мне следующую ошибку:
java.lang.IllegalArgumentException: indices[0,3891] = -2 is not in [0,
7459)
[[Node: EmbeddingLayer/embedding_lookup = Gather[Tindices=DT_INT32,
Tparams=DT_FLOAT, _class=["loc:@EmbeddingLayer/W"],
validate_indices=false,
_device="/job:localhost/replica:0/task:0/device:CPU:0"]
(EmbeddingLayer / W / read, EmbeddingLayer / Cast)]]
Код Android находится в моем GitHubhttps://github.com/sushiboo/testNN1
Основным кодом, который вызывает у меня проблему, является метод классификации:
private void classify(float[] input){
TFInference = new TensorFlowInferenceInterface(getAssets(), MODEL_FILE);
TFInference.feed(INPUT_NODE, input, 1, input.length);
TFInference.run(OUTPUT_NODES);
float[] resu = new float[2];
TFInference.fetch(OUTPUT_NODE, resu);
tvResult.setText("Programmer: " + Float.toString(resu[0]) + "\n Construction" + Float.toString(resu[1]));
Log.e("Result: ", Float.toString(resu[0]));
}
Проблема в
TFInference.run(OUTPUT_NODES);
В сообщении об ошибкечисло «7459» представляет входной размер слоя внедрения.
Я действительно смущен тем, что здесь происходит, но я знаю, что индексы [0,3891] = -2 играют определенную роль в этом.