随笔分类 -  Pytorch

摘要:Pytorch:单卡多进程并行训练在深度学习的项目中,我们进行单机多进程编程时一般不直接使用multiprocessing模块,而是使用其替代品torch.multiprocessing模块。它支持完全相同的操作,但对其进行了扩展。Python的multiprocessing模块可使用fork、spawn、forkserver三种方法来创建进程。但有一点需要注意的是,CUDA运行时不支持使用fork,我们可以使用spawn或forkserver方法来创建子进程,以在子进程中使用CUDA。 阅读全文
posted @ 2023-01-24 22:30 orion-orion 阅读(3689) 评论(0) 推荐(1) 编辑
摘要:Pytorch:使用Tensorboard记录训练状态我们知道TensorBoard是Tensorflow中的一个强大的可视化工具,它可以让我们非常方便地记录训练loss波动情况。如果我们是其它深度学习框架用户(如Pytorch),而想使用TensorBoard工具,可以安装TensorBoard的封装版本TensorBoardX。最后,需要提到的是,因为Tensorboard太常用了,所以在目前最新的Pytorch版本中已经直接集成进来了。所以,现在使用Tensorboard只需要直接导入torch.utils.tensorboard即可。 阅读全文
posted @ 2022-11-26 20:26 orion-orion 阅读(1130) 评论(0) 推荐(1) 编辑
摘要:Pytorch:利用torch.nn.Modules.parameters修改模型参数Pytorch中继承了torch.nn.Module的模型类具有named_parameters()/parameters()方法,这两个方法都会返回一个用于迭代模型参数的迭代器(named_parameters还包括参数名字): 阅读全文
posted @ 2022-05-20 21:42 orion-orion 阅读(3813) 评论(0) 推荐(0) 编辑
摘要:Pytorch:自定义Subset/Dataset类完成数据集拆分我们常常会在训练集的基础上拆分出验证集(或者只用部分数据来进行训练)。我们想到的第一个方法是使用torch.utils.data.random_split对dataset进行划分,但这样拆分后已经不再是原本的dataseet对象,而是一个所谓的Subset对象!此时Subset对象虽然仍然还存有data属性,但是内置的target和classes属性已经不复存在,那么该如何做到前后代码的一致性呢?这里有一个trick,那就是以继承SubSet类的方式的方式定义一个新的CustomSubSet类。 阅读全文
posted @ 2022-02-17 19:29 orion-orion 阅读(8474) 评论(0) 推荐(0) 编辑
摘要:Pytorch:以单通道(灰度图)加载图片在训练模型时我们有时需要以单通道加载训练图片(即灰度图),此时我们只需要设置加载数据集时的transform参数即可。 阅读全文
posted @ 2022-02-04 09:57 orion-orion 阅读(1718) 评论(0) 推荐(0) 编辑
摘要:Pytorch:torch.utils.data.DataLoader与迭代器转换在做实验时,我们常常会使用用开源的数据集进行测试。而Pytorch中内置了许多数据集,这些数据集我们常常使用DataLoader类进行加载。而我们用for语句来遍历DataLoader类的对象时,我们并没有显式将Dataloader转换为迭代器类型。这其实是Python语言for循环的一种机制,一旦我们用for ... in ...句式来迭代一个对象,那么Python解释器就会偷偷地自动帮我们创建好迭代器。 阅读全文
posted @ 2021-12-06 17:59 orion-orion 阅读(1280) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示