Decorators for reducing pytorch boilerplate
Project description
What is this?
Functions and decorators I found myself rewriting for every pytorch project
How do I use this?
pip install trivial-torch-tools
from trivial_torch_tools import Sequential, init
import torch.nn as nn
class Model(nn.Module):
@init.to_device()
# ^ does self.to() and defaults to GPU if available (uses default_device variable)
@init.save_and_load_methods(model_attributes=["layers"], basic_attributes=["input_shape"])
# ^ creates self.save(path=self.path) and self.load(path=self.path)
def __init__(self):
self.input_shape = (81,81,3)
layers = Sequential(input_shape=self.input_shape)
# ^ dynamically compute the output shape/size of layers (the nn.Linear below)
layers.add_module('conv1' , nn.Conv2d(input_shape[0], 32, kernel_size=8, stride=4, padding=0))
layers.add_module('relu1' , nn.ReLU())
layers.add_module('flatten' , nn.Flatten(start_dim=1, end_dim=-1))
layers.add_module('linear1' , nn.Linear(in_features=layers.output_size, out_features=10))
layers.add_module('sigmoid1', nn.Sigmoid())
self.layers = layers
# layers.output_size
# layers.output_shape
# layers.layer_shapes
# available tools
from trivial_torch_tools import *
core.default_device # defaults to cuda if available
core.to_tensor(nested_lists_of_arrays_tuples_and_more) # aggresively converts objects to tensors
# decorators for def __init__()
@model.init.to_device(device=default_device)
@model.init.save_and_load_methods(basic_attributes=[], model_attributes=[], path_attribute="path")
@model.init.forward_sequential_method
# decorators for def forward(): # or whatever
@model.convert_args.to_tensor()
@model.convert_args.to_device()
@model.convert_args.to_batched_tensor(number_of_dimensions=4) # for color images
@model.convert_args.torch_tensor_from_opencv_format()
image.tensor_from_path(path)
image.pil_image_from_tensor(tensor)
image.torch_tensor_from_opencv_format(tensor_or_array)
image.opencv_tensor_from_torch_format(tensor)
image.opencv_array_from_pil_image(image_obj)
OneHotifier.tensor_from_argmax(tensor) # [0.1,99,0,0,] => [0,1,0,0,]
OneHotifier.index_from_one_hot(tensor) # [0,1,0,0,] => 2
OneHotifier.index_tensor_from_onehot_batch(tensor) # [[0,1,0,0,]] => [2]
import torch
converter = OneHotifier(possible_values=[ "thing0", ('thing', 1), {"thing":2} ])
converter.to_one_hot({"thing":2}) # >>> tensor([0,0,1])
converter.from_one_hot(torch.tensor([0,0,1])) # >>> {"thing":2}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for trivial_torch_tools-0.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0bf219f3ef4ea0dda7da5e2954ad89f2aafcb4f0df6c7a6bb52dfa1837660f85 |
|
MD5 | 2889ff74680195c9e278d6dc8703beb9 |
|
BLAKE2b-256 | d42eed779a348671bdc3a4a6718b46e8265780eab11be0f14ef4751f6ed90c71 |
Close
Hashes for trivial_torch_tools-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3368770a7a5fa6bda501e5320b0e9885e2bc8df10eacc6767805ec48ec5a7703 |
|
MD5 | 3206abf20cc5044fb9d5905d5621c1eb |
|
BLAKE2b-256 | 6a5c4fa6e46cc6fcf68aa720dd1dd3d0fc969f7c4406813eb8bc428de9328dfc |