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

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 サイトの他の関連記事を参照してください。

声明
この記事は博客园で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Apr 25, 2025 am 12:28 AM

Arraysinpython、特にvianumpy、arecrucialinscientificComputing fortheirefficienty andversitility.1)彼らは、fornumericaloperations、data analysis、andmachinelearning.2)numpy'simplementation incensuresfasteroperationsthanpasteroperations.3)arayableminablecickick

同じシステムで異なるPythonバージョンをどのように処理しますか?同じシステムで異なるPythonバージョンをどのように処理しますか?Apr 25, 2025 am 12:24 AM

Pyenv、Venv、およびAnacondaを使用して、さまざまなPythonバージョンを管理できます。 1)Pyenvを使用して、複数のPythonバージョンを管理します。Pyenvをインストールし、グローバルバージョンとローカルバージョンを設定します。 2)VENVを使用して仮想環境を作成して、プロジェクトの依存関係を分離します。 3)Anacondaを使用して、データサイエンスプロジェクトでPythonバージョンを管理します。 4)システムレベルのタスク用にシステムPythonを保持します。これらのツールと戦略を通じて、Pythonのさまざまなバージョンを効果的に管理して、プロジェクトのスムーズな実行を確保できます。

標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?Apr 25, 2025 am 12:21 AM

numpyarrayshaveveraladvantages-averstandardpythonarrays:1)thealmuchfasterduetocベースのインプレンテーション、2)アレモレメモリ効率、特にlargedatasets、および3)それらは、拡散化された、構造化された形成術科療法、

アレイの均質な性質はパフォーマンスにどのように影響しますか?アレイの均質な性質はパフォーマンスにどのように影響しますか?Apr 25, 2025 am 12:13 AM

パフォーマンスに対する配列の均一性の影響は二重です。1)均一性により、コンパイラはメモリアクセスを最適化し、パフォーマンスを改善できます。 2)しかし、タイプの多様性を制限し、それが非効率につながる可能性があります。要するに、適切なデータ構造を選択することが重要です。

実行可能なPythonスクリプトを作成するためのベストプラクティスは何ですか?実行可能なPythonスクリプトを作成するためのベストプラクティスは何ですか?Apr 25, 2025 am 12:11 AM

craftexecutablepythonscripts、次のようになります

numpyアレイは、アレイモジュールを使用して作成された配列とどのように異なりますか?numpyアレイは、アレイモジュールを使用して作成された配列とどのように異なりますか?Apr 24, 2025 pm 03:53 PM

numpyarraysarasarebetterfornumeroperations andmulti-dimensionaldata、whilethearraymoduleissuitable forbasic、1)numpyexcelsinperformance and forlargedatasentassandcomplexoperations.2)thearraymuremememory-effictientivearientfa

Numpyアレイの使用は、Pythonで配列モジュール配列の使用と比較してどのように比較されますか?Numpyアレイの使用は、Pythonで配列モジュール配列の使用と比較してどのように比較されますか?Apr 24, 2025 pm 03:49 PM

NumPyArraySareBetterforHeavyNumericalComputing、whilethearrayarayismoreSuitableformemory-constrainedprojectswithsimpledatatypes.1)numpyarraysofferarays andatiledance andpeperancedatasandatassandcomplexoperations.2)thearraymoduleisuleiseightweightandmemememe-ef

CTypesモジュールは、Pythonの配列にどのように関連していますか?CTypesモジュールは、Pythonの配列にどのように関連していますか?Apr 24, 2025 pm 03:45 PM

ctypesallowsinging andmanipulatingc-stylearraysinpython.1)usectypestointerfacewithclibrariesforperformance.2)createc-stylearraysfornumericalcomputations.3)passarraystocfunctions foreffientientoperations.how、how、becuutiousmorymanagemation、performanceo

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター