扩展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第三方库


热门话题
java Spring启动启用HTTPS   actionscript 3 java中的这个[“var”+“name”]   java只匹配给定集合中一个字符的一个匹配项   java Hibernate:防止角色表中出现多个相同的条目   javajersey+Spring注入servlet请求   java HtmlEditor javafx失去焦点   java Apache Wicket AjaxRequestTarget ListView组件未刷新或更新   mysql java。无法将lang.String转换为java。sql。时间戳   java将巨大的整数文件(在一行中)拆分为具有内存限制的已排序块   安卓如何完全关闭proguard?   安装Eclipse和Android SDK后的java“无AVD可用”消息   java动态显示图像视图   java在Spring中还有哪些WebsocketClient实现?   java Glassfish需要很长时间才能重新启动   使用Java简单串行连接器将pc与arduino连接   java如何在camel文件组件配置中结合readLockCheckInterval和maxMessagesPerPoll?   单击Android时的java预览图像   java如何将字节数组转换为ByteArrayOutputStream