クラスとサブクラス | 機能 |
torch | Tensorの作成、GPUの活用など、丸ごとパッケージ。 |
torch.tensor | Tensorの生成。 |
torch.autograd | 自動微分。 |
torch.nn | ニューラルネットワークに関係するクラスのパッケージ。 |
torch.nn.functional | 関数のメソッド。 |
torch.nn.init | パラメータの初期値。 |
torch.optim | 最適化関数のパッケージ。 |
torchvision.datasets | データセットのパッケージ。 |
torchvision.models | 既知のネットワーク(モデル)や学習済みモデルのパッケージ。 |
torchvision.transforms | 画像データ処理のパッケージ。 |
目次
torch.tensor([?, ?, …])
torch.from_numpy
torch.zeros
torch.ones
torch_zeros_like
torch.eye
torch.set_default_dtype
torch.numel
torch.is_tensor
torch.cat
torch.index_select
torch.squeeze
torch.t
torch.transpose
torch.unsqueeze
torch.bernoulli
torch.multinomial
torch.normal
torch.rand
torch.randn
torch.randperm
torch.abs
torch.add
torch.clamp
torch.div
torch.exp
torch.log
torch.mul
torch.round
torch.sigmoid
torch.sign
torch.sqrt
torch.tanh
torch.dot
torch.mm
torch.bmm
torch.matmul
torch.cuda.is_available()
torch.cuda.device_count()
torch.cuda.get_device_name()
CUDA Compute Capability
torch.cuda.get_device_capability()
1 |
torch.save(model.state_dict(), model_path) |
1 |
model.load_state_dict(torch.load(model_path)) |
1 |
torch.save(model.to('cpu').state_dict(), model_path) |
1 |
model.load_state_dict(torch.load(model_path, map_location=torch.device('cpu'))) |
torch.utils.data.Dataset
画像の場合(transform無として)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
class MyDataset(torch.utils.data.Dataset): def __init__(self, label_path, transform=None): # テキストファイルを読み込み、このファイルに保存されているすべてのデータに対して、画像へのパスを変数 x に保存し、教師ラベルを y に保存する。 x = [] y = [] # テキストファイルの読み込みと処理 with open(label_path, 'r') as infh: for line in infh: d = line.replace('\n', '').split('\t') x.append(os.path.join(os.path.dirname(label_path), d[0])) y.append(int(d[1])) # 画像へのパスをプライベート変数に格納 self.x = x # 教師ラベルを torch が利用できるデータ型に変換してから格納 self.y = torch.tensor(y) # 画像に対する前処理が定義されている場合は、それの定義をプライベート変数に格納 self.transform = transform def __len__(self): # 全データの件数を返す関数 return len(self.x) def __getitem__(self, i): # 全データの中から i 番目の画像と教師ラベルを返す関数 # 画像については、ファイルパスにある画像を Image.open 関数で読み込んで、行列に変換する。 # 前処理が定義されているならば前処理を行う img = PIL.Image.open(self.x[i]).convert('RGB') if self.transform is not None: img = self.transform(img) return img, self.y[i] |
TORCH.UTILS.DATA
torch.utils.data.DataLoader
1 2 3 4 5 |
DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None, *, prefetch_factor=2, persistent_workers=False) |
dataset (Dataset) : dataset from which to load the data.
batch_size (int, optional) : how many samples per batch to load (default: 1).
shuffle (bool, optional) : set to True to have the data reshuffled at every epoch (default: False).
sampler (Sampler or Iterable, optional) : defines the strategy to draw samples from the dataset. Can be any Iterable with len implemented. If specified, shuffle must not be specified.
batch_sampler (Sampler or Iterable, optional) : like sampler, but returns a batch of indices at a time. Mutually exclusive with batch_size, shuffle, sampler, and drop_last.
num_workers (int, optional) : how many subprocesses to use for data loading. 0 means that the data will be loaded in the main process. (default: 0)
collate_fn (callable, optional) : merges a list of samples to form a mini-batch of Tensor(s). Used when using batched loading from a map-style dataset.
pin_memory (bool, optional) : If True, the data loader will copy Tensors into CUDA pinned memory before returning them. If your data elements are a custom type, or your collate_fn returns a batch that is a custom type, see the example below.
drop_last (bool, optional) : set to True to drop the last incomplete batch, if the dataset size is not divisible by the batch size. If False and the size of dataset is not divisible by the batch size, then the last batch will be smaller. (default: False)
timeout (numeric, optional) : if positive, the timeout value for collecting a batch from workers. Should always be non-negative. (default: 0)
worker_init_fn (callable, optional) : If not None, this will be called on each worker subprocess with the worker id (an int in [0, num_workers – 1]) as input, after seeding and before data loading. (default: None)
prefetch_factor (int, optional, keyword-only arg) : Number of samples loaded in advance by each worker. 2 means there will be a total of 2 * num_workers samples prefetched across all workers. (default: 2)
persistent_workers (bool, optional) : If True, the data loader will not shutdown the worker processes after a dataset has been consumed once. This allows to maintain the workers Dataset instances alive. (default: False)
torch.nn.Module
コマンド | 内容 | 入力 | 出力 |
---|---|---|---|
Compose | 複数の Transform を連続して行う | PIL Image | PIL Image |
RandomApply | 複数の Transform を指定した確率で行う | PIL Image | PIL Image |
RandomChoice | 複数の Transform から1つを選択して行う | PIL Image | PIL Image |
RandomOrder | 複数の Transform をランダムに順番を入れ替えて行う | PIL Image | PIL Image |
Pad | パディングを行う | PIL Image | PIL Image |
CenterCrop | 画像の中心を切り抜く | PIL Image | PIL Image |
FiveCrop | 4隅及び中心の計5箇所を切り抜く | PIL Image | PIL Image のタプル |
TenCrop | 元の画像及び左右反転した画像の4隅及び中心の計10箇所を切り抜く | PIL Image | PIL Image のタプル |
Resize | リサイズを行う | PIL Image | PIL Image |
Grayscale | グレースケール変換を行う | PIL Image | PIL Image |
RandomCrop | ランダムに画像を切り抜く | PIL Image | PIL Image |
RandomResizedCrop | ランダムにリサイズ及び切り抜きを行う | PIL Image | PIL Image |
ColorJitter | ランダムに明るさ、コントラスト、彩度、色相を変化させる | PIL Image | PIL Image |
RandomGrayscale | ランダムにグレースケール変換を行う | PIL Image | PIL Image |
RandomHorizontalFlip | ランダムに左右反転を行う | PIL Image | PIL Image |
RandomVerticalFlip | ランダムに上下反転を行う | PIL Image | PIL Image |
RandomAffine | ランダムにアフィン変換を行う | PIL Image | PIL Image |
RandomPerspective | ランダムに射影変換を行う | PIL Image | PIL Image |
RandomRotation | ランダムに回転を行う | PIL Image | PIL Image |
LinearTransformation | 線形変換を行う | テンソル | テンソル |
Normalize | 標準化を行う | テンソル | テンソル |
RandomErasing | ランダムに選択した領域を除去する | テンソル | テンソル |
ToPILImage | テンソルをPIL Image オブジェクトに変換する | テンソル | PIL Image |
ToTensor | PIL Image オブジェクトをテンソルに変換する | PIL Image | テンソル |
Lambda | ユーザー定義の Transform を作成する場合に利用する | 任意のオブジェクト | 任意のオブジェクト |