IoTセンサー値から、tensorFlowを使った予測値の GoogleHome読み上げ機能を前回公開しましたが、
定期的に、最新のtensorFlow結果を更新する為に
機械学習の演算処理や、server更新処理を Lan上の機械学習serverで行っていましたので
python server実装あたりの内容となります。
# 予定している構成
前回と同じ構成、機械学習処理は、
web-APIを使って
IoTから更新されるセンサー値を読み込み
tensorFlow結果を更新する処理を追加しています。
*) ボードPC(nano Pi NEO 51MB)に、機能を追加
python 2.7
# Linux version
>uname -
Linux NanoPi-NEO 4.11.2 #266 SMP Thu Jun 29 17:46:10 CST 2017 armv7l armv7l armv7l GNU/Linux
# code ,python 2.7 、 一部分ですが。
main 処理
tensorFlow処理、実績取得/更新の呼出など。 定期実行
*) 下記の cronに変更しています。
rasPi/BLE serverと同様に、起動処理を追加。
参考 の設定方法:
http://knaka0209.blogspot.jp/2017/07/raspi-6-BLE.html
### update :2018/01/19
常駐サービスの連続稼動テストした結果
tensorFlow 1.1で、メモリーリークが見られましたので、
cron起動に一旦変更しています。
*)最新 tensorflow -version は、対策されているかもです。
(nanoPi /rasPi インストール不可能みたいですが)
調整方法は、変数をdel 処理と、gc呼出で。
メモリ領域の削除で対応予定していたのですが、
なかなか消費メモリ量が減らず。。 cronに変えています
この変更のデメリットは、1サイクルの実行終了前に、次の実行処理が
二重に起動される可能性がありますので、起動間隔をあけておく必要があります。
設定例:
cron設定の確認
> sudo crontab -l
cron設定 (nanoで設定しました。)
> sudo crontab -e
例ですが、下記を追加しました。毎時10分に起動した場合です。
10 * * * * /usr/bin/python /home/pi/work/tensorflow/yosoku_update/yosoku_update_one.py
*)上記の呼出コードも、修正しています。
cronから呼ばれ
ループ無しの、単発実行 => 終了になります。
# 関連、
tensorFlow/機械学習 関連まとめ
http://knaka0209.blogspot.jp/2018/01/tensorflow-matome.html
*)IoT側はBLE使用しています
device:
http://knaka0209.blogspot.jp/2017/09/RN4020-4.html
nano Pi gateway:
http://knaka0209.blogspot.jp/2017/07/nanoPi-2.html
0 件のコメント:
コメントを投稿