在上一篇我們已經把需要的檔案都匯入了,再來就是宣告需要的全域變數
private EditText editTextOne;
private EditText editTextTwo;
private EditText editTextThree;
private TextView textOne;
private TextView textTwo;
然後再把他們對應起來,以及設定按鈕的onclick事件
editTextOne=findViewById(R.id.edittext_one);
editTextTwo=findViewById(R.id.edittext_two);
editTextThree=findViewById(R.id.edittext_three);
textOne=findViewById(R.id.text1);
textTwo=findViewById(R.id.text2);
findViewById(R.id.button).setOnClickListener(this);
不過同時也要實作onClick事件
public class MainActivity extends AppCompatActivity implements View.OnClickListener
然後就是tensorflow的部份,先宣告tensorflow的介面,並且讓它對應到assets的model
private TensorFlowInferenceInterface inferenceInterface;
inferenceInterface = new TensorFlowInferenceInterface(getAssets(),MODEL_FILE);
接著就是輸入的部份,抓取3個輸入值,一開始在py檔的時候,有把input的節點命名為I,然後輸入是1*3
float num1 =Float.valueOf(editTextOne.getText().toString());
float num2 =Float.valueOf(editTextTwo.getText().toString());
float num3 =Float.valueOf(editTextThree.getText().toString());
float[] inputFloats = {num1,num2,num3};
final String INPUT_NODE = "I";
inferenceInterface.feed(INPUT_NODE,inputFloats,1,3);
之後我們再宣告一個陣列來接值,當時是把output的節點命名為O,然後就可以運行,再把輸出直接出來進行顯示
float[] result = new float[2];
final String OUTPUT_NODE = "O";
inferenceInterface.run(new String[]{OUTPUT_NODE});
inferenceInterface.fetch(OUTPUT_NODE,result);
textOne.setText(String.valueOf(result[0]));
textTwo.setText(String.valueOf(result[1]));
先來驗證第一個輸出(1*1+2*3+3*5+1)=23
再來驗證第二個輸出(1*2+2*4+3*6+2)=30