PyTorch/[PyTorch 学习笔记] 2.3 二十二种 transforms 图片数据预处理方法
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson2/transforms/
这篇主要分为几个部分介绍 transforms:
- 裁剪
- 旋转和翻转
- 图像变换
- transforms 方法操作
- 自定义 transforms 方法
最后是数据增强的实战:对人民币二分类实验进行数增强。
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson2/transforms/
这篇主要分为几个部分介绍 transforms:
最后是数据增强的实战:对人民币二分类实验进行数增强。
这是一个比较空泛的题,总的来说可以从如下几个方面来回答: - Java 的平台无关性:这个涉及到字节码,虚拟机等,展开可以说很多,详情点击这里 - GC:Java 的垃圾回收,详情点击这里,相关面试题 - 语言特性:反射,泛型,Lambda 等 - 面向对象:封装、继承、多态
在 JVM 中,一个对象被判断为垃圾的标准是:没有其他对象引用。 # 在实现上,判断对象是否为垃圾的算法有两种: - 引用记数法 - 通过判断对象的被引用数量来判断对象是否可以被回收 - 每个对象实例都有一个引用计数器,被引用则 +1,完成引用则 -1 - 任何引用计数为 0 的对象实例都可以被当做垃圾 - 优点:实现简单,执行效率高,程序执行受影响较小 - 缺点:无法检测出循环引用的情况,导致内存泄露
我们在安装PyTorch
时,还安装了torchvision
,这是一个计算机视觉工具包。有 3 个主要的模块:
torchvision.transforms
: 里面包括常用的图像预处理方法torchvision.datasets
: 里面包括常用数据集如 mnist、CIFAR-10、Image-Net 等torchvision.models
: 里面包括常用的预训练好的模型,如 AlexNet、VGG、ResNet、GoogleNet 等本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson2/rmb_classification/
实现 1 元人民币和 100 元人民币的图片二分类。前面讲过 PyTorch 的五大模块:数据、模型、损失函数、优化器和迭代训练。
数据模块又可以细分为 4 个部分:
本章代码:
在深度学习中,权值的更新是依赖于梯度的计算,因此梯度的计算是至关重要的。在 PyTorch 中,只需要搭建好前向计算图,然后利用torch.autograd
自动求导得到所有张量的梯度。
基本思路是,将DataFrame拆成若干组分,最后通过pandas.concat合并起结果
1 | def parallelize_dataframe(df, func, n_jobs=3, split_num=10): |
还可以使用tqdm
在处理数据时显示进度条。
todo:应该参考陈阳的课程做一个系统的回答
本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/computational_graph.py
深度学习就是对张量进行一系列的操作,随着操作种类和数量的增多,会出现各种值得思考的问题。比如多个操作之间是否可以并行,如何协同底层的不同设备,如何避免冗余的操作,以实现最高效的计算效率,同时避免一些 bug。因此产生了计算图 (Computational Graph)。