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

ブログ    
ブログ    

推薦する

Googleのジェフ・ディーンが単独著者として執筆: ディープラーニング研究の黄金の10年

コンピュータの出現以来、人類は思考できる機械を創ることを夢見てきました。 1956 年、ジョン マッ...

Sitechiは新たなブルーオーシャンを開拓し、中小企業市場に注力

Sitechi は、通信業界に特化したソフトウェア開発およびサービス プロバイダーです。業界で最も早...

...

...

百度、検索エンジンアルゴリズムを調整して微博コンテンツのインデックスを強化

情報筋によると、検索エンジンの百度は先週、検索アルゴリズムを調整し、微博のコンテンツのインデックスを...

...

最も需要の高い AIGC 関連の仕事 11 選

AIGC は、ほぼすべての業界で急速に導入され、ビジネス界の状況を急速に変えています。企業は、ビジネ...

IT プロフェッショナルが CIO に人工知能について知ってほしい 9 つのこと

[51CTO.com クイック翻訳] 最高情報責任者 (CIO) と IT リーダーは、人工知能の実...

アンビエントコンピューティングが次の大きなトレンドになる理由

アンビエント コンピューティングとは、テクノロジーが環境にシームレスに溶け込み、日常生活に浸透する世...

AI研究も印象派から学べるのでしょうか?これらの生きているような人物は3Dモデルであることが判明した

19 世紀には、絵画、彫刻、版画などの分野で印象派の芸術運動が広まりました。その特徴は「形をほとんど...

...

...

業務自動化、中国海外土地投資のデジタル変革体験

デジタル変革の風があらゆる業界に吹き荒れています。人々の幸せな暮らしに影響を与える産業として、不動産...

アルゴリズムエンジニアとして働くために養豚場に行く?月20,000

[[282855]]皆さんご存知の通り、今年の「ブラザーツー」の値段は大変高く、信じられないほど高...

マスク着用時の顔認識成功率は80%以上。顔はどうやってあなたを裏切るのでしょうか?

[[388175]]今年の315では、物議を醸している顔認証が再び前面に押し出されました。自分の顔...