高レベルAPIとは ディープラーニングは、人工知能時代の中核技術として、近年、学術界と産業界の両方でますます重要な役割を果たしています。しかし、ディープラーニングの理論は習得が難しすぎる上、開発プロセスも複雑すぎるため、多くの人がディープラーニングから遠ざかっています。 ディープラーニングの学習プロセスを簡素化し、ディープラーニング開発の難易度を軽減するために、Baidu PaddlePaddle フレームワークは 1 年近くの改良を経て、ディープラーニング API を継続的に最適化し、開発者の使用シナリオに合わせてカプセル化してきました。最新バージョンの PaddlePaddle フレームワークでは、高度な統合と科学的な統一性を備えた新しい PaddlePaddle API システムがリリースされました。 PaddlePaddle フレームワークは、API を基本 API と高レベル API の 2 種類に分類します。ピザ作りを例にとると、一般的に2つの方法があります。1つは小麦粉、牛乳、ハムなどの材料を用意し、丁寧に加工しておいしいピザを作る方法です。2つ目は、販売者から焼き上がったピザと用意された具材を購入し、ピザを直接温めて食べる方法です。 では、これら 2 つの方法の違いは何でしょうか?方法 1 を使用すると、自分で材料を用意し、料理を混ぜ合わせ、好みに合わせてソースを作り、さまざまな味を満足させることができます。ただし、これは「経験豊富な人」に適しています。初心者の場合は、惨めに失敗する可能性があります。方法 2 は、販売者から事前に焼かれたピザとフィリングを使用し、直接加熱して非常に迅速にピザを作ることです。味は保証されます。ただし、方法 1 と比較すると、味の選択肢は少なくなります。 フレームワークを例に挙げると、基本 API は方法 1 に対応し、高レベル API は方法 2 に対応します。基本 API を使用すると、制限なしに好きなように独自のディープラーニング モデルを構築できます。方法 2 を使用すると、モデルを迅速に実装できますが、自律性が低くなる可能性があります。 ただし、ピザを作るのとは異なり、PaddlePaddle フレームワークを使用すると、両方の長所を活かすことができます。高レベル API 自体は独立したシステムではないため、基本 API と組み合わせて使用することで高レベルと低レベルの統合を実現でき、より便利に使用できるようになります。これにより、開発プロセス中に高レベル API の利便性を考慮しながら、基本 API のパワーを享受できるようになります。 高レベルAPI、すべて PaddlePaddle フレームワークの高レベル API の全体像は次のとおりです。 図からわかるように、PaddlePaddle フレームワークの高レベル API は、データの読み込み、モデルの構築、モデルのトレーニング、モデルの視覚化、高レベルの使用の 5 つのモジュールで構成されています。 PaddlePaddle フレームワークは、さまざまな使用シナリオに合わせてさまざまな高レベル API を提供し、開発の難易度を軽減し、誰もが簡単にディープラーニングを始められるようにします。 まず、ディープラーニングにおける典型的な手書き数字分類タスクを通じて、PaddlePaddle の高レベル API を簡単に見てみましょう。次に、各モジュールに含まれる API について詳しく紹介します。
例からわかるように、データの前処理、データの読み込み、モデルのネットワーク化、モデルのトレーニング、モデルの評価、モデルの保存などのシナリオでは、1 ~ 3 行のコードで高レベル API を実装できます。数十行のコードを必要とする従来の方法と比較して、高レベル API では、MNIST 分類器を簡単に実装するために必要なコードは数十行だけです。非常に少ないコードで基本 API と同じ効果を実現できるため、ディープラーニングの学習しきい値が大幅に下がります。 初めてディープラーニング フレームワークを学習し、PaddlePaddle 高レベル API を使用する場合、「とても面倒だ。なぜ PaddlePaddle 高レベル API がこんなに早く開発されたのか? まだ数行のコードを書きたい!」と言うかもしれません。 高レベルAPI、その方法 次に、CV タスクを例に、さまざまなシナリオで PaddlePaddle 高レベル API を使用する方法を簡単に紹介します。 この例の完全なコードは AI Studio で入手できます。ソフトウェアやハードウェア環境を準備することなく、オンラインで直接コードを実行できます。とても便利です: https://aistudio.baidu.com/aistudio/projectdetail/1243085 1. データの前処理とデータの読み込み データのロードについては、いくつかの一般的なタスクでは、PaddlePaddle フレームワークの組み込みデータ セットを使用してデータのロードを完了できます。 PaddlePaddle フレームワークは、一般的に使用されるデータセットをドメイン API として使用し、それらを paddle.vision.datasets ディレクトリに統合します。これには、CV 分野で一般的な MNIST、Cifar、Flowers などのデータセットが含まれます。 データ前処理のシナリオでは、PaddlePaddle フレームワークは 20 を超える一般的な画像前処理 API を提供し、画像の色相、コントラスト、彩度、サイズなどのさまざまなデジタル画像処理方法などのデータ強化を迅速に実装できます。画像前処理 API は paddle.vision.transforms ディレクトリに統合されており、非常に便利です。データ前処理変換を作成し、その中に必要なデータ前処理メソッドを保存し、データ読み込みプロセス中にその変換をパラメーターとして渡すだけです。 さらに、独自のデータセットをロードする必要がある場合は、Paddle フレームワークの標準データ定義およびデータロード API である paddle.io.Dataset と paddle.io.DataLoader を使用して、データセットの定義とデータのロードをワンクリックで完了できます。ここでは、Dataset を使用してデータ セットを定義する方法を示す例を示します。例は次のとおりです。
【ヒント: データセットの定義については、PaddlePaddle フレームワークはマップ スタイルと反復可能スタイルの両方のデータセット定義をサポートしています。それぞれ paddle.io.Dataset と paddle.io.IterableDataset を継承するだけで済みます。 】 2. ネットワーク構築 ネットワーク構築モジュールでは、PaddlePaddle の高レベル API が基本 API と一貫性があり、ネットワーク構築には paddle.nn 下の API が統一的に使用されます。 paddle.nn ディレクトリには、畳み込みに関連する Conv1D、Conv2D、Conv3D、再帰型ニューラル ネットワークに関連する RNN、LSTM、GRU など、モデル ネットワーキングに関連するすべての API が含まれています。 ネットワーク メソッドについては、PaddlePaddle フレームワークはモデル構築に Sequential または SubClass をサポートします。 Sequential は線形ネットワーク構造を素早く構築するのに役立ちますが、SubClass はより豊富で柔軟なネットワーク構造をサポートします。実際の使用シナリオに基づいて、最も適切なネットワーク方法を選択できます。たとえば、順次線形ネットワーク構造の場合、Sequential を直接使用できます。より複雑なネットワーク構造の場合は、SubClass を使用してモデルを構築し、__init__ コンストラクターで Layer を宣言し、宣言された Layer 変数を forward で使用して順方向計算を行います。 Sequential と SubClass の例をそれぞれ見てみましょう。 1. シーケンシャル 線形ネットワーク モデルの場合、ネットワーク モデル構造の順序に従って Sequential にレイヤーを追加するだけです。具体的な実装は次のとおりです。
2. サブクラス SubClass を使用したネットワークの実装は次のとおりです。
上記の SubClass ネットワーキングの結果は、Sequential ネットワーキングの結果とまったく同じです。SubClass ネットワーキングを使用すると、Sequential ネットワーキングを使用するよりも複雑になることがはっきりとわかります。ただし、これによりネットワーク モデル構造に柔軟性がもたらされます。さまざまなシナリオに対応するために、さまざまなネットワーク モデル構造を設計できます。 3. PaddlePaddleフレームワーク組み込みモデル カスタマイズされたモデル構造に加えて、PaddlePaddle フレームワークには多くの組み込みモデルが「思慮深く」用意されており、わずか 1 行のコードでディープラーニング モデルを実装できます。現在、PaddlePaddle フレームワークに組み込まれているモデルはすべて CV 分野のモデルであり、一般的な vgg シリーズ、resnet シリーズ、その他のモデルを含め、すべて paddle.vision.models ディレクトリにあります。使い方は次のとおりです:
3. モデルの可視化 モデルの構築が完了したら、モデルのネットワーク構造とパラメータを視覚化する必要がある場合があります。モデルを Model でカプセル化し、model.summary を呼び出すだけで、次のようにネットワーク モデルの視覚化を実現できます。
出力は次のようになります。
Model.summary は、ネットワークの各層の形状だけでなく、ネットワークの各層のパラメータ数とモデルのパラメータの合計数も示すため、モデルのすべての情報を非常に便利かつ直感的に確認できます。 4. モデルのトレーニング 1. 高レベルAPIを使用してすべてのデータセットをトレーニングする これまで、ディープラーニングの開発者を悩ませてきた問題は、モデルトレーニングのコードが複雑すぎることでした。プログラムを実行するには多くの手順が必要になることが多く、コードが長いため多くの開発者がやる気をなくしていました。 現在、PaddlePaddle の高レベル API は、トレーニング、評価、予測 API をカプセル化しています。Model.prepare()、Model.fit()、Model.evaluate()、Model.predict() を直接使用して、モデルのトレーニング、評価、予測を完了できます。 従来のフレームワークでは、多くの場合、大量のトレーニング コードが必要になります。 PaddlePaddle の高レベル API を使用すると、モデルのトレーニングを 3 ~ 5 行以内で完了できるため、開発コードの量が大幅に簡素化され、初心者の開発者にとって非常に使いやすくなります。具体的なコードは次のとおりです。
2. 高レベルのAPIを使用して、データセットのバッチでトレーニング、検証、テストを行う 場合によっては、データをバッチでサンプリングしてから、モデルのトレーニングと検証を完了する必要があります。この場合、次のように train_batch、eval_batch、predict_batch を使用して、バッチでトレーニング、検証、テストを完了できます。
5. 高度な使い方 さらに、PaddlePaddle 高レベル API は、カスタム Loss、カスタム Metric、カスタム Callback などの高度なゲームプレイもサポートします。 カスタマイズされた損失とは、フレームワークの既存の損失インターフェースに損失計算方法が存在しない、またはアルゴリズムがニーズを満たさない特定のタスクに遭遇することがあるため、損失を自分でカスタマイズしたいと考えることを意味します。 メトリックのカスタマイズと損失のカスタマイズのシナリオは同じです。パーソナライズされた方法で実装したい操作が発生した場合は、フレームワークを使用してカスタマイズされた評価計算方法を完成させることもできます。 カスタム コールバックは、トレーニング中にいくつかのパラメータとデータを収集するのに役立ちます。Model.fit() はトレーニング プロセスをカプセル化するため、トレーニング中に損失、メトリック、およびその他の情報を保存する必要がある場合は、コールバック パラメータを通じてこの情報を収集する必要があります。 もっと豊富な遊び方については、記事の最後にあるQRコードをスキャンして入手してください〜 高レベルAPI、次へ 上記の記事では、CV タスクを例にして、PaddlePaddle フレームワークの高レベル API の使用ガイドを紹介しています。その後、PaddlePaddleフレームワークは、データのパディング、データセットの語彙の取得など、NLP分野専用のデータ前処理モジュールもリリースする予定です。ネットワークに関しては、ネットワーク関連のsequence_mask、評価指標関連のBLEUなど、NLP分野のネットワーク専用のAPIも実装します。最後に、NLP分野のアーティファクトトランスフォーマーについても、特定の最適化を実行します。これらの機能がリリースされたら、できるだけ早くお知らせしますので、お楽しみに〜 高レベルAPI、 PaddlePaddle 高レベル API の使用法の紹介を読んだ後、試してみたくなりましたか? 体験方法1:オンライン体験 ソフトウェアやハードウェア環境を準備する必要はありません。次のアドレスに直接アクセスして、オンラインでコードを実行し、効果を確認できます: https://aistudio.baidu.com/aistudio/projectdetail/1243085 体験方法2:現地体験 それでもローカル コンピューターで体験したい場合は、PaddlePaddle オープン ソース フレームワーク 2.0 がローカル コンピューターに正常にインストールされていることを確認する必要があります。 以下では、PaddlePaddle オープンソース フレームワーク 2.0 のインストール方法について説明します。以下のコマンドを参照して、pip を使用して直接インストールできます。インストール後、高レベル API の使用を開始できます。 # CPUバージョン
|
<<: 新しい検索エンジンのスキル: アリババの新しい研究では、2D 画像を使用して 3D モデルを検索します
事前トレーニングの時代に入ってから、視覚認識モデルのパフォーマンスは急速に向上しましたが、生成的敵対...
人工知能は長年にわたって世界を支配しており、さまざまな分野における主要な問題が AI を使用して解決...
環境と自律的に対話し、収集したデータに基づいて決定を下し、人間の介入を最小限に抑えてシナリオベースの...
[[212457]]ディープラーニング技術により、モノのインターネット (IoT) デバイスは非構...
[[324391]]インターネットの破壊的イノベーションは、自らの業界から生まれることはありません...
「ディープラーニングフレームワークは、インテリジェント時代のオペレーティングシステムです。百度のP...
テクノロジーの発展はしばしば諸刃の剣であり、人工知能の商業化も一定の原則に従う必要があります。 6月...
私たちの生活、仕事、交流の仕方に革命をもたらす技術の進歩によって、未来は常に形を変えています。今後 ...
[[256247]]アルゴリズムは私たちにどう考えるべきかを教え、それが私たちを変えています。コン...
サイバーセキュリティ分野特有の敵対的性質は、人工知能アプリケーションの実装に多くの困難をもたらしてき...
「 AI攻撃を阻止するために人力を使うことはできません。AIと戦うにはAIを使わなければなりません。...
誰かが実際に大規模モデルで MBTI をテストしたというのは驚くべきことです。結果は良好です。 Ch...
GPT-3とLlamaに「AはBである」という単純な知識を教え、次にBが何であるかを尋ねました...