Python の例を使用して TensorFlow を始めるにはどうすればよいでしょうか?

Python の例を使用して TensorFlow を始めるにはどうすればよいでしょうか?

[[223516]]

この記事に付属するコードは、ここからダウンロードできます。

https://github.com/NMZivkovic/IntrouductionToTensorFlow

最近、私はサイドプロジェクトとして、C# で書かれたシンプルなニューラル ネットワーク プロジェクトを紹介しました。その記事で述べたように、提示された解決策は最善の解決策からは程遠いものです。このソリューションを専門的な用途に使用するには、さらに多くの数学計算と行列乗算が必要になります。幸いなことに、Google の優秀な人材がまさにそれを実現するライブラリ、TensorFlow を作成しました。これは人気のあるオープンソース ライブラリであり、おわかりのように、ニューラル ネットワークの計算に不可欠な数値計算に優れています。ディープラーニング分野で開発を行うための、ほとんどの主流プログラミング言語用のアプリケーションプログラミングインターフェースを提供します。

[[223517]]

TensorFlow はどのように機能しますか? そのソリューション全体は、TensorFlow の基本単位であるテンソルに基づいています。 TensorFlow は、テンソル データ構造を使用してすべてのデータを表します。数学において、テンソルは他の幾何学的オブジェクト間の線形関係を記述する幾何学的オブジェクトです。 TesnsorFlow では、これらは行列などの多次元配列またはデータです。実際にはそれほど単純ではありませんが、線形代数におけるテンソルの概念全体を深く掘り下げながら、その点についてこれからお話ししたいと思います。いずれにせよ、テンソルは n 次元配列として考えることができ、テンソルに行列演算を適用するのは簡単かつ効率的です。たとえば、次のコードでは、2 つの定数テンソルを定義し、一方の値を他方の値に追加します。

これが線形代数におけるテンソルの全体的な概念です。

定数の値は変化しないことは誰もが知っています。 TensorFlow には豊富な API があり、ドキュメントも充実しています。これを使用して、変数などの他の種類のデータを定義できます。

TensorFlow では、テンソルに加えて、データフロー グラフも使用します。グラフ内のノードは数学演算を表し、エッジはそれらの間で通信されるテンソルを表します。

インストールとセットアップ

TensorFlow は、Python、C++、Java、Go、Haskell、R (サードパーティ ライブラリの形式) など、さまざまなプログラミング言語用の API を提供します。さらに、さまざまな種類のオペレーティング システムをサポートしています。この記事では、Windows 10 で Python を使用するため、このプラットフォームでのインストール プロセスについて説明します。 TensorFlow は Python 3.5 と 3.6 のみをサポートしているため、システムにこれらのバージョンのいずれかがインストールされていることを確認してください。他のオペレーティング システムと言語については、公式のインストール ガイドを参照してください。他に知っておく必要があるのは、システムのハードウェア構成です。 TensorFlow をインストールするには 2 つのオプションがあります。

  • TensorFlow の CPU バージョンのみがサポートされています。
  • GPU をサポートする TensorFlow のバージョン。

システムに NVIDIA GPU が搭載されている場合は、GPU をサポートする TensorFlow のバージョンをインストールできます。もちろん、GPU バージョンの方が高速ですが、CPU バージョンの方がインストールと設定が簡単です。

Anaconda を使用して TensorFlow をインストールする場合は、次の手順に従ってください。

コマンドを実行して、conda 環境「tensorflow」を作成します。

  1. conda作成-n テンソルフロー pip python=3.5

作成した環境を次のコマンドでアクティブ化します。

  1. テンソルフローを有効にする

このコマンドを呼び出して、環境に TensorFlow をインストールします。 CPU バージョンの場合は、次のコマンドを実行します。

  1. pip インストール--ignore-installed --upgrade tensorflow  

GPU バージョンの場合は次のコマンドを実行します:

  1. pip インストール--ignore-installed --upgrade tensorflow-gpu  

もちろん、「ネイティブ pip」コマンドを使用して TensorFlow をインストールすることもできます。 CPU バージョンの場合は以下を実行します:

  1. pip3 インストール--upgrade tensorflow  

GPU TensorFlow バージョンの場合は、次のコマンドを実行します。

  1. pip3 インストール--upgrade tensorflow-gpu  

これでTensorFlowがインストールされました。次に、解決したい問題の解決を始めましょう。

アイリスデータセットの分類問題

Iris データセットは、MNIST データセットとともに、おそらくパターン認識の文献で最も有名なデータセットの 1 つです。これは、機械学習の分類問題に対する「Hello World」の例です。 1936 年にロナルド フィッシャーによって初めて導入されました。彼はイギリスの統計学者であり植物学者でもあり、今日まで頻繁に引用されている論文「生物学的分類の問題を解決するために複数の測定を使用する」の中でこの例を挙げています。データセットには 3 つのカテゴリが含まれており、それぞれに 50 個のインスタンスが含まれています。各カテゴリは、Iris setosa、Iris virginica、Iris versicolor などのアヤメ植物の種類です。最初の 2 つは線形に分離可能ですが、最後の 2 つは分離できません。各レコードには 5 つの属性があります。

  • 萼片の長さ(cm)
  • 萼片の幅(cm)
  • 花びらの長さ(cm)
  • 花びらの幅(cm)

クラス(アヤメ属、アヤメ属、アヤメ属)

私たちのニューラル ネットワークの目標は、他の特性に基づいてアイリスの種類を予測することです。つまり、属性値とカテゴリの関係を記述するモデルを作成する必要があります。

TensorFlow ワークフロー

ほとんどの TensorFlow コードは、次のワークフローに従います。

  • データセットのインポート
  • データを記述するための列を追加してデータセットを拡張する
  • モデルの種類を選択
  • トレーニングを始める
  • モデルの精度の評価
  • モデルを使用して結果を予測する

私の以前のブログ投稿をご覧になった方は、人工ニューラル ネットワークの開発はトレーニングと評価のプロセスと切り離せないことにお気づきかもしれません。これらのプロセスは通常、トレーニング用とトレーニングされたネットワークの精度をテストするための 2 つのデータセットに対して実行されます。多くの場合、データセットを取得したら、それを 2 つの別々のデータセットに分割し、一方をトレーニングに使用し、もう一方をテストに使用する必要があります。その比率は通常80%対20%です。今回はすべて私たちのために行われました。トレーニング データセットはここから、テスト データセットはここからダウンロードできます。または、ここから完全なコードとデータをダウンロードすることもできます。

コーディング

先に進む前に、まず開発に Spyder IDE を使用していることを述べておきます。そのため、この環境を使用してプロセス全体を説明します。

最初に行う必要があるのは、データセットをインポートして解析することです。これを行うには、別の Python ライブラリである Pandas を使用する必要があります。これは、Python 用の使いやすいデータ構造とデータ分析ツールを提供するもう 1 つのオープン ソース ライブラリです。

ご覧のとおり、最初に readcsv 関数を使用してデータセットをローカル変数にインポートし、次に入力 (train_x、test_x) と予想される出力 (train_y、test_y) を分離して 4 つの個別の行列を作成します。これらは次のようになります:

トレーニングとテスト用のデータを準備しました。ここで、ニューラル ネットワークに必要な特徴列を定義する必要があります。

ここで、使用するモデルを選択する必要があります。私たちの問題では、属性データに基づいてアイリスの種類を予測しようとしています。したがって、TensorFlow API から推定器を選択する必要があります。 Estimator クラスのオブジェクトは、TensorFlow グラフを構築し、TensorFlow セッションを実行するロジックをカプセル化します。この目的のために、DNN 分類器を使用します。それぞれ 10 個のニューロンを持つ 2 つの隠し層を追加します。

その後、トレーニング データセットから選択したデータを使用してニューラル ネットワークをトレーニングします。まず、トレーニング関数を定義します。この関数には、スケーリングして複数のバッチを作成し、トレーニング セットからデータを入力する必要があります。トレーニング サンプルがランダムであれば、トレーニング効果は向上します。そのため、シャッフル関数が呼び出されます。要約すると、train_function はトレーニング済みのデータセットを使用し、データからランダムにデータを選択し、そのデータを DNN 分類器のトレーニング方法にフィードバックして、大量のデータを作成します。

最後に、評価関数を呼び出してニューラル ネットワークを評価し、ネットワークの精度を算出します。

このコードを実行すると、次の結果が得られます。

つまり、私のニューラル ネットワークの精度は 0.93 となり、かなり良好です。その後、単一のデータで分類器を呼び出して、予測を行うことができます。

結論は 

ニューラル ネットワークは長い間存在しており、今日の重要な概念のほとんどすべては 70 年代または 80 年代にまで遡ることができます。この分野全体の進歩を妨げていた問題は、これらのプログラムを実行するための強力なコンピューターと GPU がなかったことです。今では、これが可能になっただけでなく、Google はオープンソースの TensorFlow という素晴らしいツールを作成することで、ニューラル ネットワークを普及させました。現在では、ニューラル ネットワークの実装をさらに簡素化する、より高レベルの API も存在します。 Keras など、いくつかは TensorFlow でも実行されます。この問題については、今後の記事でさらに詳しく検討する予定です。

英語のオリジナルリンク: https://rubikscode.net/2018/02/05/introduction-to-tensorflow-with-python-example/

<<:  ACM 発表: 2017 年チューリング賞はチップ業界の巨匠 2 名に授与される

>>:  チャットボット: ビジネスを成長させる 8 つの方法

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

9つの主要な回帰アルゴリズムと例のまとめ

線形回帰は、多くの場合、機械学習やデータサイエンスで最初に学ぶアルゴリズムです。シンプルでわかりやす...

世界の通信業界の専門家が2024年を予測

世界の通信業界の専門家が2024年を予測5G が世界をカバーし、人工知能がネットワークを再形成し、デ...

Google AI の 7 つの「型破りな」遊び方。どれも一日中遊べる

AI は真面目な仕事しかできないなんて誰が言ったのでしょうか? Google は最近、顔を見ながら生...

...

データ分析に人工知能を取り入れる方法

生成型 AI の台頭は、インターネットの誕生と同様の影響を及ぼしています。新しいテクノロジーが私たち...

データが増えるほど、AI は賢くなるのでしょうか?私たちはそれを常に当然のこととして受け止めてきました。

人工知能技術の台頭に伴い、AIの問題点が徐々に明らかになってきました。 AI による決定は、依然とし...

LangChain と Pinecone ベクトル データベースを使用してカスタム Q&A アプリケーションを構築する

LangChain、OpenAI、PineconeDB を使用して、任意のデータ ソースから質問応答...

人工知能トレーナーの秘密を明かす:新しい職業、AIの教師になるのは簡単ではない

[[322342]]現在、人工知能はさまざまな分野でその力を発揮しています。特に、電子商取引サービス...

興味深い記事:女の子を追いかけるためのさまざまなアルゴリズムを教える

動的プログラミング基本的に、それは次のことを意味します。女の子を追いかけるときは、彼女の親しい友達全...

AIシステムのセキュリティテストのための自動化ツール

高度なサイバー攻撃が増加していることから、サイバーセキュリティは今日マイクロソフトにとって最優先事項...

...

Google 研究者: AI が優秀すぎて「ラインを落とした」

数日前、人工知能の分野でほとんどブラックユーモアとも言えるニュースが発表された。Google のエン...

...

USPTO レポート: 人工知能を使わないと取り残される!

米国特許商標庁(USPTO)が10月27日に発表した新しい報告書によると、2018年のすべての新しい...

ディープラーニングへの扉を開くのに10分、コードはオープンソース

[[274072]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...