CNN для анализа настроений с использованием модели TFLearn для Android для классификации пользовательского ввода - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть модель 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 играют определенную роль в этом.

1 Ответ

0 голосов
/ 17 сентября 2018

Проблема была с парнями модели. Я исправил это, и теперь я застрял на другой ошибке.

...