pytorch官网教程笔记——Data Loading and Processing Tutorial
链接
笔记1:assert
参考资料
assert expression [, arguments]
assert是Python 中的断言,其中 expression 是必填的条件表达式,arguments 是可选参数,用于在断言被触发的时候输出相关信息。当 expression 值为 False 的时候将触发断言,中断程序,所以它和以下代码段的功能相似:
if not expression:
raise AssertionError()
需要注意的一点是,assert 在 Python 3 中只是声明,所以如果写成:
assert(False, "Error")
这种形式,断言将永远不会被触发。因为此时 assert 的 expression 参数是内容为 (…, …) 的 Tuple ,而 Tuple 只有在内容为空的时候才会被判断为 False。
下面这段代码用来检测数据类型的断言,因为 a_str 是 str 类型,所以认为它是 int 类型肯定会引发错误。
>>> a_str = 'this is a string'
>>> type(a_str)
<type 'str'>
>>> assert type(a_str)== str
>>> assert type(a_str)== int
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module>
assert type(a_str)== int
AssertionError
笔记2:isinstance()
参考资料
isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
isinstance() 与 type() 区别:
- type() 不会认为子类是一种父类类型,不考虑继承关系。
- isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
代码示例
>>>a = 2
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list)) # 是元组中的一个返回 True
True
class A:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
笔记3:DataLoader()
torch.utils.data.DataLoader可以提供以下功能:
- 批量处理数据
- 洗牌数据使用
- 多处理工作程序并行加载数据。
torch.utils.data.DataLoader是一个提供所有这些功能的迭代器。下面使用的参数应该是清楚的。感兴趣的一个参数是collate_fn。您可以使用collate_fn指定需要批量处理的样本的准确程度。但是,对于大多数用例,默认整理应该可以正常工作。
dataloader = DataLoader(transformed_dataset, batch_size=4,
shuffle=True, num_workers=4)