Java CNN用于情绪分析,使用Android的TFLearn模型对用户输入进行分类

Java CNN用于情绪分析,使用Android的TFLearn模型对用户输入进行分类,java,android,tensorflow,tflearn,Java,Android,Tensorflow,Tflearn,我有一个用于文本分类的CNN模型,它使用预先训练的手套嵌入。我已经冻结了为推理而优化的图形,并在android studio上使用它。问题是当我试图将权重传递到模型中进行推理时。我有一个JSON文件,其中包含单词和嵌入之间的键值对,我使用它从用户键入的文本中创建嵌入输入。我已经可以从JSON文件中获取嵌入,但当我尝试将其输入到图形中进行推断时,会出现以下错误: java.lang.IllegalArgumentException: indices[0,3891] = -2 is not in [

我有一个用于文本分类的CNN模型,它使用预先训练的手套嵌入。我已经冻结了为推理而优化的图形,并在android studio上使用它。问题是当我试图将权重传递到模型中进行推理时。我有一个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"] 
嵌入层/W/读取,嵌入层/Cast]]

Android代码在我的GitHub中

给我带来问题的主要代码是分类方法:

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”表示嵌入层的输入维度


我真的很困惑这里发生了什么,但我知道指数[03891]=-2在其中起了一定作用

问题出在模特儿身上。我已经解决了这个问题,现在我又陷入了另一个错误