概要
本記事はfast.aiのwikiのBasic Dataページの要約となります。
筆者の理解した範囲内で記載します。
TrainingのためのDataを準備するための簡易API。
具体的には、Learnerモジュールに用いるData Bunchオブジェクトを用いる。
Data Bunch
DataBunch(train_dl:DataLoader, valid_dl:DataLoader, fix_dl:DataLoader=None, test_dl:Optional[DataLoader]=None, device:device=None, dl_tfms:Optional[Collection[Callable]]=None, path:PathOrStr='.', collate_fn:Callable='data_collate', no_check:bool=False)
Dataオブジェクトにtrain_dl
valid_dl,
test_dl
(随意)を結びつける。(dlはdataloaderの省略形)
全てのdataloaderがdeviceに取り付けられていることと、tfms
でdata augmentationがなされていることを保証し、
collate_fn
にてPyTorchのDataloader
にbatchごとのデータとファイル名の照合を促す。
なお、train_dl
valid_dl
test_dl
(随意) はDeviceDataLoader
に包まれている。
create
create(train_ds:Dataset, valid_ds:Dataset, test_ds:Optional[Dataset]=None, path:PathOrStr='.', bs:int=64, val_bs:int=None, num_workers:int=4, dl_tfms:Optional[Collection[Callable]]=None, device:device=None, collate_fn:Callable='data_collate', no_check:bool=False, **dl_kwargs) → DataBunch
Data Bunch
クラスをbs
(batch size)でtrain_dl
valid_dl
test_dl
より生成。
show_batch
show_batch(rows:int=5, ds_type:DatasetType=<DatasetType.Train: 1>, **kwargs)
指定したrow
にてdataのbatchを表示。
dl
dl(ds_type:DatasetType=<DatasetType.Valid: 2>) → DeviceDataLoader
ds_type
にて指定されたvalidation,training,testのDataset
を返す。
one_batch
one_batch(ds_type:DatasetType=<DatasetType.Train: 1>, detach:bool=True, denorm:bool=True, cpu:bool=True) → Collection[Tensor]
1つのbatchをDataLoaderより持ってくる。
one_item
one_item(item, detach:bool=False, denorm:bool=False, cpu:bool=False)
itemをbatchへ持ってくる。
sanity_check
sanity_check()
sanity checkを行い、データを確認する。
save
save(fname:PathOrStr='data_save.pkl')
DataBunch
をself.path/fname
へ保存。
load_data
load_data(path:PathOrStr, fname:str='data_save.pkl', bs:int=64, val_bs:int=None, num_workers:int=4, dl_tfms:Optional[Collection[Callable]]=None, device:device=None, collate_fn:Callable='data_collate', no_check:bool=False, **kwargs) → DataBunch
DataBunch
をpath/fname
から読み込む。
PyTorchのDatasetとの互換性
PyTorchのDataset
との互換性は部分的にサポートされている。詳しくはこちら
DeviceDataLoader
DeviceDataLoader(dl:DataLoader, device:device, tfms:List[Callable]=None, collate_fn:Callable='data_collate')
DataLoader
をtorch.device
に結びつける。
tfms
を行った後にdl
のバッチをdevice
へ結ぶ。全てのDataLoader
はこのタイプ。
create (with DeviceDataLoader)
create(dataset:Dataset, bs:int=64, shuffle:bool=False, device:device=device(type='cuda'), tfms:Collection[Callable]=None, num_workers:int=4, collate_fn:Callable='data_collate', **kwargs:Any)
shuffle
でbs
のdataset
をnum_workers
用いてDeviceDataLoader
を生成。
collate_fn
によって、1つのbatchへとサンプルを照合する。
shuffle
を用いるとdataがシャッフルされ、tfms
はdata augmmentationに用いられる。
add_tfm
add_tfm(tfm:Callable)
self.tfms
にtfm
を追加。
remove_tfm
remove_tfm(tfm:Callable)
self.tfms
よりtfm
を削除。
new
new(**kwargs)
kwagsを用いてコピーを生成。
proc_batch
proc_batch(b:Tensor) → Tensor
TensorImage
のbatchb
を処理。
最後に
- basic_dataを用いて自作のdataloaderを作成してみる。
- PyTorchからの実際の移植作業をやってみたい。
- 自作のノートブックを用いて、実例の用法を紹介してみる。
間違いやご指摘などが御座いましたらご教示願います!