Pytorch-数据加载
pytorch数据加载常用torch.utils.data.Dataset和torch.utils.data.DataLoader两个类进行实现,简单来说: torch.utils.data.Dataset:完成数据的初步读取和加载,其内的每一条数据是"零散"的 torch.utils.data.DataLoader:对torch.utils.data.Dataset中"零散"的数据进行打包,同时也可以进行一些后处理操作和采样操作。 下面就通过代码的方式详细介绍上面的两个类。 torch.utils.data.Dataset Dataset类简单来说就是完成数据的读取操作【当然也可以做一些简单操作】,pytorch中也内置了很多常用的计算机视觉的数据集【如如MNIST、CIFAR10、ImageNet..
Read morePytorch-Hook机制
Hook是什么? Hook(钩子)其实并不是Pytorch特有的机制,其在软件工程中也是相当常见的,一般来说Hook表示一种自动触发的机制,即在遇到某些时间/情况之后会自动执行的事项,其实在生活中也会遇到很多Hook的事件: 移动到光线变化的环境里,手机屏幕亮度会跟着变化 水烧开后就会沸腾把壶盖顶开 火灾情况下温度升高自动触发报警系统和灭火喷头 总而言之,虽然上面很多情况即便没有Hook,我们也能实现(比如手动调亮度、手动打开报警和灭火器等),但是Hook作为一种强大的自动触发机制,能够很大程度上帮助我们提高效率。 Pytorch中的 Hook是干嘛的? 当想要查看网络输出中每层特征的shape时,有没有过手动print每个tensor.shape的情况?虽然快但是不“优雅”而且很有可能导致代码显得冗余..
Read more