Pytorchディープラーニング入門記1(Pycharmのバージョン、環境インストールの落とし穴、設定プロジェクト)
記事ディレクトリ
環境要件と環境構成
必要な環境
Pycharm (Pro) のバージョンは、過去 2 ~ 3 年以内のものであれば、あまり古いものであってはなりません。
Anaconda3+Python (バージョン = 3.9) anaconda のインストールに関するナニーレベルのチュートリアルが多数あります (チュートリアル ポータル: https://blog.csdn.net/qq_45344586/article/details/124028689)。または、自分で検索することもできます。
ピトーチ
CUDA11+
カドン
環境構成と注意事項
Pytorch 公式 Web サイトのダウンロード ページ (ポータル: https://pytorch.org/get-started/locally/) にアクセスし、「このコマンドを実行する」の指示を Pycharm ターミナルまたはシステム cmd にコピーして、ダウンロードを開始します (従来のコマンドとは異なります)。ウェブサイトをクリックしてダウンロードする場合も同じ方法が使用されます);
コンピューターに GPU が搭載されている場合は、CUDA+CuDNN をインストールすることをお勧めします。以下に示すように、タスク マネージャー – パフォーマンスの方法を確認してください。
CUDA+CuDNN のインストールに関しては、インターネット上によく書かれた詳細なチュートリアルもあります。一般的な手順についてはチュートリアルに従ってください (チュートリアル ポータル: https://blog.csdn.net/dreamerzc/article/details/120599278) )、ここで、新しいバージョンの pytorch で注意すべきいくつかの落とし穴について話しましょう。
-
インターネット上の多くのチュートリアルでは、CUDA10.2 周辺のバージョンをインストールするよう説明されています。Windows システムを使用している場合、Pytorch の新しいバージョンは GPU CUDA10バージョンをサポートしなくなったため、CUDA11+ バージョンをダウンロードする必要があります。そうでない場合は、 CUDA10 のダウンロードが完了しました。2 その結果、pytorch Web サイトに入ると、次のものが表示されます。
-
CUDA のメジャー バージョンは、そのバージョン内で下位互換性があります。たとえば、CUDA11.7 をダウンロードした場合、Pytorch をインストールするときに、バージョン 11.6 に適合するものを自由に選択できます。ただし、CUDA11.3 をダウンロードした場合は、そのバージョンに適合しません。 Pytorch をインストールする必要はありません。インストールはバージョン 11.6 に適用され、インストールは pytorch バージョン 11.3 以下に適用されます。
-
CUDA をインストールするときは、チュートリアルに従って、グラフィック カードがダウンロードする CUDA と互換性があるかどうかを確認してください。これは非常に重要です。そうでないと、大きな問題が発生する可能性があります。!
-
パッケージのバージョンが pytorch と競合するのを避けるために、ダウンロード コマンド (コマンド: conda create -n 環境名 python=3.x) を入力する前に、新しい conda 環境を作成することをお勧めします。
コンピューターに NVIDIA シリーズ GPU が搭載されていない場合、または CPU を使用して Pytorch を実行したい場合は、 Pytorch 公式 Web サイトから CPU バージョンをダウンロードすることを直接選択できます (またはオンラインで pytorch 清華イメージを検索します)。ダウンロードしてインストールする必要はありません。
Pytorch の初期理解
dir() 関数と help() 関数
この 2 つの機能は、Pytorch を使用する上で、各モジュールの使い方や注意点、各モジュールの機能を理解するのに役立ち、正式な正式な使い方なので非常に便利です。
使用法:
-
pycharm のコンソールを開き、torch パッケージをインポートし (import pytorch ではなく import torch であることに注意してください)、次に dir(torch) と入力すると、pytorch 内に多くのモジュールが表示されます。
-
各 torch モジュールについては、フォルダーを含むフォルダーと同様に、 dir 関数を使用してモジュールを細分化することもできます (torch.sum を例にします)。
-
help 関数をもう一度見て、help(sum) と入力してみましょう。
ここには非常に詳細な使用方法と例が記載されています。Python 学習 (pytorch だけでなく) では、これら 2 つの関数を使用すると、Baidu にアクセスせずに、さまざまなパッケージ、ライブラリ、関数の使用法を理解するのに役立ちます。
データロード
一般的なデータ構成フォーム
一般に、トレーニング データには、データ自体とラベルの 2 つの要素があります。
- 最初のタイプのラベルは比較的単純です。たとえば、分類情報のみが含まれており、ラベルを使用してデータに直接名前を付けることができます。
- 次に、NLP や画像処理データに遭遇した場合、ラベルはより複雑になる可能性があり、直接名前を付けるのは不便です。このとき、データはフォルダー内にあり、ラベルは別のフォルダーに保存される可能性があります。各ラベルの名前はデータと同じで、ファイル名はデータに対応します。
データセットの初期理解
今すぐ学び、今すぐ使用してください。ヘルプ機能を直接使用して、データセットの機能情報を表示します (複雑すぎると思われても問題ありません。このコードをスキップして以下を読んでください)。
help(torch.utils.data.Dataset)
Help on class Dataset in module torch.utils.data.dataset:
class Dataset(typing.Generic)
| An abstract class representing a :class:`Dataset`.
|
| All datasets that represent a map from keys to data samples should subclass
| it. All subclasses should overwrite :meth:`__getitem__`, supporting fetching a
| data sample for a given key. Subclasses could also optionally overwrite
| :meth:`__len__`, which is expected to return the size of the dataset by many
| :class:`~torch.utils.data.Sampler` implementations and the default options
| of :class:`~torch.utils.data.DataLoader`.
|
| .. note::
| :class:`~torch.utils.data.DataLoader` by default constructs a index
| sampler that yields integral indices. To make it work with a map-style
| dataset with non-integral indices/keys, a custom sampler must be provided.
|
| Method resolution order:
| Dataset
| typing.Generic
| builtins.object
|
| Methods defined here:
|
| __add__(self, other: 'Dataset[T_co]') -> 'ConcatDataset[T_co]'
|
| __getitem__(self, index) -> +T_co
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __orig_bases__ = (typing.Generic[+T_co],)
|
| __parameters__ = (+T_co,)
|
| ----------------------------------------------------------------------
| Class methods inherited from typing.Generic:
|
| __class_getitem__(params) from builtins.type
|
| __init_subclass__(*args, **kwargs) from builtins.type
| This method is called when a class is subclassed.
|
| The default implementation does nothing. It may be
| overridden to extend subclasses.
このためには多くの組み込み関数が使用されますが、これらの関数メソッドについては後ほど特別記事で詳しく説明するとして、ここでは最初によく使用される 3 つの関数を紹介します。
データセットを作成するときは、まずデータセットのクラスを構築する必要があります。たとえば、Mydataset というクラスです。
よく使用される 3 つの関数 (オブジェクト指向プログラミングの基本知識が必要):
- init 初期化関数: クラスを初期化します。この関数は、インスタンスの作成時に実行されます。一般に、CPP のコンストラクターと同様に、いくつかの「グローバル」変数などを定義するために使用されます。
- getitem 関数: データ情報 (アドレスなど) を取得します。デフォルトの形式は def getitem (self, item) ですが、通常は def getitem (self, idx) に変更されます。
- len関数:データ長などの情報を取得します。
時限式
getitem 関数がデータ ファイル アドレス (画像アドレスなど) を取得する必要がある場合、Python の OS オペレーティング システム ライブラリを使用してファイル アドレスをリストに変換する必要があることにここで言及する必要があります。
import os //使用os
dir_path = "文件夹路径,可以相对可以绝对,windows系统下需要注意斜线转义"
img_path_list = os.listdir(dir_path) //将文件夹中的所有图片变成列表
それを実証してみましょう:
-
画像(データ)フォルダをプロジェクトにコピーする
-
画像フォルダーを右クリックし、絶対パスまたは相対パスのコピー パスを選択します (操作を簡略化するためのヒントで、ファイル エクスプローラーに移動してコピーする必要がなくなります)。
-
Python コンソールにコードを入力します (エスケープを防ぐために、ファイル パスには平行棒を追加するか、引用符の前に r を追加する必要があることに注意してください): [外部リンクの画像転送に失敗しました。ソース サイトには、リーチ防止メカニズムが存在する可能性があります。画像を保存して直接アップロードすることをお勧めします。
このファイル名配列を使用すると、配列インデックスを通じて各データ ファイルに簡単にアクセスできます。インデックス アクセスを容易にするために、getitem 関数の 2 番目のパラメーターが idx に変更されました。最も重要なことは、良い習慣を身に付けることです~
結論
この記事では主に pytorch 環境のインストールとデータロードの大まかな流れを記録し、次の記事ではサンプルコードとデータロードの説明を詳しく説明します。
グループでは、配列インデックスを通じて各データ ファイルに簡単にアクセスでき、インデックス アクセスを容易にするために getitem 関数の 2 番目のパラメーターが idx に変更されました。最も重要なことは、良い習慣を身に付けることです~
結論
この記事では主に pytorch 環境のインストールとデータロードの大まかな流れを記録し、次の記事ではサンプルコードとデータロードの説明を詳しく説明します。
この記事は初心者向けの記事となっておりますが、同時に pytorch も勉強中ですので、抜けがある場合は、追加・修正していただければ幸いです~