LoginSignup
0
1

More than 5 years have passed since last update.

androidでTensorFlow その3

Last updated at Posted at 2017-05-19

概要

androidでtensorflowやってみた。
api17でtensorflowアプリ作って見た。
101から128までの偶数、奇数を学習して、1から99を推定する。
学習は、windowsで。

写真

device-2017-05-19-101721.png

環境

windows 7
ADT v22.6
android 4.2.2 api17

ダウンロード

libtensorflow_inference.so
tensorflow java
githubから、以上を落とす。

プロジェクトに配置

libtensorflow_inference.so
libsに置く
tensorflow java
srcに置く

tensorflowで学習する。(windowsで実行)

inputは、{0,0,0,0,0,1,1}の形で101から128。
分類は、{0,1}と{1,0}
inputに、inputとnameつける。
predictに、outputとnameつける。
20回も、学習したらロス1.0になった。

0 0.518518518519
10 0.518518518519
20 1.0

tf.train.write_graphでモデルデータを保存する。
odd.pd(たった1kb)

tensorflowで確認する。(windowsで実行)

tf.import_graph_defでモデルデータ読み込む。
inputに、1から99まで、食わせて、outputをoddとevenで表示。

['  1:odd ' '  2:even' '  3:odd ' '  4:even' '  5:odd ' '  6:even'
 '  7:odd ' '  8:even' '  9:odd ' ' 10:even' ' 11:odd ' ' 12:even'
 ' 13:odd ' ' 14:even' ' 15:odd ' ' 16:even' ' 17:odd ' ' 18:even'
 ' 19:odd ' ' 20:even' ' 21:odd ' ' 22:even' ' 23:odd ' ' 24:even'
 ' 25:odd ' ' 26:even' ' 27:odd ' ' 28:even' ' 29:odd ' ' 30:even'
 ' 31:odd ' ' 32:even' ' 33:odd ' ' 34:even' ' 35:odd ' ' 36:even'
 ' 37:odd ' ' 38:even' ' 39:odd ' ' 40:even' ' 41:odd ' ' 42:even'
 ' 43:odd ' ' 44:even' ' 45:odd ' ' 46:even' ' 47:odd ' ' 48:even'
 ' 49:odd ' ' 50:even' ' 51:odd ' ' 52:even' ' 53:odd ' ' 54:even'
 ' 55:odd ' ' 56:even' ' 57:odd ' ' 58:even' ' 59:odd ' ' 60:even'
 ' 61:odd ' ' 62:even' ' 63:odd ' ' 64:even' ' 65:odd ' ' 66:even'
 ' 67:odd ' ' 68:even' ' 69:odd ' ' 70:even' ' 71:odd ' ' 72:even'
 ' 73:odd ' ' 74:even' ' 75:odd ' ' 76:even' ' 77:odd ' ' 78:even'
 ' 79:odd ' ' 80:even' ' 81:odd ' ' 82:even' ' 83:odd ' ' 84:even'
 ' 85:odd ' ' 86:even' ' 87:odd ' ' 88:even' ' 89:odd ' ' 90:even'
 ' 91:odd ' ' 92:even' ' 93:odd ' ' 94:even' ' 95:odd ' ' 96:even'
 ' 97:odd ' ' 98:even' ' 99:odd ' '100:even']

androidで実行。

assetsに、odd.pdを置く。
odd.pdをtensorflowに読み込む。
input:0に、1から99まで、食わせて、output:0をoddとevenで表示。
output:0が、INT64とでたので、byte[]で読み込んで解釈した。

inputの部分

public static float[] toary(int x) {
    float [] a = {0, 0, 0, 0, 0, 0, 0};
    int i;
    for (i = 0; i < 7; i++)
    {
        if (x % 2 == 1)
        {
            a[i] = 1;
        }
        x = x >> 1;
    }
    return a;
}

以上

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1