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 つの方法

ブログ    
ブログ    
ブログ    

推薦する

医療AIの将来に注目すべき3つのトレンド

COVID-19の流行、メンタルヘルスの危機、医療費の高騰、人口の高齢化により、業界のリーダーたちは...

Xunlei 創設者 Cheng Hao: 人工知能起業における 6 つの核心課題

編集者注:この記事はWeChatの公開アカウントHaoge Says(ID:haogetalks)か...

AIが悪事を働いている?人工知能における倫理について考えなければなりません!

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

容量はGPT-2の1.7倍! Google がニューラル会話モデル Meena を開発

Google は、これは「真の」会話型 AI への試みであると述べた。チャットボットは高度に専門化さ...

世界的EDA大手のシノプシスは米国から情報漏洩の疑いで捜査を受けており、ファーウェイとSMICもその渦中に巻き込まれている。

再度調査中! 世界最大の半導体設計ソフトウェア(EDA)サプライヤーであるシノプシスは、中国に重要な...

顔認識システムに関するよくある質問8つ

今日のスマートフォンやノートパソコンに搭載されている顔認識機能のおかげで、顔認識テクノロジーの概念は...

...

エッジAIを真の変革に

エッジ AI の導入は幅広い業界で増加しています。この傾向が続くと、ビジネスだけでなく社会も変革する...

2020 年に爆発的に増加する 9 つの AI マーケティング トレンド

マーケティングに AI を使用すると、代理店の専門家の作業がさまざまな点で楽になります。消費者に合わ...

機械学習の錬金術の理論的根拠はどれほど強固なのでしょうか?

機械学習の分野は近年急速に発展しています。しかし、機械学習理論に対する理解は依然として非常に限られて...

Canvasの画像認識技術とインテリジェントデザインについて考える

[[403856]]著者は最近、フロントエンドの視覚化と構築の技術を研究しています。最近、設計図に基...

好むと好まざるとにかかわらず、AIクラウド運用はやってくる

[51CTO.com クイック翻訳] 私は過去30年間AIに触れてきましたが、AIの能力が過大評価さ...

...

マシンビジョンにはどのようなハードウェアが含まれていますか?

画像およびマシンビジョン技術を使用した産業オートメーションとインテリジェンスの需要があらゆる分野で広...