TensorFlow入門の基本的な使用

7044 ワード

Tensorflowのいくつかのよく使われる基本概念と関数
https://www.cnblogs.com/wuzhitj/p/6431381.html
TensorFlow入門の基本的な使用
https://www.cnblogs.com/flyu6/p/5555161.html
全体的な紹介
TensorFlowを使用するには、TensorFlowを理解する必要があります.
  • は、図(graph)を用いる計算タスクを表す.
  • は、セッション(Session)と呼ばれるコンテキスト(context)で図を実行する.
  • はtensorで示すデータを用いる.
  • は変数(Variable)により状態を維持する.
  • feedおよびfetchを使用すると、任意の動作(arbitrary operation)
  • とすることができる.
    データを付与または取得する.
    一つのTensorFlow図は計算の過程を説明した.計算を行うために、図はセッションで起動する必要がある.セッションは、図のopをCPUやGPU等のデバイスに配信するとともに、opを実行する方法を提供する.これらの方法を実行すると、生成したtensorが戻る.Python言語では、返されるtensorはnumpy ndarrayオブジェクトです.CおよびC++言語では、返されるtensorはtensorflow::Tensorインスタンスである.
    けいさん図
    TensorFlowプログラムは通常1つの構築段階と1つの実行段階に編成される.構築段階において、opの実行ステップを図として説明する.実行段階では、実行図中のopをセッションで実行する.
    実はこれは声明式のプログラミング構造で、炒め物のようなもので、私たちは主材と調味料を準備して、油を加えて調理しています.tensorflowの計算方法もそうですが、まず構築段階でこのネットワーク(ニューラルネットワークなど)を構築し、TensorFlowが提供するSessionメソッドを使用して実行(run())を開き、私たちのネットワークをrunに入れると、私たちが考えている結果が得られます.これが宣言式のプログラミング方式です.
    Step 1:構築図
    import tensorflow as tf
    #        op,     1x2     op        
    #       
    #
    #            op    
    a = tf.constant([[3., 3.]])
    
    b = tf.constant([[2.],[2.])
    
    #           , a, b    
    #    product        
    product = tf.matmul(a,b)

    2つのマトリクスを乗算してproduct結果を返す図が作成されました.つまり、主材と調味料はもう準備ができています.次は生火炒めの時間です.Productを得るためには、セッション(Session)でこの図を起動する必要があります.
    Step 2:図を起動する
    #       
    sess = tf.Session()
    
    #    sess   'run()'           op,    'product'         . 
    #     , 'product'         op    ,          ,       
    #      op    .
    #
    #            ,        op        . op         .
    # 
    #      'run(product)'         op (     op         op)    .
    #
    #     'result'     numpy `ndarray`   .
    
    sess.run(product)
    print result
    
    # ==> [[12.]]
    
    #           
    sess.close()

    もちろん、私たちがコードを書くとき、sessを書くのを忘れることがあります.close().ここではシステムのバンドwithを用いてセッションの自動閉鎖を実現することができる.
    with tf.Session() as sess:
          result = sess.run([product])
          print result

    TensorFlowは0.8バージョンから分散処理の機械学習をサポートしており、同時にTensorFlowはコンピュータリソース:cpu GPUなどを十分に利用している.またGPUが検出されると,可能な限りGPUを用いてプログラムの計算を実現する.コンピュータにGPUが複数ある場合、tfを通過することができます.デバイス()は、どのGPUが実行されるかを指定します.具体例は次のとおりです.
    with tf.Session() as sess:
    with tf.device("/gpu:1"): a = tf.constant([[3., 3.]]) b = tf.constant([[2.],[2.]) product = tf.matmul(a,b) ...

    デバイスは文字列で識別する.現在サポートされているデバイスは次のとおりです.
    "/cpu:0":マシンのCPU.
    "/gpu:0":マシンの最初のGPU、もしあれば.
    "/gpu:1":マシンの2番目のGPUは、このように押す.
    インタラクティブな使用
    ドキュメント内のPythonの例では、セッションセッションセッションを使用して図を起動し、**セッションを呼び出す.run()メソッドは操作を実行する.
    IPythonのようなPythonのインタラクション環境を容易に使用するために、Sessionクラスの代わりにInteractiveSessionを使用するTensorを使用することができる.eval()とOperation.run()メソッドはSessionに代わる.run(). これにより、1つの変数を使用してセッションを保持することを回避できます.
    #           
    import tensorflow as tf
    sess = tf.InteractiveSession()
    
    x = tf.Variable([1.0, 2.0]) a = tf.constant([3.0, 3.0]) #           Variable x.initializer.run() #          sub op  x   a,       sub = tf.sub(x,a) print sub.eval() # ==> [-2 -1]

    Tensor
    TensorFlowではTensorデータ構造を使用してすべてのデータを表します.Tensorはn次元の配列またはリストと見なすことができる.1つのTensorは1つの静的タイプRankと1つのshapeを含む.
    変数Variable
    変数は、図実行中のステータス情報を維持します.次の例では、変数を使用して簡単なカウンタを実装する方法を示します.
    #       ,         0
    state = tf.Variable(0, name="counter")
    
    #     operation,      state    1 one = tf.constant(1) new_value = tf.add(sate,one) update = tf.assign(state, new_value) #     ,        `   ` (init) op    , #         `   ` op    . init_op = tf.initialize_all_variables() with tf.Session() as sess: sess.run(init_op) #    init_op print sess.run(state) #        for _ in range(3): sess.run(update) print sess.run(state) #   : # 0 # 1 # 2 # 3

    Fetch
    操作の出力内容を取り戻すために、Sessionオブジェクトのrun()を使用して実行図を呼び出すと、tensorがいくつか入ってきて、結果を取り戻すのに役立ちます.前の例では、単一のノードstateのみを取り戻しましたが、複数のtensorを取り戻すこともできます.
    input1 = tf.constant(3.0)
    input2 = tf.constant(2.0)
    input3 = tf.constant(5.0)
    intermed = tf.add(input2, input3)
    mul = tf.mul(input1, intermed)
    
    with tf.Session():
      result = sess.run([mul, intermed])
      print result
    
    #   :
    # [array([ 21.], dtype=float32), array([ 7.], dtype=float32)]

    Feed
    上記の例では、計算図にtensorを導入する、定数または変数として記憶する.TensorFlowはまたfeedメカニズムを提供して、このメカニズムは一時的に図の中の任意の操作の中のtensorに取って代わって図の中のいかなる操作に対してパッチを提出することができて、直接1つのtensorを挿入します.
    feedは、1つのtensor値を用いて、1つの操作の出力結果を一時的に置き換える.feedデータをrun()呼び出しのパラメータとして提供することができます.feedは呼び出すメソッド内でのみ有効であり、メソッドが終了するとfeedは消える.最も一般的な例は、特定の特殊な操作を「feed」操作として指定することであり、タグの方法はtfを用いる.placeholder()は、これらの操作にプレースホルダを作成する.
    input1 = tf.placeholder(tf.types.float32)
    input2 = tf.placeholder(tf.types.float32)
    output = tf.mul(input1, input2)
    
    with tf.Session() as sess:
      print sess.run([output], feed_dict={input1:[7.], input2:[2.]}) #   : # [array([ 14.], dtype=float32)]

    feedが正しく提供されていない場合、placeholder()操作にエラーが発生する.
    sess.run()
    http://blog.csdn.net/oHongHong/article/details/72778568