扩展unittest.testcase,使断言支持pytorch张量和参数。
torchtestcase的Python项目详细描述
torch测试用例
==
这主要是因为pytorch张量在默认情况下是按元素比较的,这就是为什么类[`unittest.TestCase`](https://docs.python.org/3/library/unittest.htmlunittest.TestCase)提供的断言不能直接工作的原因。
一种可能的解决方法是使用
[`TestCase.assertTrue`](https://docs.python.org/3/library/unittest.htmlunittest.TestCase.assertTrue)来处理我们需要的任何断言
但这通常会导致难以读取和维护的复杂代码。
torchtestcase模块定义了类torchtestcase,扩展了unittest.testcase,使得许多断言支持各种pytorch类的实例。
**更新**:
-2018.1版已经发布,现在支持PyTorch 0.4。
-2018.2版已经发布并介绍张量相等断言允许偏差的规范。
由支持pytorch的“torchtestcase”类提供。
如果您不熟悉包“unittest”,请先阅读它
[此处](https://docs.python.org/3/library/unittest.html)。
**注意**:
随着pytorch 0.4.0的发布,张量和变量已经合并,这意味着“Variable”和其他任何张量一样被处理,因此不再需要使用类“torch.autograd.Variable”。
因此,在“torchtestcase”的2018.1版本中,已经删除了对“Variable”的断言等式断言
(`assertequal`,`assertnotequal`)
等式断言支持任何类型的pytorch张量的对象以及`torch.nn.parameter`
和`torch.nn.utils.rnn.packedsequence`的实例。
但是,请注意,如果比较的对象是不同类型的实例,则会引发“assertionerror”:
``python
self.assertequal(torch.zeros(4),nn.parameter(torch.zeros(4)))->;assertionerror
```
例如,如果我们预测到数值上的不稳定性,
对于任何这种情况,`torchtestcase`提供了指定某个公差的可能性:
``python
self.eps=0.001指定相等断言的公差
self.assertequal(torch.zeros(3),0.001*torch.one(3))#->;没有断言错误
self.assertEqual(torch.zeros(3),0.0011*torch.one(3))#->;断言错误
```
请注意,仅**两个张量**之间的**相等断言**考虑了指定的公差
2顺序断言
(`assertgreater`,`assertgreateratequal`,`assertless`,`assertlessequal`)
一般来说,如果顺序断言按元素顺序保存,则假定它们已实现。
例如:
``pyhton
x=torch.floattensor([0,0,1])
y=torch.floattensor([1,1,1])
self.assertlessequal(x,y)>;没有assertonerror
self.assertless(x,y)->;assertonerror
```
此外,还可以将张量或“参数”与数字进行比较,在这种情况下,将所考虑的
数据张量的每个元素与相同的元素进行比较。
例如,如果我们要确保张量的每个元素都位于单位间隔内,然后我们可以使用以下断言:
`` python
self.assertGreaterEqual(一些张量,0)
self.assertleSequal(一些张量,1)
````
当我们进行顺序断言时,我们通常不关心涉及的对象的实际类型。
因此可以将不同类型的张量相互比较,也可以与“Parameter”比较:
``python
self.assertLess(torch.zeros(3),nn.Parameter(torch.one(3))))#->;no assertonerror
```
==
这主要是因为pytorch张量在默认情况下是按元素比较的,这就是为什么类[`unittest.TestCase`](https://docs.python.org/3/library/unittest.htmlunittest.TestCase)提供的断言不能直接工作的原因。
一种可能的解决方法是使用
[`TestCase.assertTrue`](https://docs.python.org/3/library/unittest.htmlunittest.TestCase.assertTrue)来处理我们需要的任何断言
但这通常会导致难以读取和维护的复杂代码。
torchtestcase模块定义了类torchtestcase,扩展了unittest.testcase,使得许多断言支持各种pytorch类的实例。
**更新**:
-2018.1版已经发布,现在支持PyTorch 0.4。
-2018.2版已经发布并介绍张量相等断言允许偏差的规范。
由支持pytorch的“torchtestcase”类提供。
如果您不熟悉包“unittest”,请先阅读它
[此处](https://docs.python.org/3/library/unittest.html)。
**注意**:
随着pytorch 0.4.0的发布,张量和变量已经合并,这意味着“Variable”和其他任何张量一样被处理,因此不再需要使用类“torch.autograd.Variable”。
因此,在“torchtestcase”的2018.1版本中,已经删除了对“Variable”的断言等式断言
(`assertequal`,`assertnotequal`)
等式断言支持任何类型的pytorch张量的对象以及`torch.nn.parameter`
和`torch.nn.utils.rnn.packedsequence`的实例。
但是,请注意,如果比较的对象是不同类型的实例,则会引发“assertionerror”:
``python
self.assertequal(torch.zeros(4),nn.parameter(torch.zeros(4)))->;assertionerror
```
例如,如果我们预测到数值上的不稳定性,
对于任何这种情况,`torchtestcase`提供了指定某个公差的可能性:
``python
self.eps=0.001指定相等断言的公差
self.assertequal(torch.zeros(3),0.001*torch.one(3))#->;没有断言错误
self.assertEqual(torch.zeros(3),0.0011*torch.one(3))#->;断言错误
```
请注意,仅**两个张量**之间的**相等断言**考虑了指定的公差
2顺序断言
(`assertgreater`,`assertgreateratequal`,`assertless`,`assertlessequal`)
一般来说,如果顺序断言按元素顺序保存,则假定它们已实现。
例如:
``pyhton
x=torch.floattensor([0,0,1])
y=torch.floattensor([1,1,1])
self.assertlessequal(x,y)>;没有assertonerror
self.assertless(x,y)->;assertonerror
```
此外,还可以将张量或“参数”与数字进行比较,在这种情况下,将所考虑的
数据张量的每个元素与相同的元素进行比较。
例如,如果我们要确保张量的每个元素都位于单位间隔内,然后我们可以使用以下断言:
`` python
self.assertGreaterEqual(一些张量,0)
self.assertleSequal(一些张量,1)
````
当我们进行顺序断言时,我们通常不关心涉及的对象的实际类型。
因此可以将不同类型的张量相互比较,也可以与“Parameter”比较:
``python
self.assertLess(torch.zeros(3),nn.Parameter(torch.one(3))))#->;no assertonerror
```