Skip to main content

No project description provided

Project description

= torchtest

A Tiny Test Suite for pytorch based Machine Learning models, inspired by https://github.com/Thenerdstation/mltest/blob/master/mltest/mltest.py[mltest].
Chase Roberts lists out 4 basic tests in his https://medium.com/@keeper6928/mltest-automatically-test-neural-network-models-in-one-function-call-eb6f1fa5019d[medium post] about mltest.
torchtest is mostly a pytorch port of mltest(which was written for tensorflow).

== Installation

[source, bash]
----
pip install --upgrade torchtest
----

== Tests


[source, python]
----
# imports for examples
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable
----


=== Variables Change

[source, python]
----
from torchtest import assert_vars_change

inputs = Variable(torch.randn(20, 20))
targets = Variable(torch.randint(0, 2, (20,))).long()
batch = [inputs, targets]
model = nn.Linear(20, 2)

# what are the variables?
print('Our list of parameters', [ np[0] for np in model.named_parameters() ])

# do they change after a training step?
# let's run a train step and see
assert_vars_change(
model=model,
loss_fn=F.cross_entropy,
optim=torch.optim.Adam(model.parameters()),
batch=batch)
----

[source, python]
----
""" FAILURE """
# let's try to break this, so the test fails
params_to_train = [ np[1] for np in model.named_parameters() if np[0] is not 'bias' ]
# run test now
assert_vars_change(
model=model,
loss_fn=F.cross_entropy,
optim=torch.optim.Adam(params_to_train),
batch=batch)

# YES! bias did not change
----


=== Variables Don't Change

[source, python]
----
from torchtest import assert_vars_same

# What if bias is not supposed to change, by design?
# test to see if bias remains the same after training
assert_vars_same(
model=model,
loss_fn=F.cross_entropy,
optim=torch.optim.Adam(params_to_train),
batch=batch,
params=[('bias', model.bias)]
)
# it does? good. let's move on
----

=== Output Range

[source, python]
----
from torchtest import test_suite

# NOTE : bias is fixed (not trainable)
optim = torch.optim.Adam(params_to_train)
loss_fn=F.cross_entropy

test_suite(model, loss_fn, optim, batch,
output_range=(-2, 2),
test_output_range=True
)

# seems to work
----

[source, python]
----
""" FAILURE """
# let's tweak the model to fail the test
model.bias = nn.Parameter(2 + torch.randn(2, ))

test_suite(
model,
loss_fn, optim, batch,
output_range=(-1, 1),
test_output_range=True
)

# as expected, it fails; yay!
----

=== NaN Tensors

[source, python]
----
""" FAILURE """
model.bias = nn.Parameter(float('NaN') * torch.randn(2, ))

test_suite(
model,
loss_fn, optim, batch,
test_nan_vals=True
)
----

=== Inf Tensors

[source, python]
----
""" FAILURE """
model.bias = nn.Parameter(float('Inf') * torch.randn(2, ))

test_suite(
model,
loss_fn, optim, batch,
test_inf_vals=True
)
----


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

torchtest-0.5.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

torchtest-0.5-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file torchtest-0.5.tar.gz.

File metadata

  • Download URL: torchtest-0.5.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/38.5.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.5.2

File hashes

Hashes for torchtest-0.5.tar.gz
Algorithm Hash digest
SHA256 e6cffe5a9c8a6d6dbc927413ec9f9f0ed00f9123b8eb1b08e0a84a4b2f6e0772
MD5 a3b0fdb4c080d0748e17c9bfcb3cbfc4
BLAKE2b-256 de03c38ae616c3bd12ac99958df9e1fba9ba36c52c04bb87143d02f97c87cf6e

See more details on using hashes here.

File details

Details for the file torchtest-0.5-py3-none-any.whl.

File metadata

  • Download URL: torchtest-0.5-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/38.5.1 requests-toolbelt/0.9.1 tqdm/4.28.1 CPython/3.5.2

File hashes

Hashes for torchtest-0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 9b70896df8f3e79b0cf77a80e7ebf28eae4e330e04477031f6b0e463cba14b9a
MD5 168e3e63a8c73de9c8b28f246487e5ef
BLAKE2b-256 42b1eb572ef3dce32bfcc3bf60be6360cef0d01a58bde0c76f2e205234d1ff08

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page