潜行隐耀
码龄7年
关注
提问 私信
  • 博客:274,687
    社区:1
    274,688
    总访问量
  • 32
    原创
  • 2,143,461
    排名
  • 55
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2018-02-07
博客简介:

PanYHHH的博客

查看详细资料
个人成就
  • 获得636次点赞
  • 内容获得113次评论
  • 获得2,573次收藏
  • 代码片获得3,758次分享
创作历程
  • 2篇
    2021年
  • 34篇
    2020年
成就勋章
TA的专栏
  • ML/DL
    1篇
  • pytorch
    15篇
  • python
    4篇
  • tensorflow
    6篇
兴趣领域 设置
  • 人工智能
    opencv计算机视觉机器学习深度学习神经网络tensorflow图像处理
创作活动更多

仓颉编程语言体验有奖征文

仓颉编程语言官网已上线,提供版本下载、在线运行、文档体验等功能。为鼓励更多开发者探索仓颉编程语言,现诚邀各位开发者通过官网在线体验/下载使用,参与仓颉体验有奖征文活动。

368人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

cub200_split.rar

发布资源 2021.12.28 ·
rar

cifar10_images.rar

发布资源 2021.12.28 ·
rar

Pytorch获取中间变量的梯度

为了节省显存,pytorch在反向传播的过程中只保留了计算图中的叶子结点的梯度值,而未保留中间节点的梯度,如下例所示:import torchx = torch.tensor(3., requires_grad=True)y = x ** 2z = 4 * yz.backward()print(x.grad) # tensor(24.)print(y.grad) # None可以看到当进行反向传播后,只保留了x的梯度tensor(24.),而y的梯度没有保留所以为None。
原创
发布博客 2021.01.31 ·
10872 阅读 ·
7 点赞 ·
4 评论 ·
17 收藏

Pytorch可视化模型任意中间层的类激活热力图(Grad-CAM)

本文中绘制类激活热力图的基本方法参考自:https://blog.csdn.net/sinat_37532065/article/details/103362517在该方法的基础上,本文添加了如下功能:根据网络层的名字,可视化模型指定层的类激活热力图。本文使用的backbone network为Resnet50,实际运行时需要根据使用的网络来修改以下两个参数:1. "layers_names":包含模型所有网络层名的列表,层名顺序与模型结构一致。2. "out_layer_name":指定的
原创
发布博客 2021.01.29 ·
17790 阅读 ·
24 点赞 ·
46 评论 ·
235 收藏

Pytorch torch.distributed 实现单机多卡分布式训练

一、分布式训练的优势:torch.nn.DataParallel可以使我们方便地将模型和数据加载到多块gpu上,实现数据并行训练,但存在着训练速度缓慢、负载不均衡的问题。相比之下,torch.distributed具有以下几点优势:1. distributed是多进程的,会分配n个进程对应n块gpu,而DataParallel是单进程控制的,所以存在着PIL(全局解释器锁)的问题。2. (主要优势)distributed在每个进程内都维护了一个optimizer,每个进程都能够独立完成梯度...
原创
发布博客 2020.12.26 ·
16857 阅读 ·
26 点赞 ·
0 评论 ·
96 收藏

解决opencv读取、保存图像失败

import cv2import numpy as np# 路径中包含特殊符号,使用cv2.imread()和cv2.imwrite()时会读取、保存失败img_path = r'C:\Users\admin\Desktop\8Dicellograptuscf.complanatus\Shot_201907121711130877.jpg'save_path = r'C:\Users\admin\Desktop\8Dicellograptuscf.complanatus\Shot_201...
原创
发布博客 2020.12.22 ·
1355 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

python opencv在图像中裁剪任意形状多边形,裁剪镂空多边形, 裁剪多个多边形

一、裁剪单个多边形import numpy as npimport cv2# 读取图像img = cv2.imread("dog.jpg")# 坐标点pointspts = np.array([[10, 10], [15, 0], [35, 8], [100, 20], [300, 45], [280, 100], [350, 230], [30, 200]])pts = np.array([pts])# 和原始图像一样大小的0矩阵,作为maskmask = np.zeros(img
原创
发布博客 2020.12.09 ·
8925 阅读 ·
11 点赞 ·
2 评论 ·
65 收藏

Pytorch Optimizer类使用小技巧总结

一、固定部分网络层参数1. 将需要固定,不参与训练层参数的requires_grad属性设为False:# 在nn.Modele子类内固定features层参数for p in self.features.parameters(): p.requires_grad=False2. 将参与训练的层参数传入Optimizer:param_to_optim = []for param in self.model.parameters(): if param.requires
原创
发布博客 2020.12.06 ·
1926 阅读 ·
2 点赞 ·
1 评论 ·
4 收藏

Pytorch 多分类模型绘制 ROC, PR 曲线

前言:记录利用sklearn和matplotlib两个库为pytorch分类模型绘制roc,pr曲线的方法,不介绍相关理论。ROC曲线:import torchimport torch.nn as nnimport osimport numpy as npfrom torchvision.datasets import ImageFolderfrom utils.transform import get_transform_for_testfrom senet.se_resnet
原创
发布博客 2020.12.06 ·
20552 阅读 ·
32 点赞 ·
17 评论 ·
177 收藏

Pandas DataFrame

https://www.jianshu.com/p/8024ceef4fe2
转载
发布博客 2020.11.04 ·
150 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

计算图像数据集的均值和方差(mean, std)用于transforms.Normalize()标准化

Pytorch进行预处理时,通常使用torchvision.transforms.Normalize(mean, std)方法进行数据归一化,其中参数mean和std分别表示图像集每个通道的均值和方差序列。在训练Imagenet数据集时通常设置:mean=(0.485, 0.456, 0.406),std=(0.229, 0.224, 0.225)。而对于特定的数据集,选择这个值结果可能并不理想。接下来给出计算特定数据集的均值和方差的方法。def getStat(train_data):
原创
发布博客 2020.08.09 ·
19849 阅读 ·
29 点赞 ·
19 评论 ·
123 收藏

同步和异步,阻塞和非阻塞的区别和联系

在网上搜了搜相关概念,发现很多人好像把同步/异步和阻塞/非阻塞的概念给混淆了。原因可能是因为同步/异步和阻塞/非阻塞是分不开的,而常见的情况是 同步阻塞 和 异步非阻塞 ,所以容易把同步和阻塞混淆,把异步和非阻塞混淆。其实,同步包括了 同步阻塞 和 同步非阻塞 ,异步也包括了 异步阻塞 和 异步非阻塞 。在这里我先介绍阻塞/非阻塞的概念,然后把它们分别融入到同步/异步的情况中去讲解。阻塞/非阻塞:阻塞和非阻塞关注的是程序(线程)在执行过程中调用了另一个程序,在等待调用结果(...
原创
发布博客 2020.08.07 ·
521 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Python爬虫批量下载图像

使用requests和BeautifulSoup模块实现依序下载多页图像。直接贴代码,含注释,有空再写解释,不懂欢迎提问。# -*- coding:utf-8 -*-import osimport timeimport randomimport requestsfrom bs4 import BeautifulSoup# 爬取的图像保存路径SAVE_DIR = os.path.join(os.getcwd(), 'pictures')if not os.path.exists(SA
原创
发布博客 2020.08.06 ·
355 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Python私有属性和受保护的属性原理解析

前言:Python不能像Java那样使用 private 和protected 修饰符创建私有属性和受保护的属性,但是Python有个简单的机制,能避免子类意外覆盖“私有”属性。首先定义一个Dog类:class Dog: 'Dog class' def __init__(self, age, sex, mood): self.age = age self._sex = sex self.__mood = mood受保护的属..
原创
发布博客 2020.08.05 ·
2836 阅读 ·
2 点赞 ·
0 评论 ·
7 收藏

torch.nn 与 torch.nn.functional的区别?如何选择?

前言:在ptorch中,torch.nn和torch.nn.functional模块下包含了许多功能相同、用法相似的方法,比如:1. torch.nn.Softmax(dim=1)(x) 和torch.nn.functional.softmax(x, dim=1):实现了对x在行维度上进行softmax,2.torch.nn.Conv2d(3, 6, 5)(x) 和 torch.nn.functional.conv2d(x, weight=torch.rand(6, 3, 5, 5)):实现..
原创
发布博客 2020.07.20 ·
2705 阅读 ·
13 点赞 ·
0 评论 ·
35 收藏

pytorch实现学习率衰减的方法总结

前言:之前在训练模型时一直使用自定义的学习率衰减函数,如下所示:def adjust_learning_rate(args, optimizer, epoch, gamma=0.1): """Sets the learning rate to the initial LR decayed 0.1 every 50 epochs""" lr = args.lr * (0.1 ** (epoch // 50)) for param_group in optimizer.para
原创
发布博客 2020.07.16 ·
6048 阅读 ·
4 点赞 ·
0 评论 ·
23 收藏

理解optimizer.zero_grad(), loss.backward(), optimizer.step()的作用及原理

在使用pytorch训练模型时,经常可以在迭代的过程中看到optimizer.zero_grad(),loss.backward()和optimizer.step()三行代码依次出现,比如:model = MyModel()criterion = nn.CrossEntropyLoss()optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9, weight_decay=1e-4)for epoch in r
原创
发布博客 2020.07.16 ·
90514 阅读 ·
429 点赞 ·
16 评论 ·
1466 收藏

pytorch实现模型参数初始化的方法总结

本文主要介绍pytorch中CNN模型有哪些常用参数初始化方法,以及如何实现网络层的初始化。一、常用的初始化方法import torch.nn as nnimport torchweights = torch.empty(2, 2)# 1.用均匀分布的值填充输入张量, 参数a:均匀分布的下界, 默认为0.; 参数b:均匀分布的上界, 默认为1.uniform_weights = nn.init.uniform_(weights, a=0., b=1.)print(uniform_we
原创
发布博客 2020.07.15 ·
5211 阅读 ·
8 点赞 ·
2 评论 ·
41 收藏

理解L1和L2正则化为什么能防止过拟合

一、相关概念过拟合:指的是拟合模型时过分关注数据集的细节,得到了一个在训练集上表现很好,但不能很好地泛化到新数据上的模型。言下之意就是模型的参数过多,对于现有的数据量来说太过复杂了。正则化:指对模型做显示约束,限制模型的参数以避免过拟合。L1正则化:指在代价函数后面添加l1正则化项,惩罚了系数的l1范数(l2范数定义为所有元素的绝对值之和)。目的是使其中的某些权值减小到0,因此得到的w更加稀疏。其中C0为初始的代价函数,加号后面的为添加的l1正则化项,为所有参数w的绝对值之和,除以训练集
原创
发布博客 2020.07.07 ·
3226 阅读 ·
4 点赞 ·
0 评论 ·
23 收藏

tensorflow实现L2正则化的方法总结

前言:tensorflow中计算l2正则化项的方法有tf.nn.l2_loss()和tf.contrib.layers.l2_regularizer(),使用方法如下所示:import tensorflow as tfweights = tf.constant([[1,2,3], [4,5,6]], dtype=tf.float32)sess = tf.InteractiveSession()# 计算的是所有元素的平方和再除以2print(tf.nn.l2_loss(weights).e
原创
发布博客 2020.06.17 ·
7636 阅读 ·
7 点赞 ·
0 评论 ·
37 收藏
加载更多