
python
文章平均质量分 55
群星闪耀
这个作者很懒,什么都没留下…
展开
-
面向对象编程:使用@property
python面向对象编程:使用__slots__和@property当我们创建好class(类),我们可以给这个类附加属性和方法。属性和方法分别对应函数式编程里面的参数和低阶函数。尝试给实例绑定一个属性:class Student(object): # 创建类 pass >>> s = Student() # 实例化类>>> s.name = 'Michael' # 动态给实例绑定一个属性>>> print(s.n原创 2021-10-12 20:11:56 · 301 阅读 · 0 评论 -
python导入类输入参数遇到的bug
项目场景:作者写好一个class之后, 想导入到另外一个文件中使用,from filename import classname然后直接使用classname(para1,para2)问题描述:发现报错,debug发现是类里面的一个参数变了, 作者就一直找为什么会改变. 原因分析:因为作者用的class定义的时候一般有两个部分class Classname(Object): def __init__(self, para1=1, para2=2, para...):原创 2021-08-01 17:29:18 · 284 阅读 · 0 评论 -
HDF5文件的介绍及python将大量图片文件存储为hdf5文件方便训练
HDF5文件介绍HDF(Hierarchical Data Format)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件。HDF 最早由美国国家超级计算应用中心 NCSA 开发,目前在非盈利组织 HDF 小组维护下继续发展。当前流行的版本是 HDF5。HDF5 拥有一系列的优异特性,使其特别适合进行大量科学数据的存储和操作,如它支持非常多的数据类型,灵活,通用,跨平台,可扩展,高效的 I/O 性能,支持几乎无限量(高达 EB)的单文件存储等,详见其官方介绍:What is HDF5?。H5文原创 2021-07-30 14:13:35 · 10393 阅读 · 6 评论 -
utils.Averagemeter()de的用法
在训练时我看到有人会添加AverageMeter()的epoch_loss,一般放在utils.py中,源码如下rom __future__ import division, absolute_import__all__ = ['AverageMeter']class AverageMeter(object): """Computes and stores the average and current value. Examples:: >>...原创 2021-06-24 11:36:36 · 1439 阅读 · 1 评论 -
Python中用skimage导入PSNR and SSIM注意事项
本博文写于2021年6月24日此时scikit-image 版本为0.18.1在版本为0.16之前PSNR和SSIM的导入方式为from skimage.measure import compare_ssim, compare_psnr但是现在会报错,改为:from skimage.metrics import peak_signal_noise_ratiofrom skimage.metrics import structural_similarity使用例子:com原创 2021-06-24 11:23:53 · 7758 阅读 · 0 评论 -
pytorch中使用tensorboard
例子:import torchimport torchvisionfrom torch.utils.tensorboard import SummaryWriterfrom torchvision import datasets, transformslog_dir=r'C:\Users\14497\Desktop\result\log_dir'# Writer will output to ./runs/ directory by defaultwriter = SummaryWrit原创 2021-06-16 14:30:27 · 537 阅读 · 0 评论 -
pytorch的函数 .detach()
参考:http://www.bnikolic.co.uk/blog/pytorch-detach.html原创 2021-06-16 14:18:42 · 15506 阅读 · 2 评论 -
pytorch加载训练好的模型用来测试或者处理
保存、加载模型pytorch保存模型的方式有两种:第一种:将整个网络都都保存下来第二种:仅保存和加载模型参数(推荐使用这样的方法)保存和加载整个模型torch.save(model_object, 'model.pkl')model = torch.load('model.pkl')仅保存和加载模型参数(推荐使用)torch.save(model_object.state_dict(), 'params.pkl')model_object.load_state_di..原创 2021-06-16 14:07:34 · 13786 阅读 · 1 评论 -
python中拼接路径os.path.join的坑
python中os.path.join的用法如下:import osos.path.join('path1', 'path2', 'pathn')可以将多个路径进行拼接,但是需要注意一点是:第一个绝对路径之前的参数将被忽略也就是说,如果path2的第一个字符是‘/’,那么返回的拼接路径中path1并没有包含。————————————————版权声明:本文为优快云博主「Odegaard」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声...原创 2021-05-27 20:27:47 · 3421 阅读 · 2 评论 -
Pytorch中Tensor与各种图像格式的相互转换、读取和展示
用pytorch做训练时,我们经常会将图片数据转换为tensor格式,方便加速训练。但是有很多时候我们会需要展示训练的结果。所以难免会涉及到将Tensor数据转换回方便展示的格式。原创 2021-05-27 20:19:03 · 5610 阅读 · 1 评论 -
python虚拟环境 安装tensorflow==1.15.x 以及解决cuda+cudnn版本不匹配
因为要看一下别人的代码怎么样,我平时用的是pytorch,所以开了个虚拟环境安装tensorflow及其GPU版本。我大概看了下,tensorflow最后更新的1.x的版本是1.15的。所以我安装的是1.15.x的版本。虚拟环境相当于重新开一个文件夹,在这个文件夹里搭建好python的包,不影响自己平时用的python环境,非常方便。虚拟环境的安装我就不多说,大家可以去查阅其他教程。我之前因为pytorch已经安装好了cuda+cudnn 11.1的版本,但是tensorflow==1.15.x原创 2021-05-26 21:21:46 · 3365 阅读 · 4 评论 -
导入和导出requirement
Python requirement 导入导出包 - nmydt - 博客园 (cnblogs.com)在使用Python的时候,需要把安装的Package通过requirements.txt导出来,一个命令便可部署新环境。requirements.txt,是用于记录所有依赖包及其精确的版本号。自动生成requirement.txt命令:pip freeze > requirements.txt执行成功后,会在当前目录下自动生成requirement.txt文件。一把这个目录就是用户转载 2021-05-26 21:15:06 · 1790 阅读 · 0 评论 -
新手安装cuda和cudnn + pytorch记录
我的安装环境是python == 3.7.9。为了不出问题,故意选老一点的版本。使用pip安装,主要参考两篇博文:cuda安装教程+cudnn安装教程_sinat_23619409的博客-优快云博客_cuda安装配置显卡驱动、CUDA、cuDNN以及说明三者之间的关系_ZiLiangQin的博客-优快云博客_cudnn配置还有官网的显卡配对关系:Release Notes :: CUDA Toolkit Documentation (nvidia.com)从pytorch的安装页面来原创 2021-05-26 14:50:36 · 525 阅读 · 0 评论 -
python加载matlab数据,及matlab中struct的创建和保存
在应用深度学习的模型中,有的模型会加载matlab的.mat格式。如果要修改模型,则需要python加载.mat文件。同时,需要将自己的数据保存为.mat文件。我的代码.mat文件是一个struct的结构。现在我们一起来看一下如何加载.mat文件1. python读取.mat文件的struct结构import scipy.io as sioim_gt = sio.loadmat("路径名字\文件名字" + ".mat")['im_gt']im_b = sio.loadmat("路径名字\原创 2021-05-25 20:36:46 · 1699 阅读 · 0 评论 -
Pytorch的padding值确定方法
问题描述:pytoch中没有像tensorflow里面,卷积层的padding设置为same之类的操作。而且论文当中很多都不会写padding设置是多少。现在我来记录一下如何根据模型来计算出每个卷积层的padding值的设置。一般来讲,根据卷积的原理,输入的大小和输出的大小之间的关系由如下公式表示:out_size=(input_size - kernerl_size + 2*padding)/stride +1在GitHub上我看到一个模型,标注了每个输入的size大小。可以很好的作为一个例子原创 2021-05-25 16:14:44 · 1328 阅读 · 2 评论 -
将多个子文件夹中的文件,重命名并复制到一个总文件夹中
将多个子文件夹中的文件,重命名并复制到一个总文件夹中工作情景:一个总文件夹里面有多个子文件夹,如下图所示。每个文件夹里面都有多张图片。现在我想将每个子文件夹里面的图片复制到一个总文件夹里面。实现代码如下:import shutilimport ospath=r'E:\DQL\small_intestine' #要读取的文件夹new_path = r'E:\DQL\small_intestine_all' # 要存储的文件夹def walkFile(path,new_path):原创 2021-05-20 20:12:12 · 973 阅读 · 1 评论 -
Image.open读取PNG文件变成灰度图片
项目场景:用Image.open读取PNG图片,做深度学习的训练,:问题描述:原来的是读取JPG图片,本来的想法是直接应用模型就可以了,发现Image.open会将PNG图片降维成灰度图像,导致模型出错:解决方案先用cv2.imread导入读取,再转换为PIL的格式。下面的代码论证上述的问题过程import cv2import matplotlib.pyplot as pltfrom PIL import Imageimport numpy as np%matplotlib inlin原创 2021-05-20 19:41:22 · 5660 阅读 · 0 评论 -
python的OS几种用法记录
1.python路径拼接os.path.join()函数的用法os.path.join()函数:连接两个或更多的路径名组件如果各组件名首字母不包含’/’,则函数会自动加上如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾Demo1import osPath1 = 'home'Path2 = 'develop'Path3 = 'code'Path10 = Path1 + Path2 + Path3Path20 =原创 2021-05-20 11:36:49 · 768 阅读 · 1 评论 -
Pytorch数据读取:Dataset和DataLoader
确保安装scikit-image numpyDataset和DataLoader都是Pytorch里面读取数据的工具。现在对这两种工具做一个概括和总结。1.Dataset一个例子:# 导入需要的包import torchimport torch.utils.data.dataset as Datasetimport numpy as np# 编造数据Data = np.asarray([[1, 2], [3, 4],[5, 6], [7, 8]])Label = np.a原创 2021-05-19 20:30:13 · 1187 阅读 · 1 评论 -
Pycharm的虚拟环境中安装第三方包的两种方法
1.在pycharm的界面安装:简书:pycharm-虚拟环境安装第三方库2.在虚拟环境的文件夹里面安装从pycharm的Terminal界面来看,我的train.py文件现在的运行环境是在虚拟环境中的。所以如果我要安装第三方包的话,那就要在这个虚拟环境中的Scripts文件里面的pip才能被我的train.py文件采用。步骤如下:1、打开Pycharm的项目,找到下方Terminal,打开2、利用cd 进入项目的Scripts文件夹中3、输入 activate4、利用 pi原创 2021-05-19 15:10:02 · 10272 阅读 · 0 评论 -
解决TypeError: ‘tuple‘ object is not callable,pytorch定义网络层的问题
报错:TypeError: 'tuple' object is not callable解决:如上图左上角所示,因为模型继承的是nn.Module,所以不是用的sequential来定义网络,依然加了逗号。所以会出错。可以改成nn.Sequential,或者把逗号删除。额外提示:如果用nn.Squential定义,缺少灵活性,但是也有优点。关于nn.Squential和nn.Model的定义不同可以详见:PyTorch 中的 ModuleList 和 Sequential:原创 2021-05-13 12:04:28 · 3148 阅读 · 1 评论 -
torchsummary的使用
这个库可以查看用pytorch搭建的模型,各层输出尺寸。1.安装相信大家使用到现在这个地步,导入库已经很熟练了。里面的坑我就不多说。pip install torchsummary2.导入from torchsummary import summarysummary(your_model, input_size=(channels, H, W))上述的your_model是搭建的模型,input_size是你输入的数据。比如输入一张图片大小为28*28的RGB(3个通道)的图原创 2021-05-12 20:49:22 · 5544 阅读 · 4 评论 -
AlexNet原理及Pytorch实现
1.论文分析为了对卷积神经网络CNN有更加透彻的了解,方便后续的CNN应用在其他方面。决定对经典论文AlexNet重新实现一遍。论文中原图如下:The first convolutional layer filters the 224×224×3 input image with 96 kernels of size 11×11×3 with a stride of 4 pixels (this is the distance between the receptive field cente原创 2021-05-12 20:39:17 · 619 阅读 · 2 评论 -
numpy的维度和括号[]联系,以及np.expand_dims解释
首先我们要方便一个数组或者矩阵的大小维度。在python的numpy包里面,都是用中括号[],来包含的。这些数据对于新手来说都有点混乱,有时候看到很多个括号就不知道这些维度是什么,还有一些numpy的函数操作,比如np.squeeze, np.expand_dims等。对这些数据操作之后,数组或者矩阵会变成什么样都不知道。下面来做一个阐述:维度和括号之间的联系对于一个数据,numpy里面的维度是先数最里面的括号包含的个数,数的量作为维度最右边的值 然后再把最里面的括号当成一个整体,再来数数量,原创 2021-03-15 14:03:39 · 1610 阅读 · 1 评论 -
win10+cuda10.0+tensorflow-gpu==1.15安装教程
背景简介作为刚入门深度学习的小白,准备兴高采烈的开始用GPU跑深度学习算法.已经安装好了tensorflow的CPU版本,都是想要加速,搭建tensorflow-gpu的版本。我的环境是python==3.7, tensorflow==1.15,这两个的安装可以去参考其他教程,为什么在2021年还选择1.15的版本,因为我要用的代码还是tensorflow 版本1的,tensorflow 2.0的和原来的不一样,容易出现其他问题,为了早日上手深度学习,就不去弄2.0了。这里主要是讲解如何安装GPU加原创 2021-02-26 12:52:25 · 2334 阅读 · 0 评论 -
CS61A自学者学习指南
相信找到这篇博客的同学们已经知道了CS61A的好处,多余的我就不解释了。首先放一个链接CS61A The Structure and Interpretation of Computer Programs如上图所示,这个是所有CS61A的课程历史,其中本文写于2020年秋,最新的就是Fall 2020.只有这个是没有更新完的,其他的都是更新完了的。上面几个最近的课程我查看了下,如果国内不能科学上网,推荐选择Summer 2019.因为这个课程在b站上有人上传了。上课过程:打开原创 2020-10-16 14:19:50 · 28884 阅读 · 7 评论 -
Pytorch的自动求导:AUTOGRAD: AUTOMATIC DIFFERENTIATION
torch.Tensoris the central class of the package. If you set its attribute.requires_gradasTrue, it starts to track all operations on it. When you finish your computation you can call.backward()and have all the gradients computed automatically. The gra...原创 2020-05-18 15:35:31 · 253 阅读 · 0 评论 -
pandas中的get_dummies()
pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False)参数说明:data : array-like, Series, or DataFrame 输入的数据prefix : string, list of stri...原创 2020-05-07 08:50:28 · 533 阅读 · 0 评论 -
解决cuda和tensorflow版本匹配的问题
我在官网下载的版本是最新版CUDA10.2,唉哭了。希望大家还是下载10.0版本的吧。不用这么麻烦,tensorflow最多只匹配到了CUDA10.1。如果因为下载10.2,导致tf.test.is_gpu_available() 返回false。为了解决这个问题,回到cmd的界面,输入python,回车import tensorflow as tf 回车最后可以成功但是会提示你...原创 2020-03-17 20:24:46 · 3776 阅读 · 4 评论 -
如何在jupyter notebook下导入自己写的模块
在jupyternotebook下导入自己写的模块,有三点需要注意:1.要将自己写的模块编程.py的文件,而不是.ipynb文件2.当更改自己的模块的内容后,要Restart内核,才能反映到使用该模块的.ipynb文件中。3.如果.py文件,放在文件夹里面。则需要在开头前面加上文件夹名字。比如说。test.py文件里面有hello这个函数。test.py文件放在untitled fol...原创 2020-02-22 15:46:48 · 18997 阅读 · 6 评论 -
python 类中的方法互相调用为什么是self.function()形式
因为,不加self, 你可能会执行类外的同名函数eatdef eat(thing): print(thing,'--->执行了类外函数') class Dog: def eat(self, thing): print('执行了类内函数', thing) def run(self): eat(2) Dog().r...转载 2020-02-15 21:03:53 · 1112 阅读 · 0 评论 -
OpenCV之Feature Matching + Homography to find Objects
import numpy as npimport cv2 as cvfrom matplotlib import pyplot as pltMIN_MATCH_COUNT = 10img1 = cv.imread('box.png',0) # queryImageimg2 = cv.imread('box_in_scene.png',0) # trainImage#...原创 2020-02-15 20:49:49 · 397 阅读 · 1 评论 -
OpenCV之Feature Matching
Brute-Force matcherBFmatcher(Brute-Force Matching)暴力匹配,应用BFMatcher.knnMatch( )函数来进行核心的匹配,knnMatch(k-nearest neighbor classification)k近邻分类算法。kNN算法则是从训练集中找到和新数据最接近的k条记录,然后根据他们的主要分类来决定新数据的类别。该算法涉及3个主要...原创 2020-02-15 20:30:11 · 1421 阅读 · 0 评论 -
Introduction to SIFT (Scale-Invariant Feature Transform)
问题:前面学习的Harris算法检测corners是旋转不变性的。就是说即使这些corners旋转了也可以检测出来。但是假如有的角标放大了之后,在图片中看起来就会变得平滑。比如下面的图片:以前的方法就没用了。为了解决这个问题,所以有的学者就发明了尺度不变的检测方法叫做(Scale-Invariant Feature Transform)SIFT。SIFT算法实现物体识别主要有4...原创 2020-02-14 22:05:34 · 192 阅读 · 0 评论 -
Opencv:Shi-Tomasi 角点检测 & 适合于跟踪的图像特征(Shi-Tomasi Corner Detector & Good Features to Track)
原理:In last chapter, we saw Harris Corner Detector. Later in 1994, J. Shi and C. Tomasi made a small modification(前一个方法的小改进) to it in their paperGood Features to Trackwhich shows better results com...原创 2020-02-14 21:43:00 · 337 阅读 · 0 评论 -
opencv-轮廓检测详解
轮廓检测是基于图像边缘提取的基础,寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓的发现相关APIfindContours 发现轮廓drawContours绘制轮廓操作步骤1.转换图像为二值化图像:threshold方法或者canny边缘提取获取的都是二值化图像2.通过二值化图像寻找轮廓:findContours3.描绘轮廓:drawContours相...原创 2020-02-04 14:50:55 · 732 阅读 · 0 评论 -
Canny算子的非极大值抑制Non-maximum Suppression
Non-maximum SuppressionAfter getting gradient magnitude and direction, a full scan of image is done to remove any unwanted pixels which may not constitute the edge. For this, at every pixel, pixel i...原创 2020-02-02 17:31:41 · 1061 阅读 · 0 评论 -
如何让构造卷积的核函数kernel
Structuring ElementWe manually created a structuring elements in the previous examples with help of Numpy. It is rectangular shape. But in some cases, you may need elliptical/circular shaped kernels...原创 2020-02-02 17:22:28 · 1190 阅读 · 0 评论 -
学习OpenCV图像处理最好的路径:官方材料搭配b站视频
推荐可以现在官方网址上学习。有一个一个的步骤叫你深入学习opencv.https://docs.opencv.org/4.1.2/d2/d96/tutorial_py_table_of_contents_imgproc.html里面要求你会用numpy和matplotlib,我一开始也是没接触过这两个,但是学习过程中用到的很多函数可以去百度,谷歌都搜得到用法。以及如果想学习其他的比如...原创 2020-02-02 17:11:05 · 370 阅读 · 0 评论 -
转载收藏:python图像处理:绘制灰度和彩色直方图
https://blog.youkuaiyun.com/Hanging_Gardens/article/details/79016183原创 2020-02-02 16:48:35 · 368 阅读 · 0 评论