扩展unittest.testcase,使断言支持pytorch张量和参数。

torchtestcase的Python项目详细描述


torch测试用例
==



这主要是因为pytorch张量在默认情况下是按元素比较的,这就是为什么类[`unittest.TestCase`](https://docs.python.org/3/library/unittest.htmlunittest.TestCase)提供的断言不能直接工作的原因。
一种可能的解决方法是使用
[`TestCase.assertTrue`](https://docs.python.org/3/library/unittest.htmlunittest.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
```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ws-consumer服务地址中的java动态属性   java如何比较整数列表,然后按升序排序?   javascript我正在使用java脚本调用一个函数,但它没有调用代码下面的方法,也没有调用secretitnames()函数   在文本窗格中多次使用Java insertIcon图标   JavaMSAL安卓。AuthenticationActivity完成,但用于身份验证请求的线程池线程仍处于等待状态   if语句中的java多范围比较   java toString()表示输出   java如何在jcstrest测试中生成指令重新排序   java我怎样才能运行它?   web应用程序中使用Hibernate和Spring的java问题   如何将字符串数据写入Java文本文件   如何在java命令提示符下运行已签名的jar文件?   java从我的菜单调用RCP应用程序   java如何等待Canvas/GraphicsContext完成任务,然后再继续执行代码块?