- 博客(70)
- 资源 (1)
- 收藏
- 关注
原创 面向对象编程:使用@property
python面向对象编程:使用__slots__和@property当我们创建好class(类),我们可以给这个类附加属性和方法。属性和方法分别对应函数式编程里面的参数和低阶函数。尝试给实例绑定一个属性:class Student(object): # 创建类 pass >>> s = Student() # 实例化类>>> s.name = 'Michael' # 动态给实例绑定一个属性>>> print(s.n
2021-10-12 20:11:56
299
原创 MSSIM和L1loss的混合损失函数用于图像恢复
背景在图像恢复的深度神经网络当中。大部分的损失函数一般是L1 norm(MAE),L2 norm(MSE)。或者是SSIM,PSNR。其中SSIM有了评价函数的变体MS_SSIM,具体的实现先参考文献[2], 代码部分再去参考[1]。英伟达和MIT联合发表了一篇Loss Functions for Image Restoration with Neural Networks, 这种损失函数将MS_SIM和L1损失函数结合在一起。下面写一些具体如何实现实现过程MS_SSIM的实现过程已经在[1]中
2021-08-02 17:23:58
11184
13
原创 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
280
原创 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
10344
6
原创 2021-07-28对数据集进行训练集和测试集的分割的两种思路
对数据集进行训练集和测试集的分割的两种思路前言一般来讲,测试集可以检验,用训练集训练的模型效果是否过拟合。我们得到的数据一般很少分好了训练集和测试集。这时候就需要我们手动分割训练集和测试集。方法1:直接切分数据要用到shutil包来复制数据。思路就是遍历目录下的所有文件,得到所有类别的存放路径。遍历每个类别,然后获得每个类别的所有图片的名称列表,并将其随机排列。然后创建存放对应数据集的文件夹,并遍历图片名称列表,按照比例(8:1:1)将名字分配给不同的集。最后拼接路径,根据路径复制图片到对应位置。代
2021-07-28 21:16:14
1536
原创 Git 上传文件、文件夹或项目到 Github
目录准备工作配置Git、SSH绑定用户配置 SSH上传文件上传文件夹上传项目如何上传更新准备工作配置Git、SSH下载、安装 Git绑定用户$ git config --global user.name "Your Name"$ git config --global user.email "email@example.com"配置 SSH1、在用户主目录(C:\Users\Admin\)下,看看有没有.ssh目录,如果有,再看看这个目录下
2021-06-24 19:50:36
401
1
原创 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
1434
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
7747
原创 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
535
原创 pytorch的函数 .detach()
参考:http://www.bnikolic.co.uk/blog/pytorch-detach.html
2021-06-16 14:18:42
15499
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
13780
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
3404
2
原创 Pytorch中Tensor与各种图像格式的相互转换、读取和展示
用pytorch做训练时,我们经常会将图片数据转换为tensor格式,方便加速训练。但是有很多时候我们会需要展示训练的结果。所以难免会涉及到将Tensor数据转换回方便展示的格式。
2021-05-27 20:19:03
5589
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
3358
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
1788
原创 新手安装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
520
原创 debug: 导入matplotlib.pyplot时出现错误:module ‘cairo‘ has no attribute ‘version_info‘
首先安装了一下cairopip install cairo发现还是没用然后安装pycairo,pip install pycairo安装之后就好了
2021-05-25 21:16:48
1314
原创 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
1689
原创 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
1321
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
965
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
5656
原创 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
766
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
1181
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
10254
原创 解决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
3140
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
5522
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
618
2
原创 numpy的维度和括号[]联系,以及np.expand_dims解释
首先我们要方便一个数组或者矩阵的大小维度。在python的numpy包里面,都是用中括号[],来包含的。这些数据对于新手来说都有点混乱,有时候看到很多个括号就不知道这些维度是什么,还有一些numpy的函数操作,比如np.squeeze, np.expand_dims等。对这些数据操作之后,数组或者矩阵会变成什么样都不知道。下面来做一个阐述:维度和括号之间的联系对于一个数据,numpy里面的维度是先数最里面的括号包含的个数,数的量作为维度最右边的值 然后再把最里面的括号当成一个整体,再来数数量,
2021-03-15 14:03:39
1598
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
2326
原创 二进制和电路图
本篇笔记理解需要的内容:二进制的基本知识,如何用0,1表示二进制的正负,二进制的加减法等等。逻辑运算与或非;了解电路中的串联,并联,电阻等概念。1.晶体管如何控制逻辑运算:and:类似于电路中的串联,用两个晶体管串联在一起,可以实现“与”的功能。or:类似于电路中的并联,这样其中一个通路,就可以实现通路。即和‘或’的概念一致。not: 类似短路和电阻的设计,图中的表就像开关,该支路是没有电阻的,都是输出是在有resistor的一端。如果开关闭合,即输入是1,则电阻端短路,不通过‘电.
2020-11-08 11:12:17
4728
原创 CS61A自学者学习指南
相信找到这篇博客的同学们已经知道了CS61A的好处,多余的我就不解释了。首先放一个链接CS61A The Structure and Interpretation of Computer Programs如上图所示,这个是所有CS61A的课程历史,其中本文写于2020年秋,最新的就是Fall 2020.只有这个是没有更新完的,其他的都是更新完了的。上面几个最近的课程我查看了下,如果国内不能科学上网,推荐选择Summer 2019.因为这个课程在b站上有人上传了。上课过程:打开
2020-10-16 14:19:50
28855
7
原创 Pycharm如何打开terminal
Pycharm的下方工具栏中有两个窗口:Python Console和Terminal(如下图)其中,Python Console叫做Python控制台,即Python交互模式;Terminal叫做终端,即命令行模式。Python交互模式主要有两种:CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。Python交互式模式可以直接输入代码,然后执行,并立刻得到结果,因此Python交互模式主要是为了调试Python代码用的。命..
2020-10-06 16:50:55
18169
原创 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
249
原创 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
528
原创 model.fit() fit详解
fit( x, y, batch_size=32, epochs=10, verbose=1, callbacks=None,validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0)x:输入数据。如果模型只有一个输入,那...
2020-03-25 11:47:31
26500
1
原创 解决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
3773
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
18941
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
1110
原创 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
393
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人