概要
androidでtensorflowやってみた。
api17でtensorflowアプリ作って見た。
101から128までの偶数、奇数を学習して、1から99を推定する。
学習は、windowsで。
写真
環境
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;
}
以上