この記事に付属するコードは、ここからダウンロードできます。 https://github.com/NMZivkovic/IntrouductionToTensorFlow 最近、私はサイドプロジェクトとして、C# で書かれたシンプルなニューラル ネットワーク プロジェクトを紹介しました。その記事で述べたように、提示された解決策は最善の解決策からは程遠いものです。このソリューションを専門的な用途に使用するには、さらに多くの数学計算と行列乗算が必要になります。幸いなことに、Google の優秀な人材がまさにそれを実現するライブラリ、TensorFlow を作成しました。これは人気のあるオープンソース ライブラリであり、おわかりのように、ニューラル ネットワークの計算に不可欠な数値計算に優れています。ディープラーニング分野で開発を行うための、ほとんどの主流プログラミング言語用のアプリケーションプログラミングインターフェースを提供します。
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 つのオプションがあります。
システムに NVIDIA GPU が搭載されている場合は、GPU をサポートする TensorFlow のバージョンをインストールできます。もちろん、GPU バージョンの方が高速ですが、CPU バージョンの方がインストールと設定が簡単です。 Anaconda を使用して TensorFlow をインストールする場合は、次の手順に従ってください。 コマンドを実行して、conda 環境「tensorflow」を作成します。
作成した環境を次のコマンドでアクティブ化します。
このコマンドを呼び出して、環境に TensorFlow をインストールします。 CPU バージョンの場合は、次のコマンドを実行します。
GPU バージョンの場合は次のコマンドを実行します:
もちろん、「ネイティブ pip」コマンドを使用して TensorFlow をインストールすることもできます。 CPU バージョンの場合は以下を実行します:
GPU TensorFlow バージョンの場合は、次のコマンドを実行します。
これでTensorFlowがインストールされました。次に、解決したい問題の解決を始めましょう。 アイリスデータセットの分類問題 Iris データセットは、MNIST データセットとともに、おそらくパターン認識の文献で最も有名なデータセットの 1 つです。これは、機械学習の分類問題に対する「Hello World」の例です。 1936 年にロナルド フィッシャーによって初めて導入されました。彼はイギリスの統計学者であり植物学者でもあり、今日まで頻繁に引用されている論文「生物学的分類の問題を解決するために複数の測定を使用する」の中でこの例を挙げています。データセットには 3 つのカテゴリが含まれており、それぞれに 50 個のインスタンスが含まれています。各カテゴリは、Iris setosa、Iris virginica、Iris versicolor などのアヤメ植物の種類です。最初の 2 つは線形に分離可能ですが、最後の 2 つは分離できません。各レコードには 5 つの属性があります。
クラス(アヤメ属、アヤメ属、アヤメ属) 私たちのニューラル ネットワークの目標は、他の特性に基づいてアイリスの種類を予測することです。つまり、属性値とカテゴリの関係を記述するモデルを作成する必要があります。 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 となり、かなり良好です。その後、単一のデータで分類器を呼び出して、予測を行うことができます。
|
<<: ACM 発表: 2017 年チューリング賞はチップ業界の巨匠 2 名に授与される
>>: チャットボット: ビジネスを成長させる 8 つの方法
業界の専門家は、人工知能(AI)の強力なサポートにより、医薬品の研究開発分野は大きな変化の波に見舞わ...
グラフニューラルネットワークは、グラフ構造のデータを分析および学習するための強力なフレームワークとな...
昨日、TensorFlow は正式に発表しました: TensorFlow 2.9 がリリースされまし...
Orange3 は、豊富なデータ処理、分析、モデリング機能を提供する強力なオープンソースのデータ視...
最近、Kuaishou-ICIP 2019モバイルビデオ復元コンテストの登録が正式に開始されました。...
Userdoc は、ソフトウェア要件ドキュメントの作成を支援する AI 支援サービスです。最近の...
道路安全保険協会(IIHS)が実施した調査によると、自動運転車は期待したほど事故を減らさない可能性が...
従来のラベル伝播法とシンプルなモデルを組み合わせると、一部のデータセットでは現在の最適な GNN の...
FuninUSA によれば、Microsoft、Google、IBM のビジョン システムが現実世界...
言語モデルはさまざまな NLP タスクで目覚ましい成功を収めていますが、その推論能力は不十分な場合が...
[[209261]]今年、Kaggle はデータ サイエンスと機械学習の状況を包括的に理解することを...