ホームページ  >  記事  >  バックエンド開発  >  Tensorflow の基礎 (機械学習オープンソース ソフトウェア ライブラリ)

Tensorflow の基礎 (機械学習オープンソース ソフトウェア ライブラリ)

angryTom
angryTom転載
2019-11-29 14:53:003442ブラウズ

Tensorflow の基礎 (機械学習オープンソース ソフトウェア ライブラリ)

注: この記事の例では、Python バージョン 3.5.6 と Tensorflow バージョン 2.0 を使用しています

はじめに

Tensorflow はGoogle が発表した機械学習オープンソース成果物は、Python の言語サポートが充実しており、CPU、GPU、Google TPU などのハードウェアをサポートしており、すでにさまざまなモデルとアルゴリズムを備えています。現在、Tensorflow は、テキスト処理、音声認識、画像認識などの多くの機械学習および深層学習の分野で広く使用されています。

#基本フレームワーク

は、アプリケーション層、インターフェイス層、コア層の 3 つの層に分かれています。

推奨: "python チュートリアル>>

アプリケーション層

機械学習関連のトレーニング ライブラリと予測ライブラリを提供しますそして、Python、C、Javaなどの言語のプログラミング環境は、Webシステムのフロントエンドと同様、主に計算グラフの構築を実装します。

インターフェイス層

Tensorflow 関数モジュールをカプセル化して、他の言語プラットフォームからの呼び出しを容易にします。

コア層

最も重要な部分には、デバイス層、ネットワーク層、データ操作層、およびアプリケーション層の計算を実行するグ​​ラフ コンピューティング層が含まれます。

1. デバイス層

さまざまなハードウェア デバイスでの Tensorflow の実装が含まれており、主に CPU、GPU、モバイル、その他のデバイスをサポートし、さまざまなハードウェア デバイスで計算コマンドを実装します。この変換により、プログラムのクロスプラットフォーム機能を実現するために、上位層に統一されたインターフェイスが提供されます。

2. ネットワーク層

ネットワーク層には、主に分散コンピューティングで使用される、異なるデバイス間のデータ送信や更新を実現するための RPC および RDMA 通信プロトコルが含まれます。で使われる。

3. データ操作層

は、テンソルを処理対象として、テンソルのさまざまな演算や計算を実装します。

4. グラフ コンピューティング レイヤー

分散コンピューティング グラフとローカル コンピューティング グラフの実装を含み、グラフの作成、コンパイル、最適化、実行を実現します。

設計コンセプト

Tensorflow は、計算グラフにおける「テンソルの流れ」として理解できます。Tensor (テンソル) はエッジを表し、フローはエッジの流れを表します。計算グラフ内のノードによって実行される操作によって形成されるデータ。

設計コンセプトはデータ フローに基づいており、対応する機械学習モデルを構築した後、トレーニング データを使用してモデルにデータを流し、結果は次の形式でモデルのパラメーターにフィードバックされます。バックプロパゲーションのパラメータを調整し、調整されたパラメータを使用してトレーニング データを再度反復計算します。

#プログラミング機能

プログラミング機能は 2 つあります。

グラフの定義とグラフの操作は完全に分離されています

tensorflow では、事前にさまざまな変数を定義し、関連するデータ フロー図を確立し、データ フロー図上でさまざまな変数間の計算関係を作成し、図の定義を完了する必要があります。演算の入力データは出力値を形成する前に入力します。

グラフの計算はセッションで実行されます

テンソルフローの関連計算はグラフで定義され、グラフの特定の実行環境はセッション内にあります。セッションが開いた後に開始します。セッションを閉じると、それ以上計算を実行できなくなります。

例:

import tensorflow as tf
tf.compat.v1.disable_eager_execution()
a = 3
b = 4
c = 5
y = tf.add(a*b, c)
print(y)
a = tf.constant(3, tf.int32)
b = tf.constant(4, tf.int32)
c = tf.constant(5, tf.int32)
y = tf.add(a*b, c)
print(y)
session = tf.compat.v1.Session()
print(session.run(y))
session.close()

グラフ作成後、セッション内でデータ計算が実行され、最終結果が出力されることがわかります。

この設計の利点は、学習プロセスで最も消費される部分はデータのトレーニングであることです。このように設計すると、計算が実行されるときにグラフが決定され、計算が実行されます。継続的な反復プロセスのみです。

基本概念

Tensor

Tensor は tensorflow で最も重要なデータ構造であり、データ転送に使用されます。計算グラフでは、テンソルを作成した後、テンソルを計算グラフに追加する前に、テンソルを変数またはプレースホルダーに割り当てる必要があります。

session

Session は、Tensorflow の計算グラフの特定の実行者であり、実際にグラフと対話します。セッションには複数のグラフを含めることができます。セッションの主な目的は、計算のためにトレーニング データをグラフに追加することと、グラフの構造を変更することです。

呼び出しモードでは with ステートメントを使用することをお勧めします:

with session:
    session.run()
Variable

変数は、グラフ内のさまざまな計算パラメータを表します。機械学習アルゴリズムは、これらの変数の状態を調整することによって最適化されます。変数を作成するには tf.Variable() を使用します。テンソルを入力すると変数が返されます。変数は宣言後に初期化してから使用する必要があります。

例:

import tensorflow as tf
tf.compat.v1.disable_eager_execution()
tensor = tf.ones([1, 3])
test_var = tf.Variable(tensor)
# 初始化变量
init_op = tf.compat.v1.global_variables_initializer()
session = tf.compat.v1.Session()
with session:
    print("tensor is ", session.run(tensor))
    # print("test_var is ", session.run(test_var))
    session.run(init_op)
    print("after init, test_var is", session.run(test_var))

Placeholder

Placeholder は、入力および出力データの形式を表し、データの場所を宣言し、受信指定を許可するために使用されます。データの種類と形状を取得し、セッションの feed_dict パラメーターを通じてデータを取得し、計算グラフの実行中に取得したデータを使用して計算を実行します。取得したデータは、計算が完了すると消えます。

例:

x = tf.compat.v1.placeholder(tf.int32)
y = tf.compat.v1.placeholder(tf.int32)
z = tf.add(x, y)
session = tf.compat.v1.Session()
with session:
    print(session.run([z], feed_dict={x: [1, 2], y: [2, 3]}))

Operation

Operation はグラフ内のノードであり、入力と出力は Tensor であり、その機能はさまざまな処理を完了することです。含まれるもの:

数学演算: add、sub、mul、div、exp...

配列演算: concat、slice、split、rank...

行列演算 :matmul、matrixinverse...

ニューラルネットワーク構築:softmax、sigmoid、relu...

检查点:save, restore ...

队列和同步:enqueue, dequeue, mutexacquire, mutexrelease ...

张量控制:merge, switch, enter, leave ...

Queue

队列,图中有状态的节点。包含入列(endqueue)和出列(dequeue)两个操作,入列返回计算图中的一个操作节点,出列返回一个tensor值。

其中,队列有两种:

1. FIFOQueue

按入列顺序出列的队列,在需要读入的训练样本有序时使用。举个例子:

fifo_queue = tf.compat.v1.FIFOQueue(10, 'int32')
init = fifo_queue.enqueue_many(([1, 2, 3, 4, 5, 6], ))
with tf.compat.v1.Session() as session:
    session.run(init)
    queue_size = session.run(fifo_queue.size())
    for item in range(queue_size):
        print('fifo_queue', session.run(fifo_queue.dequeue()))

2. RandomShuffleQueue

以随机顺序出列的队列,读入的训练样本无序时使用。举个例子:

rs_queue = tf.compat.v1.RandomShuffleQueue(capacity=5, min_after_dequeue=0, dtypes='int32')
init = rs_queue.enqueue_many(([1, 2, 3, 4, 5], ))
with tf.compat.v1.Session() as session:
    session.run(init)
    queue_size = session.run(rs_queue.size())
    for i in range(queue_size):
        print('rs_queue', session.run(rs_queue.dequeue()))

本文来自 python教程 栏目,欢迎学习!  

以上がTensorflow の基礎 (機械学習オープンソース ソフトウェア ライブラリ)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。