Pytouchのデータタイプtouch.utils.data.Data Loaderパラメータ詳細

6208 ワード

Data LoaderはPyTorchのデータタイプで、データの読み出し方法を定義しています.詳細については、本博主の別の編torch.utils.data.DataLoaderを参照することもできる(https://blog.csdn.net/qq_36653505/article/details/83351808)の議論をする
PyTorchではトレーニングモデルがよく使われていますが、このデータ構造はどのように長く、どのようにしてこのようなデータタイプを生成しますか?
以下で検討します.
まず、dataloader.pyのソースコードはどう書きますか?VS中はF 12でスクリプトにジャンプします.__init__(コンストラクション)におけるいくつかの重要な属性:
1、dataset:(データタイプdataset)
入力するデータの種類.名前を見るとデータベースのような感じがします.C〓の中にもdataset類があります.理論的には次のレベルのdatableがあるはずです.これは元のデータの入力であるべきです.PyTorch内にもこのようなデータ構造がある.ここではともかく、C钻と似ていると思いますが、ここでは入力データの種類がdatasetであることを知るだけでいいです.
2、batch_size:(データタイプint)
データを入力するたびの行数は、デフォルトでは1です.PyTorchトレーニングモデルの時にデータを呼び出すのは一行ではなく、一束ずつです.ここでは、毎回神経ネットワークに供給するデータの数を定義しています.1に設定すれば、1行ずつ行うことになります.
3、shuffle:(データタイプブック)
トランプを切る.デフォルトはFalseです.反復トレーニングのたびにデータをシャッフルするかどうかは、デフォルトの設定はFalseです.入力データの順序を狂わすのは、データの独立性を高めるためですが、データがシーケンスの特徴があるなら、Trueに設定しないでください.
4、collate_fn:(データタイプのcallable、見たことがないタイプ)
短いデータをデータリストに統合します.デフォルトの設定はFalseです.Trueに設定すると、システムは戻る前にテンソルデータをCUDAメモリにコピーします.(役割がよく分かりません.一旦Falseを黙認します.)
5、batch_sampler:(データタイプSampler)
一括サンプリングは、デフォルトではNoneに設定されています.しかし、毎回戻ってくるのはデータの索引です.彼とbatch_size、shuffle、sampler and drop_lastパラメータは互換性がありません.毎回入力ネットワークのデータはランダムサンプリングモードであるべきで、データはより独立した性質を持つことができる.したがって、一束ずつ順番に入力します.データシャッフル、データサンプリングなどのモードは互換性がありません.
6、sampler:(データタイプSampler)
サンプリング、標準設定はNoneです.定義されたポリシーに従ってデータセットからのサンプリング入力を行います.サンプルルールを定義するなら、シャッフル設定はFalseでなければなりません.
7、num_workers:(データタイプInt)
従事者の数は、デフォルトは0です.いくつのサブプロセスを使ってデータをインポートしますか?0に設定すると、メインプロセスを使ってデータをインポートします.注意:この数字は必ず0以上でなければなりません.マイナス値の推定は間違います.
8、ぴn_memory:(データタイプブック)
メモリを保存します.デフォルトはFalseです.データが戻る前に、CUDAメモリにデータをコピーしますか?
9、drop_last:(データタイプブック)
最後のデータを破棄します.デフォルトはFalseです.batch_が設置されていますsizeの数の後、最後のデータは設定された数ではなく、小さいかもしれません.この時にこのデータを捨てる必要がありますか?
10、timeout:(データタイプnumeric)
タイムアウト、デフォルトは0です.データ読み込みのタイムアウト時間を設定しますが、この時間を過ぎてもまだデータを読み込まないとエラーが発生します.したがって、値は0以上でなければなりません.
11、ウォーカーカーカーinit_fn(データタイプのcallable、見たことがないタイプ)
サブプロセスのインポートモードは、デフォルトはNounです.データの導入前とステップサイズが終了したら、ワークステーションのIDに従って順番にデータを導入します.
Data Loader類の属性定義から、このクラスの役割はデータがどのような形でどのようなネットワークに入力されているかを示しています.コードは普通こう書きます.
定義学習集Data Loader
トレイdata=toch.utils.data.Data Loader(各種設定…)
データを神経ネットに入れて訓練します.
for i,(input,target)in enumerate:循環コード行…
すべてデフォルトの設定でデータを入力すると、データは1行に1行ずつ神経ネットワークに入力されます.データの入力に特別な要求がある場合.
例えば、データの並びを崩したいですが、shuffleをTrueに設定できます.
たとえば、データは一括入力と思いますが、バッtch_を設定できます.sizeの数
例えば、ランダムに抽出したいモード入力は、samplerまたはbatch_を設定することができます.samplerサンプルのルールをどう定義すれば、sampler.pyスクリプトが見られますか?ここは重点ではない.
例えば、マルチスレッド入力のように、num_を設定することができます.ウォーカーの数
他のことはよく分かりませんが、後で実用化する時に特別な要求があったら検討してください.
Data Loaderクラスには3つの関数があります.
def __setattr__(self, attr, val):
        if self.__initialized and attr in ('batch_size', 'sampler', 'drop_last'):
            raise ValueError('{} attribute should not be set after {} is '
                             'initialized'.format(attr, self.__class__.__name__))

        super(DataLoader, self).__setattr__(attr, val)

def __iter__(self):
        return _DataLoaderIter(self)

def __len__(self):
        return len(self.batch_sampler)
鍵は2番目の関数です.
_.Data Loader Iterはまた一つのクラスで、一緒にData Loader.pyファイルに書かれています.
主に各種の設定を処理してどのように動作しますか?ここはそんなに多いに関わらず.
最後に、自分の古霊精変なデータを導入するなら、DataSetがどうやって操作しているかを確認します.touch.utils.dataは主に以下の三つの種類を含みます.
  • class touch.utils.data.Dataset他のデータセット類はtoch.utils.data.Datasetのサブクラスでなければなりません.例えば、tochvision.ImageFolder.
  • class touch.utils.data.sampler.Samplerパラメータ:data gausource(Dataset)–dataset to sample from役割:一つのサンプルを作成して、class touch.utils.data.sampler.SamplerはすべてのSamplerのベースクラスで、ここでiter(self)関数は一つのローズマリーを取得して、データの集中要素のインデックスを反復して、len(self)の長さ7956要素を返します.
  • class touch.utils.data Loader(dataset、batchusize=1、shuffle=False、sampler=None、batchuampler=None、num workers=0、collatchufn=1、pinumoreme=Falstre=Falstre=Falstre
    参照
    https://blog.csdn.net/rogerfang/article/details/82291464