TensorFlow はじめました

入門書を購入しました!

 

TensorFlow はじめました 著:有山 圭二

http://amzn.asia/5sVBJTE

サンプルソース

http://goo.gl/forms/2IsX177eJ3CpNKng1

 

Anaconda + PyCharm環境を作ったところで

入門書に挑戦。

(現時点でPython文法は理解していない)

 

てんそるとは

 n次元の多次元配列。

 

ふろー?

 データ処理の流れ。データフローグラフという。

 

Pythonでなにする?

 Pythonはてんそるふろーというデータ処理マシンを

 操作するスクリプトだと考えるのがよさそう。

 なので、てんそるふろー自体がPythonで組まれているわけではない

 

  最初にデータ型、グラフを定義し、セッションを開始して

  データ処理を実行する、という感じ。   

だから

 リスト1.1

const1 = tf.constant(2)
const2 = tf.constant(3)
add_op = tf.add(const1, const2)
print
(add_op) 
 のようなコードでも"add_op" が示すものは単なる数値ではないので

Tensor(" Add: 0", shape =(), dtype = int 32)

という文字列が表示されるだけ。 

 

 

pycharm

 

今回インストールしたのは

PyCharm Community Edition 2017.2.2

 

最初のプロジェクト myStudyを作ると

なぜかバックグラウンド処理がはじまった・・・。

Updating Python Interpreter...

 

しばらくすると Anaconda consoleがつかえなくなった?なんで?

結局Anacondaをいったんアンインストール・・・ 

 とりあえず

>conda create -n py36 python=3.6

これを標準として

PyCharm

Default Settings -> Python Interpreter

envs\py36\python.exe に設定。

 

TensorFlowのサンプルは

envs\tensorflow\python.exe に設定。

これでtensorflowサンプルコード実行できた!

 

 

PyCharm | Continuum Analytics: Documentation

 

 

参考記事

Download PyCharm: Python IDE for Professional Developers by JetBrains

 

 

PyCharm のインストール – Python でデータサイエンス

 

pycharm と anaconda連携

pycharmとanacondaの連携(初心者向け) - 超初心者によるpythonメモ書き

 

 

Tensor Flow

環境:

Core i7-7700HQ 定格2.80GHz

GTX1070 8GB

8GB DDR4 SO-DIMM

Win10 Home 64 bit

 

まずはインストー

Installing TensorFlow on Windows  |  TensorFlow

 

1. CUDA

Installation Guide Windows :: CUDA Toolkit Documentation

Patch2もインストール。

2.cuDNN

NVIDIA cuDNN | NVIDIA Developer

 

3. Anaconda

Download Anaconda Now! | Continuum

最新4.4をインストール 

Python3.6なのだが、環境を作るときにpython3.5を指定する。

 

4. Tensor Flow環境作成、インストー

Anaconda Prompt起動

C:> conda create -n tensorflow python=3.5
C:> activate tensorflow
# Install GPU version tensor flow
(tensorflow)C:> pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.2.1-cp35-cp35m-win_amd64.whl

 

5.Validate

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))

一行ずつ入力・・・

>>> import tensorflow as tf

エラー・・・

ImportError: No module named '_pywrap_tensorflow_internal'

 

検索・・・

windowsにネイティブサポートしたTensorflowを動かす - Qiita

なるほど、VS Redistributableが足りないらしい?

 

入れてみて、もう一度!

ちがうみたい。

Redistは、anacondaでインストール済みのようだ。

 

こっちの記事

CUDA - TensorFlow importエラーについて(74099)|teratail

 

cuDNN 6.0 -> 5.1にインストールしなおし。。。

ファイルを置き換え

>>> import tensorflow as tf

成功!

 

>>> sess = tf.Session()
2017-07-22 02:27:49.195206: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE instructions, but these are available on your machine and could speed up CPU computations.
2017-07-22 02:27:49.195814: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE2 instructions, but these are available on your machine and could speed up CPU computations.
2017-07-22 02:27:49.197318: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE3 instructions, but these are available on your machine and could speed up CPU computations.
2017-07-22 02:27:49.197765: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-07-22 02:27:49.198217: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-07-22 02:27:49.198701: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
2017-07-22 02:27:49.199164: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
2017-07-22 02:27:49.199214: W c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
2017-07-22 02:27:50.630526: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:940] Found device 0 with properties:
name: GeForce GTX 1070
major: 6 minor: 1 memoryClockRate (GHz) 1.645
pciBusID 0000:01:00.0
Total memory: 8.00GiB
Free memory: 6.67GiB
2017-07-22 02:27:50.630665: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:961] DMA: 0
2017-07-22 02:27:50.631359: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:971] 0: Y
2017-07-22 02:27:50.631775: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1070, pci bus id: 0000:01:00.0)

 なんかいっぱいログが出た。

 

>>> print(sess.run(hello))
b'Hello, TensorFlow!'

 よし!なんとか完了。

とりあえずここまで。

次回は

Getting Started With TensorFlow  |  TensorFlow

にすすむ

 

Uniqueness Requirement for Custom Permissions (Android 5.0)

Lollipopのパーミッションの仕組みを調査。(新しい話題ではないですが)

 

Custom Permissionとは、(SDK既定のパーミッションとは別に)アプリのManifestで新しく<permission>宣言することで追加する独自のパーミッション

 

KitKat4.4以前の場合、同一のパーミッション名であれば、最初にインストールされたアプリのProtectionLevelが有効になるというルールだった。(おなじpermission宣言をしているアプリがあとからインストールされても無視)これによって引き起こされる問題は下記の記事をご参考。

参考:

摩訶不思議Androidパーミッション - pochi-pの絵日記

Android の組込みアプリ以外のパーミッションの取り扱い - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。 - subtech

Androidのカスタムパーミッションで顧客情報流出のおそれ | トレンドマイクロ セキュリティブログ

 

Lollipop 5.0以降では、すでにインストール済みアプリのパーミッションと同一のパーミッション宣言を持つアプリは、インストールが拒否されるそうです。

 

参考:

Android 5.0 Behavior Changes | Android Developers

PackageInstaller | Android Developers

 

で、このあたらしいLollipopのしくみですが、下記の記事で脆弱性が指摘されているとのこと。(まだ理解できてません・・)

New Android Installer Highjacking Vulnerability Exposes Android Device Users to Data Theft and Malware

 

この記事については次回調べます・・・

5/25 訂正、これはPackageInstallerActivityの問題みたい。KitKat以降は問題ないみたい。ややこしい。