この記事は公開アカウント「Reading Core Technique」(ID: AI_Discovery)から転載したものです。 人工知能、ディープラーニング、これらの言葉は、とても高尚で神秘的に聞こえますか?まるで、数学の博士号を持つ人だけが学べる高度な分野のようですか? 違います!Bilibiliが学習ウェブサイトになった今、インターネットで見つからないチュートリアルは何ですか?ディープラーニングは、少なくとも実践的な部分はこのようになっていますが、これまでになく簡単に始められます。 人工ニューラル ネットワークの基本理論は知っているが、実際に作成する方法を学んだことがない場合は、この記事に従って試してみてください。 PyTorch ライブラリで人工ニューラル ネットワーク操作を実装して、これまでに見たことのないデータに対して予測を行う方法について、基本的な理解が得られます。 この記事を読むのにかかる時間は最大でも 10 分です。コードに沿って読みたい場合は、必要なライブラリがインストールされていれば 15 分で済みます。信じてください、そんなに難しいことではありません。 長い話は短くして、始めましょう!
インポートステートメントとデータセット この簡単な例では、いくつかのライブラリを使用します。
単にコピーして貼り付けるだけの場合は、次のインポート ステートメントを参考にしてください。
データセットについては、Iris データセットはこの URL にあります。直接インポートする方法は次のとおりです
最初の数行を以下に示します。 ここで、名前列のアヤメの種名をカテゴリ値に変更または再マッピングする必要があります。 ——それは0、1、2です。手順は次のとおりです。
上記のコードを実行して取得される DataFrame は次のようになります。 おめでとうございます。第一歩を無事に踏み出しました! トレーニングセットとテストセットを分割する このセクションでは、Scikit-Learn ライブラリを使用してトレーニング セットとテスト セットを分割します。その後、分割されたデータは Numpy 配列から PyTorch テンソルに変換されます。 まず、Iris データセットを「特徴」と「ラベル セット」、つまり x と y に分割する必要があります。名前列は従属変数であり、残りは「機能」(または独立変数) です。 次にランダムシードも使用するので、以下の結果を直接コピーできます。コードは次のとおりです。
X_train から始まる最初の 3 行を調べると、次のようになります。 y_train から開始すると、次の結果が得られます。 基礎が築かれ、次のステップはニューラル ネットワークの構築を正式に開始することです。 ニューラルネットワークモデルの定義 モデルのアーキテクチャはシンプルです。注目すべきは、ニューラル ネットワークのアーキテクチャです。
それはそれくらいです。また、活性化関数としてReLUが使用されます。以下に、このアクティベーション関数をコードで実装する方法を示します。
PyTorch で使用されるモデルを宣言するオブジェクト指向の方法は非常に直感的です。コンストラクターでは、すべてのレイヤーとそのアーキテクチャを定義する必要があり、forward() を使用する場合は、フォワード パスを定義する必要があります。 次に、モデル インスタンスを作成し、そのスキーマが上記のものと一致することを確認します。
モデルをトレーニングする前に、次の点に注意する必要があります。
CrossEntropyLoss と Adam をコードで実装する方法は次のとおりです。
いよいよ待望のモデルトレーニング編です! モデルトレーニング この部分もかなり簡単です。モデルのトレーニングは、時間と損失を追跡しながら 100 エポック実行されます。現在のステータスは 10 ラウンドごとにコンソールに出力され、現在のラウンドと現在の損失が示されます。 コードは次のとおりです。
最後の 3 行が何のためなのか気になりますか? 答えは簡単です。バックプロパゲーション、つまりモデルが実際に「学習」するための重みとバイアスの更新です。 上記のコードを実行した結果は次のとおりです。 進歩は速いですが、軽視しないでください。 純粋な数字にはまったく興味がない場合は、次の図は損失曲線を視覚化したものです (x 軸は端数、y 軸は損失です)。 モデルのトレーニングは完了しました。次は何をすればよいでしょうか? もちろん、モデルの評価です。このモデルは、これまでに見たことのないデータに基づいて何らかの方法で評価する必要があります。 モデル評価 評価プロセス中に、モデルによって行われた予測を何らかの方法で追跡したいと考えています。 X_test を反復処理して予測を行い、予測値を実際の値と比較する必要があります。 ここでは関数を評価するだけなので、重みとバイアスを更新する必要はなく、torch.no_grad() を使用します。 要約すると、コードは次のようになります。
これで予測結果が preds 配列に保存されます。 Pandas DataFrame は、次の 3 つの値で構築できます。
コードは次のとおりです。
df の最初の 5 行を以下に示します。 次の質問は、実際にどのように精度を計算するかということです。 簡単です。Correct 列を合計し、df の長さで割るだけです。
このモデルは、これまでに見たことのないデータに対して 100% 正確です。ただし、これは Iris データセットが非常に簡単に分類できるためであり、ニューラル ネットワークが Iris データセットに最適なアルゴリズムであることを意味するものではないことに注意してください。 NN はこの種の問題には少々やり過ぎですが、それはまた別の機会に取り上げます。 これはおそらく、これまでに作成した中で最もシンプルなニューラル ネットワークです。データセットは完全に簡潔で、欠損値はなく、レイヤーとニューロンは最小限です。この記事には高度な内容や難解な内容は一切なく、理解できると思います。 |
<<: カメラを開くと、2Dイラストがリアルタイムでアニメーション化されます。中国のプログラマーが制作し、デモはオンラインで入手できます。
>>: デジタルイノベーション:次の世界的危機に対応するための重要な要素
人工知能がもたらす脅威について議論するとき、スカイネット、マトリックス、ロボットによる終末の世界とい...
研究によると、人工知能は強力に聞こえますが、現在の高度な人工知能は、人間の 4 歳児が簡単に解決でき...
顔検出は、幅広いアプリケーションと多くの研究者を抱えるコンピューター ビジョンの古くからのトピックで...
少し前、ニューヨーク・タイムズ紙は、OpenAI が自社のコンテンツを人工知能開発のために違法に使用...
[[430265]]ランサムウェアの脅威は目新しいものではありませんが、依然としてニュースの見出し...
[[277051]]これまでの共有を通じて、顔認識の一般的なプロセスを理解しました。主に次のプロセス...
著者 | 王昊レビュー | Chonglou近年、推奨システムにおけるランク付け学習の応用は非常に稀...