Tensorflow-quick-guide
TensorFlow-はじめに
TensorFlowは、機械学習とディープラーニングの概念を最も簡単な方法で実装するためにGoogleチームによって設計されたソフトウェアライブラリまたはフレームワークです。 最適化手法の計算代数を組み合わせて、多くの数式を簡単に計算できます。
TensorFlowの公式ウェブサイトは以下に記載されています-
https://www.tensorflow.org [www.tensorflow.org]
TensorFlowの次の重要な機能について考えてみましょう-
- テンソルと呼ばれる多次元配列の助けを借りて、数式を簡単に定義、最適化、計算する機能が含まれています。
- ディープニューラルネットワークと機械学習技術のプログラミングサポートが含まれています。
- これには、さまざまなデータセットを使用したスケーラブルな計算機能が含まれています。
- TensorFlowは、GPUコンピューティングを使用して管理を自動化します。 また、同じメモリと使用データの最適化という独自の機能も含まれています。
TensorFlowが人気を博しているのはなぜですか?
TensorFlowは十分に文書化されており、多くの機械学習ライブラリが含まれています。 いくつかの重要な機能と同じ方法を提供します。
TensorFlowは「Google」製品とも呼ばれます。 さまざまな機械学習アルゴリズムと深層学習アルゴリズムが含まれています。 TensorFlowは、手書き数字の分類、画像認識、単語の埋め込み、さまざまなシーケンスモデルの作成のために、ディープニューラルネットワークをトレーニングおよび実行できます。
TensorFlow-インストール
TensorFlowをインストールするには、システムに「Python」をインストールすることが重要です。 Pythonバージョン3.4+は、TensorFlowのインストールを開始するのに最適と考えられています。
WindowsオペレーティングシステムにTensorFlowをインストールするには、次の手順を検討してください。
- ステップ1 *-インストールされているPythonバージョンを確認します。
- ステップ2 *-ユーザーは、システムにTensorFlowをインストールするためのメカニズムを選択できます。 「pip」と「Anaconda」をお勧めします。 Pipは、Pythonでモジュールを実行およびインストールするために使用されるコマンドです。
TensorFlowをインストールする前に、システムにAnacondaフレームワークをインストールする必要があります。
インストールが成功したら、「conda」コマンドを使用してコマンドプロンプトをチェックインします。 コマンドの実行は以下に表示されます-
- ステップ3 *-次のコマンドを実行して、TensorFlowのインストールを初期化します-
TensorFlowのセットアップに必要なパッケージをダウンロードします。
- ステップ4 *-環境設定が成功した後、TensorFlowモジュールをアクティブにすることが重要です。
- ステップ5 *-pipを使用して、システムに「Tensorflow」をインストールします。 インストールに使用されるコマンドは以下のように言及されています-
And,
インストールが成功したら、TensorFlowのサンプルプログラムの実行を知ることが重要です。
次の例は、TensorFlowでの基本的なプログラム作成「Hello World」を理解するのに役立ちます。
最初のプログラム実装のコードは以下に記載されています-
人工知能を理解する
人工知能には、機械および特殊なコンピューターシステムによる人間の知能のシミュレーションプロセスが含まれます。 人工知能の例には、学習、推論、自己修正が含まれます。 AIのアプリケーションには、音声認識、エキスパートシステム、画像認識、マシンビジョンが含まれます。
機械学習は、新しいデータとデータパターンを学習できるシステムとアルゴリズムを扱う人工知能の分野です。
機械学習とディープラーニングの概念を理解するために、下記のベン図に注目しましょう。
機械学習には機械学習のセクションが含まれ、ディープラーニングは機械学習の一部です。 機械学習の概念に従うプログラムの機能は、観測データのパフォーマンスを向上させることです。 データ変換の主な動機は、将来、より良い結果を達成するために知識を改善し、その特定のシステムの望ましい出力により近い出力を提供することです。 機械学習には、データ内のパターンを認識する機能を含む「パターン認識」が含まれます。
パターンは、望ましい方法で出力を表示するようにトレーニングする必要があります。
機械学習は2つの異なる方法でトレーニングできます-
- 教師付きトレーニング
- 教師なしトレーニング
教師あり学習
教師あり学習または教師ありトレーニングには、トレーニングセットがシステムへの入力として与えられ、各例に望ましい出力値のラベルが付けられている手順が含まれます。 このタイプのトレーニングは、特定の損失関数の最小化を使用して実行されます。これは、目的の出力システムに関する出力エラーを表します。
トレーニングの完了後、各モデルの精度は、検証セットとも呼ばれるトレーニングセットからの互いに素な例に関して測定されます。
「教師あり学習」を説明するための最良の例は、多くの写真に情報が含まれていることです。 ここで、ユーザーはモデルをトレーニングして新しい写真を認識できます。
教師なし学習
教師なし学習または教師なしトレーニングには、トレーニングの例が含まれます。トレーニングの例は、クラスが属するシステムによってラベル付けされていません。 システムは、共通の特性を共有するデータを探し、内部の知識機能に基づいてデータを変更します。このタイプの学習アルゴリズムは、クラスタリング問題で基本的に使用されます。
「教師なし学習」を説明する最良の例は、情報が含まれていない写真の束と、分類とクラスタリングを使用したユーザートレーニングモデルです。 このタイプのトレーニングアルゴリズムは、情報が提供されないため、仮定を使用して機能します。
TensorFlow-数学的基礎
TensorFlowで基本的なアプリケーションを作成する前に、TensorFlowに必要な数学的概念を理解することが重要です。 数学は、機械学習アルゴリズムの中心と考えられています。 数学の中核概念の助けを借りて、特定の機械学習アルゴリズムのソリューションが定義されています。
ベクター
連続または離散の数値の配列は、ベクトルとして定義されます。 機械学習アルゴリズムは、出力生成を改善するために固定長のベクトルを処理します。
機械学習アルゴリズムは多次元データを処理するため、ベクトルが重要な役割を果たします。
ベクトルモデルの絵の表現は以下のとおりです-
スカラー
スカラーは1次元ベクトルとして定義できます。 スカラーとは、大きさのみを含み、方向を含まないスカラーです。 スカラーでは、大きさのみが関係します。
スカラーの例には、子供の体重と身長のパラメーターが含まれます。
マトリックス
マトリックスは、行と列の形式で配置された多次元配列として定義できます。 行列のサイズは、行の長さと列の長さによって定義されます。 次の図は、指定されたマトリックスの表現を示しています。
前述の「m」行と「n」列のマトリックスを考えてみましょう。マトリックス表現は、マトリックスの長さも定義する「m *nマトリックス」として指定されます。
数学的計算
このセクションでは、TensorFlowのさまざまな数学計算について学習します。
行列の追加
マトリックスが同じ次元の場合、2つ以上のマトリックスの追加が可能です。 追加は、指定された位置ごとの各要素の追加を意味します。
行列の加算がどのように機能するかを理解するために、次の例を検討してください-
例:A = \ begin \ {bmatrix} 1&2 \\ 3&4 \ end \ {bmatrix} B = \ begin \ {bmatrix} 5&6 \\ 7&8 \ end \ {bmatrix} \: then \:A + B = \ begin \ {bmatrix} 1 + 5&2 + 6 \\ 3 + 7&4 + 8 \ end \ {bmatrix} = \ begin \ {bmatrix} 6&8 \\ 10&12 \ end \ {bmatrix}
行列の減算
行列の減算は、2つの行列の加算と同様の方法で動作します。 次元が等しい場合、ユーザーは2つの行列を減算できます。
例:A- \ begin \ {bmatrix} 1&2 \\ 3&4 \ end \ {bmatrix} B- \ begin \ {bmatrix} 5&6 \\ 7&8 \ end \ {bmatrix} \: then \:AB- \ begin \ {bmatrix} 1-5&2-6 \\ 3-7&4-8 \ end \ {bmatrix}-\ begin \ {bmatrix} -4&-4 \\-4& -4 \ end \ {bmatrix}
行列の乗算
2つの行列A m* nおよびB p * qを乗算可能にするには、 n は p と等しくなければなりません。 結果の行列は-
C m *q
A = \ begin \ {bmatrix} 1および2 \\ 3および4 \ end \ {bmatrix} B = \ begin \ {bmatrix} 5および6 \\ 7および8 \ end \ {bmatrix}
c _ \ {11} = \ begin \ {bmatrix} 1および2 \ end \ {bmatrix} \ begin \ {bmatrix} 5 \\ 7 \ end \ {bmatrix} = 1 \ times5 + 2 \ times7 = 19 \ :c _ \ {12} = \ begin \ {bmatrix} 1および2 \ end \ {bmatrix} \ begin \ {bmatrix} 6 \\ 8 \ end \ {bmatrix} = 1 \ times6 + 2 \ times8 = 22
c _ \ {21} = \ begin \ {bmatrix} 3および4 \ end \ {bmatrix} \ begin \ {bmatrix} 5 \\ 7 \ end \ {bmatrix} = 3 \ times5 + 4 \ times7 = 43 \ :c _ \ {22} = \ begin \ {bmatrix} 3および4 \ end \ {bmatrix} \ begin \ {bmatrix} 6 \\ 8 \ end \ {bmatrix} = 3 \ times6 + 4 \ times8 = 50
C = \ begin \ {bmatrix} c _ \ {11}&c _ \ {12} \\ c _ \ {21}&c _ \ {22} \ end \ {bmatrix} = \ begin \ {bmatrix} 19&22 \\ 43および50 \ end \ {bmatrix}
行列の転置
行列Aの転置m* nは、一般にAT(転置)n *mで表され、列ベクトルを行ベクトルとして転置することによって取得されます。
例:A = \ begin \ {bmatrix} 1&2 \\ 3&4 \ end \ {bmatrix} \:then \:A ^ \ {T} \ begin \ {bmatrix} 1&3 \\ 2& 4 \ end \ {bmatrix}
ベクトルのドット積
次元nの任意のベクトルは、行列v = R ^ n* 1として表すことができます。
v _ \ {1} = \ begin \ {bmatrix} v _ \ {11} \\ v _ \ {12} \\\ cdot \\\ cdot \\\ cdot \\ v _ \ {1n} \ end \ {bmatrix } v _ \ {2} = \ begin \ {bmatrix} v _ \ {21} \\ v _ \ {22} \\\ cdot \\\ cdot \\\ cdot \\ v _ \ {2n} \ end \ {bmatrix}
2つのベクトルのドット積は、対応するコンポーネントの積の合計です-同じ次元に沿ったコンポーネントであり、次のように表すことができます
v _ \ {1} \ cdot v _ \ {2} = v_1 ^ Tv _ \ {2} = v_2 ^ Tv _ \ {1} = v _ \ {11} v _ \ {21} + v _ \ {12} v _ \ { 22} + \ cdot \ cdot + v _ \ {1n} v _ \ {2n} = \ displaystyle \ sum \ limits _ \ {k = 1} ^ n v _ \ {1k} v _ \ {2k}
ベクトルの内積の例を以下に示します-
例:v _ \ {1} = \ begin \ {bmatrix} 1 \\ 2 \\ 3 \ end \ {bmatrix} v _ \ {2} = \ begin \ {bmatrix} 3 \\ 5 \\-1 \ end \ {bmatrix} v _ \ {1} \ cdot v _ \ {2} = v_1 ^ Tv _ \ {2} = 1 \ times3 + 2 \ times5-3 \ times1 = 10
機械学習と深層学習
人工知能は、最近の最も人気のあるトレンドの1つです。 機械学習と深層学習は人工知能を構成します。 以下に示すベン図は、機械学習と深層学習の関係を説明しています-
機械学習
機械学習は、設計およびプログラミングされたアルゴリズムに従ってコンピューターを動作させる科学技術です。 多くの研究者は、機械学習が人間レベルのAIに向けて前進するための最良の方法であると考えています。 機械学習には次の種類のパターンが含まれます
- 教師あり学習パターン
- 教師なし学習パターン
深層学習
ディープラーニングは、関連するアルゴリズムが人工ニューラルネットワークと呼ばれる脳の構造と機能に触発された機械学習のサブフィールドです。
ディープラーニングの今日の価値はすべて、教師あり学習またはラベル付きデータとアルゴリズムからの学習です。
深層学習の各アルゴリズムは、同じプロセスを経ます。 出力として統計モデルを生成するために使用できる入力の非線形変換の階層が含まれています。
機械学習プロセスを定義する次の手順を検討してください
- 関連するデータセットを識別し、分析のために準備します。
- 使用するアルゴリズムのタイプを選択します
- 使用されるアルゴリズムに基づいて分析モデルを構築します。
- テストデータセットでモデルをトレーニングし、必要に応じて修正します。
- モデルを実行してテストスコアを生成します。
機械学習と深層学習の違い
このセクションでは、機械学習とディープラーニングの違いについて学習します。
データ量
機械学習は大量のデータを処理します。 少量のデータにも役立ちます。 一方、データの量が急速に増加する場合、ディープラーニングは効率的に機能します。 次の図は、データの量で機械学習と深層学習の動作を示しています-
ハードウェアの依存関係
ディープラーニングアルゴリズムは、従来の機械学習アルゴリズムとは異なり、ハイエンドマシンに大きく依存するように設計されています。 深層学習アルゴリズムは、多数のハードウェアサポートを必要とする多数の行列乗算演算を実行します。
機能エンジニアリング
機能エンジニアリングとは、ドメインの知識を特定の機能に組み込んでデータの複雑さを軽減し、機能する学習アルゴリズムに見えるパターンを作成するプロセスです。
例-従来の機械学習パターンは、フィーチャエンジニアリングプロセスに必要なピクセルおよびその他の属性に焦点を当てています。 ディープラーニングアルゴリズムは、データからの高度な機能に焦点を当てています。 すべての新しい問題の新しい機能抽出機能を開発するタスクを削減します。
問題解決アプローチ
従来の機械学習アルゴリズムは、標準的な手順に従って問題を解決します。 問題を部分に分割し、それぞれを解決し、それらを組み合わせて必要な結果を得ます。 ディープラーニングは、問題を分割するのではなく、端から端まで問題を解決することに焦点を当てています。
実行時間
実行時間は、アルゴリズムのトレーニングに必要な時間です。 ディープラーニングには多くのパラメーターが含まれており、通常よりも時間がかかるため、トレーニングには多くの時間が必要です。 機械学習アルゴリズムは、比較的短い実行時間で済みます。
解釈可能性
解釈可能性は、機械学習アルゴリズムとディープラーニングアルゴリズムを比較する主な要因です。 その主な理由は、業界での使用に先立って、ディープラーニングが依然として再考されていることです。
機械学習と深層学習の応用
このセクションでは、機械学習と深層学習のさまざまなアプリケーションについて学習します。
- 指紋による顔認識および出席マークまたはナンバープレートによる車両識別に使用されるコンピュータービジョン。
- 画像検索のためのテキスト検索などの検索エンジンからの情報検索。
- 指定されたターゲットIDを使用した自動メールマーケティング。
- がん腫瘍の医学的診断または慢性疾患の異常同定。
- 写真のタグ付けなどのアプリケーションの自然言語処理。 このシナリオを説明する最良の例は、Facebookで使用されています。
- オンライン広告。
今後の動向
- 業界でデータサイエンスと機械学習を使用する傾向が高まるにつれて、各組織がビジネスで機械学習を教え込むことが重要になります。
- ディープラーニングは、機械学習よりも重要性を増しています。 ディープラーニングは、最先端のパフォーマンスにおける最高のテクニックの1つであることが証明されています。
- 機械学習とディープラーニングは、研究および学術分野で有益であることが証明されます。
結論
この記事では、マシンラーニングとディープラーニングの概要を、将来のトレンドにも焦点を当てたイラストと相違点で説明しました。 AIアプリケーションの多くは、主にセルフサービスを促進し、エージェントの生産性とワークフローの信頼性を高めるために、機械学習アルゴリズムを利用しています。 機械学習とディープラーニングアルゴリズムには、多くの企業や業界のリーダーにとって魅力的な見通しが含まれています。
TensorFlow-基本
この章では、TensorFlowの基本について学習します。 テンソルのデータ構造を理解することから始めます。
テンソルデータ構造
テンソルは、TensorFlow言語の基本的なデータ構造として使用されます。 テンソルは、データフローグラフと呼ばれるフロー図の接続エッジを表します。 テンソルは、多次元配列またはリストとして定義されます。
テンソルは、次の3つのパラメータによって識別されます-
Rank
テンソル内で記述される次元の単位はランクと呼ばれます。 テンソルの次元数を識別します。 テンソルのランクは、定義されたテンソルの次数またはn次元として説明できます。
形状
行と列の数が一緒になって、Tensorの形状を定義します。
Type
タイプは、Tensorの要素に割り当てられたデータタイプを示します。
ユーザーは、テンソルを構築するために次のアクティビティを考慮する必要があります-
- n次元配列を作成する
- n次元配列を変換します。
TensorFlowのさまざまな次元
TensorFlowにはさまざまなディメンションが含まれています。 寸法は以下に簡単に説明されています-
一次元テンソル
1次元テンソルは、同じデータ型の1セットの値を含む通常の配列構造です。
宣言
出力の実装は、以下のスクリーンショットに示されています-
要素のインデックス付けは、Pythonリストと同じです。 最初の要素はインデックス0で始まります。インデックスを介して値を出力するには、インデックス番号を指定するだけです。
二次元テンソル
配列のシーケンスは、「2次元テンソル」の作成に使用されます。
二次元テンソルの作成は以下に説明されています-
以下は、二次元配列を作成するための完全な構文です-
>>> tensor_2d [3] [2] 14
テンソルフローをtfとしてインポートします。
matrix1 = np.array([(2,2,2)、(2,2,2)、(2,2,2)]、dtype = 'int32')matrix2 = np.array([(1,1、 1)、(1,1,1)、(1,1,1)]、dtype = 'int32')
印刷(matrix1)印刷(matrix2)
matrix1 = tf.constant(matrix1)matrix2 = tf.constant(matrix2)matrix_product = tf.matmul(matrix1、matrix2)matrix_sum = tf.add(matrix1、matrix2)matrix_3 = np.array([(2,7,2) 、(1,4,2)、(9,0,2)]、dtype = 'float32')print(matrix_3)
matrix_det = tf.Session()をセッションとしてtf.matrix_determinant(matrix_3):result1 = sess.run(matrix_product)result2 = sess.run(matrix_sum)result3 = sess.run(matrix_det)
印刷(結果1)印刷(結果2)印刷(結果3)
TensorFlow-畳み込みニューラルネットワーク
機械学習の概念を理解した後、焦点を深層学習の概念に移すことができます。 ディープラーニングは機械学習の一部であり、ここ数十年で研究者がとった重要なステップと考えられています。 ディープラーニングの実装例には、画像認識や音声認識などのアプリケーションが含まれます。
以下は、ディープニューラルネットワークの2つの重要なタイプです-
- 畳み込みニューラルネットワーク
- リカレントニューラルネットワーク
この章では、CNN、畳み込みニューラルネットワークに焦点を当てます。
畳み込みニューラルネットワーク
畳み込みニューラルネットワークは、アレイの複数のレイヤーを介してデータを処理するように設計されています。 このタイプのニューラルネットワークは、画像認識や顔認識などのアプリケーションで使用されます。 CNNと他の通常のニューラルネットワークの主な違いは、CNNが入力を2次元配列として受け取り、他のニューラルネットワークが焦点を当てる特徴抽出に焦点を当てるのではなく、画像に直接作用することです。
CNNの主要なアプローチには、認識の問題の解決策が含まれます。 GoogleやFacebookなどのトップ企業は、認識プロジェクトに向けた研究開発に投資して、活動をより迅速に完了させています。
畳み込みニューラルネットワークは3つの基本的なアイデアを使用します-
- 現地の各分野
- 畳み込み
- プーリング
これらのアイデアを詳細に理解しましょう。
CNNは、入力データ内に存在する空間相関を利用します。 ニューラルネットワークの各同時層は、いくつかの入力ニューロンを接続します。 この特定の領域は、局所受容野と呼ばれます。 局所受容野は隠れたニューロンに焦点を合わせています。 隠されたニューロンは、特定の境界外の変更を実現せずに、言及されたフィールド内の入力データを処理します。
以下は、ローカルの各フィールドを生成する図表です-
上記の表現を観察すると、各接続は、1つの層から別の層への移動に関連する接続を持つ隠れニューロンの重みを学習します。 ここでは、個々のニューロンが時々シフトを実行します。 このプロセスは「畳み込み」と呼ばれます。
入力レイヤーから非表示のフィーチャマップへの接続のマッピングは「共有ウェイト」として定義され、含まれるバイアスは「共有バイアス」と呼ばれます。
CNNまたは畳み込みニューラルネットワークは、CNN宣言の直後に配置されたプールレイヤーを使用します。 これは、畳み込みネットワークから得られる機能マップとしてユーザーからの入力を受け取り、圧縮された機能マップを準備します。 層のプーリングは、前の層のニューロンを持つ層の作成に役立ちます。
CNNのTensorFlow実装
このセクションでは、CNNのTensorFlow実装について学習します。 ネットワーク全体の実行と適切な次元を必要とする手順は、以下に示すとおりです-
- ステップ1 *-TensorFlowに必要なモジュールと、CNNモデルの計算に必要なデータセットモジュールを含めます。
ステップ2 *- run_cnn()*という関数を宣言します。これには、データプレースホルダーの宣言を含むさまざまなパラメーターと最適化変数が含まれます。 これらの最適化変数は、トレーニングパターンを宣言します。
ステップ3 *-このステップでは、28 x 28ピクセル= 784の入力パラメーターでトレーニングデータプレースホルダーを宣言します。 これは、 mnist.train.nextbatch()*から描画される平坦化された画像データです。
要件に応じてテンソルを変更できます。 最初の値(-1)は、渡されたデータの量に基づいてそのディメンションを動的にシェーピングするように関数に指示します。 中間の2つの寸法は画像サイズに設定されます(つまり、 28 x 28)。
- ステップ4 *-畳み込み層を作成することが重要です-
- ステップ5 *-出力を完全に接続された出力ステージの準備を整えます-28 x 28の寸法の2層のストライド2プーリングの後、14 x 14または最小7 x 7 x、y座標の寸法に、ただし出力チャンネルは64です。 「密」レイヤーと完全に接続されたレイヤーを作成するには、新しい形状が[-1、7 x 7 x 64]である必要があります。 このレイヤーにいくつかの重みとバイアス値を設定し、ReLUでアクティブ化できます。
- ステップ6 *-必要なオプティマイザーを使用した特定のsoftmaxアクティベーションを持つ別のレイヤーが精度評価を定義し、初期化演算子のセットアップを行います。
- ステップ7 *-記録変数を設定する必要があります。 これにより、データの正確性を保存するための要約が追加されます。
以下は、上記のコードによって生成された出力です-
TensorFlow-リカレントニューラルネットワーク
リカレントニューラルネットワークは、深層学習指向のアルゴリズムの一種で、シーケンシャルアプローチに従います。 ニューラルネットワークでは、各入力と出力が他のすべてのレイヤーから独立していることを常に想定しています。 これらのタイプのニューラルネットワークは、数学的計算を逐次的に実行するため、リカレントと呼ばれます。
リカレントニューラルネットワークを訓練するために次の手順を検討してください-
- ステップ1 *-データセットから特定の例を入力します。
- ステップ2 *-ネットワークは例をとり、ランダムに初期化された変数を使用していくつかの計算を計算します。
- ステップ3 *-予測結果が計算されます。
- ステップ4 *-生成された実際の結果と期待値を比較すると、エラーが発生します。
- ステップ5 *-エラーをトレースするために、変数も調整された同じパスを介して伝播されます。
- ステップ6 *-出力を取得するために宣言された変数が適切に定義されていると確信できるまで、1から5までのステップが繰り返されます。
- ステップ7 *-これらの変数を適用して、新しい見えない入力を取得することにより、体系的な予測が行われます。
リカレントニューラルネットワークを表すための模式的なアプローチは以下に説明されています-
TensorFlowを使用したリカレントニューラルネットワークの実装
このセクションでは、TensorFlowでリカレントニューラルネットワークを実装する方法を学習します。
- ステップ1 *-TensorFlowには、リカレントニューラルネットワークモジュールの特定の実装のためのさまざまなライブラリが含まれています。
前述のように、ライブラリは入力データの定義に役立ちます。入力データは、リカレントニューラルネットワーク実装の主要部分を形成します。
- ステップ2 *-主な動機は、リカレントニューラルネットワークを使用して画像を分類することです。ここでは、すべての画像行をピクセルのシーケンスと見なします。 MNIST画像の形状は、特に28 * 28ピクセルとして定義されています。 ここで、記載されている各サンプルに対して28ステップの28シーケンスを処理します。 入力パラメーターを定義して、シーケンシャルパターンを完成させます。
- ステップ3 *-RNNで定義された関数を使用して結果を計算し、最良の結果を取得します。 ここでは、各データ形状が現在の入力形状と比較され、結果が計算されて精度が維持されます。
- ステップ4 *-このステップでは、グラフを起動して計算結果を取得します。 これは、テスト結果の精度の計算にも役立ちます。
以下のスクリーンショットは、生成された出力を示しています-
TensorFlow-TensorBoardの視覚化
TensorFlowには、TensorBoardと呼ばれる視覚化ツールが含まれています。 データフローグラフの分析に使用されるほか、機械学習モデルの理解にも使用されます。 TensorBoardの重要な機能には、パラメーターに関するさまざまなタイプの統計情報と、垂直方向のグラフの詳細が含まれます。
ディープニューラルネットワークには、最大36,000のノードが含まれます。 TensorBoardは、これらのノードを高レベルブロックで折りたたんで、同一の構造を強調表示するのに役立ちます。 これにより、計算グラフの主要セクションに焦点を当てたグラフの分析が改善されます。 TensorBoardの視覚化は、ユーザーがノードをパン、ズーム、および展開して詳細を表示できる非常にインタラクティブなものと言われています。
次の概略図表現は、TensorBoard視覚化の完全な動作を示しています-
アルゴリズムは、ノードを上位レベルのブロックにまとめて、高度なノードを分離する同一の構造を持つ特定のグループを強調表示します。 このようにして作成されたTensorBoardは有用であり、機械学習モデルの調整にも同様に重要です。 この視覚化ツールは、表示する必要のある要約情報と詳細を含む構成ログファイル用に設計されています。
次のコードを使用して、TensorBoardの視覚化のデモ例に焦点を当てましょう-
次の表は、ノード表現に使用されるTensorBoard視覚化のさまざまなシンボルを示しています-
TensorFlow-ワード埋め込み
単語の埋め込みは、単語などの離散オブジェクトからベクトルや実数へのマッピングの概念です。 機械学習の入力にとって重要です。 この概念には、離散入力オブジェクトを有用なベクトルに効果的に変換する標準関数が含まれています。
単語埋め込みの入力のサンプル図は以下のとおりです-
Word2vec
Word2vecは、教師なしの単語埋め込み手法に使用される最も一般的なアプローチです。 スキップグラムを使用して、指定された入力単語が単語のコンテキストを予測するようにモデルをトレーニングします。
TensorFlowは、洗練と最適化のレベルを高め、マルチスレッドの概念と高レベルの抽象化を使用して、この種のモデルを実装する多くの方法を可能にします。
出力
上記のコードは、次の出力を生成します-
TensorFlow-単層パーセプトロン
単層パーセプトロンを理解するには、人工ニューラルネットワーク(ANN)を理解することが重要です。 人工神経回路網は、生体神経回路の機能に触発されたメカニズムを備えた情報処理システムです。 人工ニューラルネットワークには、相互に接続された多くの処理ユニットがあります。 以下は、人工ニューラルネットワークの概略図です-
この図は、隠れユニットが外部層と通信することを示しています。 一方、入力ユニットと出力ユニットは、ネットワークの非表示層を介してのみ通信します。
ノードとの接続のパターン、レイヤーの総数、入力と出力の間のノードのレベル、レイヤーごとのニューロンの数は、ニューラルネットワークのアーキテクチャを定義します。
アーキテクチャには2つのタイプがあります。 これらのタイプは、次のように機能性人工ニューラルネットワークに焦点を当てています-
- 単層パーセプトロン
- 多層パーセプトロン
単層パーセプトロン
単層パーセプトロンは、最初に作成されたニューラルモデルです。 ニューロンのローカルメモリの内容は、重みのベクトルで構成されます。 単層パーセプトロンの計算は、それぞれが重みのベクトルの対応する要素で乗算された値を持つ入力ベクトルの合計の計算に対して実行されます。 出力に表示される値は、アクティベーション関数の入力になります。
TensorFlowを使用した画像分類問題の単一層パーセプトロンの実装に焦点を当てましょう。 単層パーセプトロンを説明する最良の例は、「ロジスティック回帰」の表現です。
今、私たちはロジスティック回帰を訓練する次の基本的なステップを考えてみましょう-
- 重みは、トレーニングの開始時にランダムな値で初期化されます。
- トレーニングセットの各要素について、目的の出力と実際の出力の差で誤差が計算されます。 計算された誤差は、重みの調整に使用されます。
- このプロセスは、トレーニングセット全体で発生したエラーが指定されたしきい値以上になるまで、最大反復回数に達するまで繰り返されます。
ロジスティック回帰の評価のための完全なコードは以下に記載されています-
出力
上記のコードは、次の出力を生成します-
ロジスティック回帰は、予測分析と見なされます。 ロジスティック回帰は、データを記述し、1つの従属バイナリ変数と1つ以上の名義変数または独立変数との関係を説明するために使用されます。
TensorFlow-線形回帰
この章では、TensorFlowを使用した線形回帰の実装の基本的な例に焦点を当てます。 ロジスティック回帰または線形回帰は、順序離散カテゴリの分類のための教師あり機械学習アプローチです。 この章の目標は、ユーザーが予測変数と1つ以上の独立変数との関係を予測できるモデルを構築することです。
これらの2つの変数間の関係は、線形と見なされます。 yが従属変数であり、xが独立変数と見なされる場合、2つの変数の線形回帰関係は次の式のようになります-
線形回帰のアルゴリズムを設計します。 これにより、次の2つの重要な概念を理解できます。
- コスト関数
- 勾配降下アルゴリズム
線形回帰の概略図は以下に記載されています-
線形回帰の方程式のグラフィカルなビューは以下に記載されています-
線形回帰のアルゴリズムを設計する手順
ここで、線形回帰のアルゴリズムの設計に役立つ手順について学習します。
ステップ1
線形回帰モジュールをプロットするために必要なモジュールをインポートすることが重要です。 PythonライブラリNumPyとMatplotlibのインポートを開始します。
ステップ2
ロジスティック回帰に必要な係数の数を定義します。
ステップ3
回帰方程式の周りに300個のランダムなポイントを生成するための変数を繰り返します-
Y = 0.22x + 0.78
ステップ4
Matplotlibを使用して、生成されたポイントを表示します。
ロジスティック回帰の完全なコードは次のとおりです-
入力として取得されるポイントの数は、入力データと見なされます。
TensorFlow-TFLearnとそのインストール
TFLearnは、TensorFlowフレームワークで使用されるモジュール式で透過的なディープラーニングの側面として定義できます。 TFLearnの主な動機は、新しい実験を促進および表示するために、TensorFlowに高レベルのAPIを提供することです。
TFLearnの次の重要な機能を考慮してください-
- TFLearnは使いやすく、理解しやすいです。
- 高度にモジュール化されたネットワークレイヤー、オプティマイザー、およびそれらに埋め込まれたさまざまなメトリックを構築するための簡単なコンセプトが含まれています。
- TensorFlow作業システムとの完全な透過性が含まれています。
- 複数の入力、出力、オプティマイザーを受け入れる組み込みテンソルをトレーニングする強力なヘルパー関数が含まれています。
- 簡単で美しいグラフの視覚化が含まれています。
- グラフの視覚化には、重み、勾配、およびアクティベーションのさまざまな詳細が含まれます。
次のコマンドを実行してTFLearnをインストールします-
上記のコードを実行すると、次の出力が生成されます-
次の図は、ランダムフォレスト分類子を使用したTFLearnの実装を示しています-
TensorFlow-CNNとRNNの違い
この章では、CNNとRNNの違いに焦点を当てます-
CNN | RNN |
---|---|
It is suitable for spatial data such as images. | RNN is suitable for temporal data, also called sequential data. |
CNN is considered to be more powerful than RNN. | RNN includes less feature compatibility when compared to CNN. |
This network takes fixed size inputs and generates fixed size outputs. | RNN can handle arbitrary input/output lengths. |
CNN is a type of feed-forward artificial neural network with variations of multilayer perceptrons designed to use minimal amounts of preprocessing. | RNN unlike feed forward neural networks - can use their internal memory to process arbitrary sequences of inputs. |
CNNs use connectivity pattern between the neurons. This is inspired by the organization of the animal visual cortex, whose individual neurons are arranged in such a way that they respond to overlapping regions tiling the visual field. | Recurrent neural networks use time-series information - what a user spoke last will impact what he/she will speak next. |
CNNs are ideal for images and video processing. | RNNs are ideal for text and speech analysis. |
次の図は、CNNとRNNの概略図を示しています-
TensorFlow-ケラス
Kerasは、TensorFlowフレームワーク上で実行されるコンパクトで習得しやすい高レベルPythonライブラリです。 これは、形状や数学的詳細の概念を維持するニューラルネットワークのレイヤーの作成など、ディープラーニング技術の理解に重点を置いて作成されています。 フレームワークの作成は、次の2つのタイプにすることができます-
- シーケンシャルAPI
- 機能的なAPI
Kerasでディープラーニングモデルを作成するには、次の8つのステップを検討してください-
- データの読み込み
- ロードされたデータを前処理する
- モデルの定義
- モデルのコンパイル
- 指定されたモデルに適合
- 評価する
- 必要な予測を行う
- モデルを保存する
以下に示すように、出力の実行と表示にJupyter Notebookを使用します-
- ステップ1 *-データをロードし、ロードしたデータの前処理を最初に実装して、ディープラーニングモデルを実行します。
このステップは「ライブラリとモジュールのインポート」として定義できます。つまり、すべてのライブラリとモジュールが初期ステップとしてインポートされます。
- ステップ2 *-このステップでは、モデルアーキテクチャを定義します-
- ステップ3 *-指定したモデルをコンパイルしましょう-
- ステップ4 *-トレーニングデータを使用してモデルを近似します-
作成された反復の出力は次のとおりです-
TensorFlow-分散コンピューティング
この章では、分散TensorFlowを開始する方法に焦点を当てます。 目的は、TFサーバーなど、繰り返し発生する基本的な分散TFの概念を開発者が理解できるようにすることです。 Jupyter Notebookを使用して、分散TensorFlowを評価します。 TensorFlowを使用した分散コンピューティングの実装については、以下で説明します-
- ステップ1 *-分散コンピューティングに必須の必要なモジュールをインポートします-
- ステップ2 *-1つのノードでTensorFlowクラスターを作成します。 このノードは、「worker」という名前のジョブを処理し、localhost:2222で1つのテイクを実行します。
上記のスクリプトは、次の出力を生成します-
- ステップ3 *-各セッションのサーバー構成は、次のコマンドを実行して計算できます-
上記のコマンドは、次の出力を生成します-
ステップ4 *-サーバーである実行エンジンでTensorFlowセッションを起動します。 TensorFlowを使用してローカルサーバーを作成し、 *lsof を使用してサーバーの場所を見つけます。
- ステップ5 *-このセッションで利用可能なデバイスを表示し、それぞれのセッションを閉じます。
上記のコマンドは、次の出力を生成します-
TensorFlow-エクスポート
ここでは、TensorFlowでのMetaGraphの形成に焦点を当てます。 これは、TensorFlowのエクスポートモジュールを理解するのに役立ちます。 MetaGraphには、以前にトレーニングされたグラフのトレーニング、評価の実行、または推論の実行に必要な基本情報が含まれています。
以下は、同じためのコードスニペットです-
同じための典型的な使用モデルの一つは以下に記載されています-
TensorFlow-多層パーセプトロン学習
多層パーセプトロンは、人工ニューラルネットワークの最も複雑なアーキテクチャを定義します。 実質的にパーセプトロンの複数の層から形成されます。
多層パーセプトロン学習の図式表現は以下のとおりです-
MLPネットワークは通常、教師あり学習形式に使用されます。 MLPネットワークの典型的な学習アルゴリズムは、逆伝播アルゴリズムとも呼ばれます。
次に、画像分類問題のMLPを使用した実装に焦点を当てます。
上記のコード行は、次の出力を生成します-
TensorFlow-パーセプトロンの隠されたレイヤー
この章では、xおよびf(x)と呼ばれる既知の点のセットから学習する必要があるネットワークに焦点を当てます。 単一の非表示層がこの単純なネットワークを構築します。
パーセプトロンの隠れ層の説明のためのコードは以下に示すとおりです-
出力
以下は、機能層の近似の表現です-
ここでは、2つのデータがWの形で表されています。 2つのデータは次のとおりです。凡例セクションに表示される異なる色で表される訓練と検証。
TensorFlow-オプティマイザー
オプティマイザーは、特定のモデルをトレーニングするための追加情報を含む拡張クラスです。 オプティマイザークラスは指定されたパラメーターで初期化されますが、Tensorは必要ないことに注意することが重要です。 オプティマイザーは、特定のモデルのトレーニングの速度とパフォーマンスを改善するために使用されます。
TensorFlowの基本的なオプティマイザーは-
このクラスは、tensorflow/python/training/optimizer.pyの指定されたパスで定義されます。
以下はTensorflowのいくつかのオプティマイザーです-
- 確率的勾配降下
- 勾配クリッピングを使用した確率的勾配降下
- 勢い
- ネステロフの勢い
- アダグラード
- アダデルタ
- RMSProp
- Adam
- アダマックス
- SMORMS3
確率的勾配降下法に焦点を当てます。 同じためのオプティマイザーを作成するための図は以下に記載されています-
基本パラメーターは、特定の機能内で定義されます。 後続の章では、オプティマイザーの実装による勾配降下最適化に焦点を当てます。
TensorFlow-XOR実装
この章では、TensorFlowを使用したXOR実装について学習します。 TensorFlowでのXOR実装を開始する前に、XORテーブルの値を見てみましょう。 これは、暗号化および復号化プロセスを理解するのに役立ちます。
A | B | A XOR B |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
XOR Cipher暗号化方式は、基本的にブルートフォース方式では解読が困難なデータを暗号化するために使用されます。つまり、適切なキーに一致するランダムな暗号化キーを生成します。
XOR暗号を使用した実装の概念は、XOR暗号化キーを定義し、ユーザーが暗号化しようとするこのキーを使用して、指定された文字列の文字のXOR操作を実行することです。 次に、以下で説明するTensorFlowを使用したXOR実装に焦点を当てます-
上記のコード行は、以下のスクリーンショットに示すように出力を生成します-
TensorFlow-勾配降下最適化
勾配降下法の最適化は、データサイエンスの重要な概念と考えられています。
勾配降下最適化の実装を理解するために、以下に示す手順を検討してください-
ステップ1
勾配降下最適化を定義するために必要なモジュールとxおよびy変数の宣言を含めます。
ステップ2
必要な変数を初期化し、それぞれの関数で定義および呼び出すためのオプティマイザーを呼び出します。
上記のコード行は、以下のスクリーンショットに示すように出力を生成します-
出力に示されているように、必要なエポックと反復が計算されていることがわかります。
TensorFlow-グラフの形成
偏微分方程式(PDE)は微分方程式であり、いくつかの独立変数の未知の関数を持つ偏微分を含みます。 偏微分方程式を参照して、新しいグラフの作成に焦点を当てます。
寸法500 * 500平方の池があると仮定します-
次に、偏微分方程式を計算し、それを使用してそれぞれのグラフを作成します。 グラフを計算するための以下の手順を検討してください。
- ステップ1 *-シミュレーション用のライブラリをインポートします。
- ステップ2 *-2D配列を畳み込みカーネルに変換し、2D畳み込み演算を簡素化するための関数を含めます。
- ステップ3 *-反復回数を含めてグラフを計算し、それに応じてレコードを表示します。
グラフは以下のようにプロットされます-
TensorFlowを使用した画像認識
TensorFlowには画像認識の特別な機能が含まれており、これらの画像は特定のフォルダーに保存されます。 比較的同じイメージを使用すると、セキュリティ目的でこのロジックを簡単に実装できます。
画像認識コードの実装のフォルダ構造は以下のとおりです-
dataset_imageには、ロードする必要がある関連画像が含まれています。 ロゴを定義した画像認識に焦点を当てます。 画像は「load_data.py」スクリプトでロードされます。これは、画像内のさまざまな画像認識モジュールに関するメモを保持するのに役立ちます。
画像のトレーニングは、指定されたフォルダー内に認識可能なパターンを保存するのに役立ちます。
上記のコード行は、次のように出力を生成します-
ニューラルネットワークトレーニングの推奨事項
この章では、TensorFlowフレームワークを使用して実装できるニューラルネットワークトレーニングのさまざまな側面を理解します。
以下は、評価することができる10の推奨事項です-
バックプロパゲーション
バックプロパゲーションは偏微分を計算する簡単な方法で、ニューラルネットに最適な合成の基本形式が含まれます。
確率的勾配降下
確率的勾配降下では、*バッチ*はサンプルの合計数であり、ユーザーはこれを使用して1回の反復で勾配を計算します。 これまでのところ、バッチはデータセット全体であると想定されています。 最良の例は、Google規模での作業です。多くの場合、データセットには数十億または数千億の例が含まれています。
学習率の減衰
学習率の適応は、勾配降下最適化の最も重要な機能の1つです。 これは、TensorFlowの実装に不可欠です。
脱落
多数のパラメーターを持つディープニューラルネットは、強力な機械学習システムを形成します。 ただし、このようなネットワークでは過剰なフィッティングが深刻な問題です。
最大プーリング
最大プーリングは、サンプルベースの離散化プロセスです。 その目的は、入力表現をダウンサンプリングすることです。これにより、必要な仮定を使用して次元が低下します。
Long Short Term Memory(LSTM)
LSTMは、指定されたニューロン内でどの入力を使用するかに関する決定を制御します。 これには、何を計算し、どの出力を生成するかを決定するコントロールが含まれています。