GPT時代の学習アルゴリズム、線形モデルを実装するPytorchフレームワーク

GPT時代の学習アルゴリズム、線形モデルを実装するPytorchフレームワーク

今日は線形回帰モデルの実装を続けます。ただし、今回はすべての関数を自分で実装するのではなく、Pytorch フレームワークを使用して実装を完了します。

コード全体はどの程度変更されますか?

1 つ目はデータ生成部分で、前の部分と似ています。

 import numpy as np import torch from torch.utils import data from d2l import torch as d2l
 true_w = torch.tensor([2, -3.4]) true_b = 4.2 features, labels = d2l.synthetic_data(true_w, true_b, 1000)

しかし、データの読み取りから始めると、状況は変わります。

前のコードでは、イテレータを独自に実装し、トレーニング データからランダムにデータを抽出しました。ただし、置換なしのサンプリング設計は使用せず、データシャッフル操作も実行しませんでした。

ただし、Pytorch フレームワークにはこれらのコンテンツ用の既成ツールが用意されているため、自分で実装する必要はありません。

ここでは、TensorDataset と DataLoader の 2 つのクラスが必要です。

 def load_array(data_arrays, batch_size, is_train=True): #@save """构造一个PyTorch数据迭代器""" dataset = data.TensorDataset(*data_arrays) return data.DataLoader(dataset, batch_size, shuffle=is_train)

これら 2 つのクラスの使用方法については、ChatGPT に直接問い合わせることができます。

写真

つまり、TensorDataset はテンソル データをカプセル化するために使用され、その主な機能は DataLoader と連携することです。

写真

DataLoader は、基本的なデータ読み取りに加えて、ランダム順序、サンプリング、マルチスレッド読み取りなどの機能も提供するイテレータです。

トレーニング データの反復子を取得するには、load_array を呼び出します。

 batch_size = 10 data_iter = load_array((features, labels), batch_size)

モデルパーツ

前回の実装では、線形回帰モデルのパラメータとして 2 つのテンソルを独自に作成しました。

しかし、そんなに面倒なことはする必要はありません。線形回帰は単層ニューラルネットワークとみなすことができます。原理と効果の点ではまったく同じです。したがって、対応する API を呼び出すことでモデルを簡単に実装できます。

 from torch import nn net = nn.Sequential(nn.Linear(2, 1))

ここで、nn はニューラル ネットワークの略です。nn.Linear(2, 1) は、入力次元が 2、出力次元が 1 の単層線形ネットワークを定義します。これは線形モデルと同等です。

nn.Sequential モジュール コンテナー。複数の入力ネットワーク構造を順番に完全なモデルに組み立てることができます。これはモデルを構築するための非常に一般的で便利な方法です。この方法に加えて、モデルを作成する他の方法もありますが、それらについては後で詳しく説明します。

写真

一般的に、モデルを作成した後は特に初期化する必要はありませんが、モデルのパラメータを調整する場合は、weight.data と weight.bias を使用してパラメータにアクセスできます。

 net[0].weight.data.normal_(0, 0.01) net[0].bias.data.fill_(0)

次に、損失関数を定義しましょう。Pytorch は損失関数の実装もカプセル化しているので、直接呼び出すことができます。

 loss = nn.MSELoss()

nn.MSELoss は平均二乗誤差であり、MSE は平均二乗誤差の略語です。

最後に、最適化アルゴリズムです。Pytorch は、モデル内のパラメータを更新する方法もカプセル化しています。モデルを更新するために、テンソルの勾配を手動で使用する必要はありません。最適化方法を定義し、自動的に作業を実行させるだけです。

 optim = torch.optim.SGD(net.parameters(), lr=0.03)

電車

最後のステップは、上記のすべての実装を連続して接続するモデルをトレーニングすることです。

プロセス全体に必要なコードはほんの数行だけです。

 num_epochs = 3 for epoch in range(num_epochs): for X, y in data_iter: l = loss(net(X) ,y) optim.zero_grad() l.backward() optim.step() l = loss(net(features), labels) print(f'epoch {epoch + 1}, loss {l:f}')

以前実装したモデルパラメータ更新部分は、optim.step() の行に置き換えられました。

モデルがどんなに複雑であっても、optim.step() を使用してパラメータを更新できるので、非常に便利です。

トレーニング後のモデルのパラメータ値も確認でき、これも設定に非常に近い値になっています。

写真

この時点で、線形回帰モデル全体の実装が完了します。

このモデルはすべてのモデルの中で最もシンプルで、そのシンプルさゆえに初心者に最適です。後で、より複雑なモデルに触れると、コードはより複雑になっているにもかかわらず、現在のフレームワークに従っていることがわかります。

<<: 

>>:  テクノロジー統合によるバーチャルキャラクターの創造と実践

ブログ    
ブログ    
ブログ    

推薦する

機械学習におけるモデルドリフト

今日、機械学習モデルはビジネス上の意思決定の主な原動力となっています。他のビジネス戦略と同様に、これ...

スマート製造における AI: イノベーションと効率の推進

AI 技術の継続的な革新と発展により、人工知能 (AI) は多くの分野で大きな進歩を遂げており、その...

ロボットやAIが事故を起こした場合、誰が責任を負うのでしょうか?

[[348005]]自動運転車が歩行者をはねた場合、法的責任を負うのは誰でしょうか?所有者、製造者...

今年のダブルイレブンでは、ドローン、無人運転車、ロボットがすべて配備されます!

近年、科学技術革命と産業変革の新たな局面の始まりに伴い、わが国の物流業界は情報化、デジタル化、インテ...

パラメータのわずか4%、GPT-3のパフォーマンスに匹敵:開発者がDeepMindのRETROを説明

BERT から GPT-2、そして GPT-3 へと、大規模モデルの規模は拡大し、そのパフォーマン...

メーター読み取りシステムにおける無線データ伝送モジュールの応用

周知のとおり、従来の手動メーター読み取り方法は時間がかかり、労働集約的であり、その正確性と適時性は保...

これら10機関からの24の調査データはAIのトレンドを理解するのに役立ちます

[[256519]] 2019年1月現在の人工知能の現状は?最近の調査では、AI の人気、測定可能な...

行動分析:誤解された人工知能がもたらすセキュリティリスク

誇大宣伝を信じるなら、人工知能 (AI) と機械学習 (ML) はすでに現代の IT インフラストラ...

エンドツーエンドの自動運転は、Apollo や autoware などのフレームワークに取って代わるでしょうか?

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

人工知能のセキュリティ:将来の戦争のリスクと課題

人工知能技術の発展に伴い、人工知能はあらゆる分野で広く利用されるようになり、人類社会に広範かつ深遠な...

量子人工知能研究における課題と機会

量子コンピューティングと人工知能の融合により、大きな期待と可能性を秘めた研究の最前線である量子人工知...

...

...

コード不要で再利用可能な AI が AI の溝を埋める方法

著者: ミシェル・ゾウ翻訳:李睿企画丨孫淑娊[51CTO.com クイック翻訳]事前に構築された A...

EUはAI法に加えて、GPT-4などの高機能モデルにも追加の規則と制約を追加する予定である。

今週末の12月10日、欧州連合はChatGPTを含む一般的な人工知能システムを対象とする世界初のAI...