iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 25
0

在上一篇我們已經把需要的檔案都匯入了,再來就是宣告需要的全域變數

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
imgur


上一篇
[Day 24] 使用Tensorflow library(一)
下一篇
[Day 26] 介紹Tensorflow Lite
系列文
如何使用tensorflow在android上30

尚未有邦友留言

立即登入留言