自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(145)
  • 收藏
  • 关注

原创 归并排序,快速排序和堆排序

2022-10-10 15:09:51 530 1

原创 Leetcode:前缀和系列

前缀和系列

2022-09-18 16:24:12 523

原创 Leetcode:单调栈系列

前两类一般是中等难度的题,完成一次单调栈即可,最后一类是困难难度,需要完成两次单调栈。

2022-09-13 22:24:15 336

原创 期望和方差

均值和方差

2022-08-29 11:03:04 2201

原创 C++基本点

c++

2022-08-01 15:05:46 193

原创 神经网络参数初始化

参数初始化

2022-07-25 17:44:52 1573

原创 pytorch模型

pytorch模型

2022-07-25 16:45:55 886

原创 关于pytorch转onnx经常出现的问题

关于pytorch转onnx经常出现的问题

2022-07-25 13:56:41 1934

转载 模型的推理速度

模型的推理速度

2022-07-24 17:49:42 1351

原创 关于pytorch反向传播的思考

关于pytorch反向传播的思考

2022-07-08 17:23:05 149

原创 leetcode系列(一):买卖股票

1. 第一题:122. 买卖股票的最佳时机 II按照我自己的渐进思路写出四种方法,前三种都是动态规划,最后一种是贪心。方法1:二维动态矩阵思路是维护一个n*2的动态矩阵,dp[i][0]表示第i天不持有股票的最大利润,dp[i][1]表示第i天持有股票的最大利润。那么则有转移方程如下:第i天持有股票的最大利润 = max(保持i-1天持有股票, i-1天不持有股票 + 今天买入) 第i天不持有股票的最大利润 = max(保持i-1天不持有股票, i-1天持有股票 + 今天卖出)写出.

2022-03-29 16:50:49 938

原创 机器学习优化算法:牛顿法以及海森矩阵

参考:海森矩阵和牛顿法 人工智能-损失函数-优化算法:牛顿法的背后原理【二阶泰勒展开】 牛顿法与Hessian矩阵给出一个总结:牛顿法法主要是为了解决非线性优化问题,其收敛速度比梯度下降速度更快。其需要解决的问题可以描述为:对于目标函数f(x),在无约束条件的情况下求它的最小值。牛顿法的主要思想是:在现有的极小值估计值的附近对做二阶泰勒展开,进而找到极小点的下一个估计值,反复迭代直到函数的一阶导数小于某个接近0的阀值。1. 求解方程的根我们............

2022-02-19 17:58:57 2319

原创 向量和矩阵的范数

1. 基本定义具体可以参考这篇文章:https://blog.csdn.net/qq_42138662/article/details/109258028对于我自己的理解,希望强调一下:向量的范数≠矩阵的范数2. 类比记忆L0范数:向量中非0元素的个数 L1范数:向量元素绝对值之和 L1损失函数: 多了求平均 L2范数:向量元素平方和再开方 L2损失函数: 少了开方 多了求平均 ..

2022-02-19 16:54:57 1176

原创 图像超分辨率评价指标

参考文章:https://zhuanlan.zhihu.com/p/50757421在ESRGAN中采用第二种形式,python的实现如下:def calculate_psnr(img1, img2): # img1 and img2 have range [0, 255] img1 = img1.astype(np.float64) img2 = img2.astype(np.float64) mse = np.mean((img1 - img2)**2)

2022-02-15 17:27:28 4383

原创 DSGAN退化网络

非成对的退化1.基本结构 generator 1个conv + 8个resblock + 1个convGenerator( (block_input): Sequential( (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) (1): PReLU(num_parameters=1) ) (res_blocks): ModuleList( (0): Residua

2022-02-14 17:34:53 1036

原创 pytorch中交叉熵损失函数的细节

1. 一般分类任务实现:二分类在二分类中,pytorch主要可以应用的损失函数分为以下四个:F.cross_entropy()与torch.nn.CrossEntropyLoss() F.binary_cross_entropy()与torch.nn.BCELoss()之所以将四个函数分成两类,是因为:前者输入是非onehot label + logit,函数会自动将logit通过softmax映射为概率 后者输入的是onehot label + prob(概率,一般是经过softmax后

2022-02-10 19:13:39 6920

原创 为什么交叉熵可以用来当损失?与MMD的区别?

本文主要写一下为什么交叉熵损失可以用于代价的计算,主要写一下思路,不做具体的详解。1. 信息量-log(p)---->信息熵-plog(p) (信息量的期望) 此时只有一个分布2. 进一步引入KL散度,此时是两个分布了,此时用q表示真实分布,q表示预测的分布 plog(p/q) KL散度表示的就是两个分布之间的距离3. 在机器学习和深度学习中,我们所希望的就是模型学习到的分布Pmodel尽可能的接近于数据真实的分布Preal。那么根据KL散度...

2022-02-10 17:05:23 738

原创 pytorch使用data_prefetcher提升数据读取速度

直接给出代码:class data_prefetcher(): def __init__(self, loader): #loader 1:real #loader 2:fake self.stream = torch.cuda.Stream() self.loader = iter(loader) self.preload() def preload(self): try:

2022-02-09 11:12:43 4309 1

原创 pytorch的多GPU训练的两种方式

方法一:torch.nn.DataParallel1. 原理如下图所示:小朋友一个人做4份作业,假设1份需要60min,共需要240min。这里的作业就是pytorch中要处理的data。与此同时,他也可以先花3min把作业分配给3个同伙,大家一起60min做完。最后他再花3min把作业收起来,一共需要66min。这个小朋友就是主GPU。他的过程是:分发 ->并行运算->结果回收。这就是pytorch要使用的第一种并行方法:torch.nn.DataPa.

2022-02-08 14:08:02 7313 2

原创 维度问题以及等高线

1. 问题提出这里我列出三个式子,大家一起来看一下:y=x是一元函数,z=y+x是二元函数,f=z+y+x是三元函数。这么说来一元就是一维,二元就是二维,三元就是三维?其实是可以这么理解的,那如果这么理解了我们,有一个维度我们就错了,哪错了?一维错了,很明显,我们在画图时直接画的y=x为一条直线,直线是二维的。而一维只能代表点,不可能有线存在,那为什么这里我们画出了线?因此为我们预判了,预判了y=x接下来发生的事情。和二维作比较,二维就没有预判,它很安分地做着一条线,它没

2022-01-28 17:04:45 1777

原创 导数、偏导数以及梯度

导数导数的概念和运用可以说是贯穿了我们自初中以来的所有数学知识。当自变量x和因变量y都是一维且定义域和值域都为实数域的情况下,因变量y导数的定义如下:可以这么理解,对于某一点(自变量),当它改变dx的时候,对应的y(因变量)的改变量dy就可以根据导数f'(x)计算出来:dy = f'(x) * dx。曲线上某点的导数 = 过该点切线的斜率。需要澄清的一个概念是: 虽然导数有正有负,它仍然是一个标量偏导数偏导数则是在因变量为一元,自变量为多元的情况下,因变量关于各个自变量单独求导的

2022-01-26 14:42:58 2289

原创 pytorch转onnx相关问题

这些问题是在转谱归一化spectral_norm中遇到的。首先遇到的就是torch.mv算子和torch.dot算子不支持的问题。目前pytorch已经官方实现了谱归一化:spectral_norm,其中包含了torch.mv、 torch.dot算子,转onnx会出现错误解决办法:将torch.mv和torch.dot用torch.matmul代替,不过可能需要自己改变一下tensor的维度。(通过unsqueeze之类的)我再解决了上述两个算子后,能够跑torch.onnx.export

2021-07-23 16:12:00 1306 1

原创 方差与协方差

协方差矩阵在统计学和机器学习中随处可见,一般而言,可视作方差和协方差两部分组成,即方差构成了对角线上的元素,协方差构成了非对角线上的元素。本文旨在从几何角度介绍我们所熟知的协方差矩阵。1. 方差和协方差的定义在统计学中,方差是用来度量单个随机变量的离散程度,而协方差则一般用来刻画两个随机变量的相似程度,其中,方差的计算公式如下:其中,正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消表示样本量,符号表示观测样本的均值,这个定义在初中阶段就已经开始接触了。...

2021-01-19 19:09:08 12124

原创 cycleGAN解析

前言在上一篇博文中我们讲述了pix2pix的方法,见Pix2Pix原理解析,pix2pix的方法适用于成对数据的风格迁移,如下图左边。但是在大多数情况,对于A风格的图像,我们并没有与之相对应的B风格图像,我们所拥有的是一群处于风格A(源域)的图像和一群处于风格B(目标域)的图像,这样pix2pix2的方法就不管用了。CycleGAN的创新点在于能够在源域和目标域之间,无须建立训练数据间一对一的映射,就可实现这种迁移。基本架构cyclegan的原理如下图所示。整个架构结构整理如下:(1)

2021-01-12 20:14:08 4796

原创 Pix2Pix原理解析

class UnetGenerator(nn.Module): """Create a Unet-based generator""" def __init__(self, input_nc, output_nc, num_downs, ngf=64, norm_layer=nn.BatchNorm2d, use_dropout=False): """Construct a Unet generator Parameters: in.

2021-01-07 19:48:10 3273 1

转载 深度学习笔记:随机种子的作用

深度学习中的随机种子

2020-11-05 16:33:51 1599

原创 pytorch可视化输出的图像

最近在学习GAN,跑了两个目前是sota的开源代码:https://github.com/Tencent/Real-SR以及https://github.com/ManuelFritsche/real-world-sr,前者是在esrgan的基础上做了一定的改动,后者包含dsgan和esrgan-fs两部分,其中esrgan-fs与腾讯的代码均在BasicSR增添了自己的改进,总体的框架基本不变。.在学习的时候,主要是dsgan部分和esrgan部分对输入图片和可视化的操作有一点不同,在此做以记录...

2020-10-20 16:16:37 4508

原创 PIL.Image和cv2的图片读取转换

这里读取一个RGB的图片img = Image.open(imgpath)print(img,img.size())img.show()print的结果如下,可以看到是没有第三波段的,只显示出了H和W<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=500x355 at 0x13E73B4ACC0>(500, 355)如果这时候想用cv2来进行展示,即cv2.imshow(img),就会出现错误。因为cv2接受

2020-10-13 14:47:31 3730

原创 【pytorch】squeeze函数和unsqueeze函数

squeeze(): 去除size为1的维度,包括行和列。至于维度大于等于2时,squeeze()不起作用 unsqueeze():在指定维度增加一个维度import torcha = torch.rand(4, 1, 3)print('a.shape:',a.shape)print('a:',a)b = a.squeeze() #除去维度为1的维度 print('b.shape:',b.shape)print('b:',b)c = a.unsqueeze(0) #在指定.

2020-09-28 10:39:03 374

原创 【docker】配置深度学习环境

docker images:查看镜像docker rmi imageID 删除镜像docker ps:查看正在运行容器docker ps -a:查看所有容器docker rm ContainerID 删除容器docker run -it imageID bash 创建一个容器运行镜像(-it 表示可交互) 可以在里面利用pip或者conda配置环境docker commit ContainerID newImage 将某容器中的环境制作成新的镜像docker push 推送镜像..

2020-09-24 19:32:20 322

原创 【python】argparse

parser = argparse.ArgumentParser()parser.add_argument('--dataset', type=str, default='cifar10', help='cifar10 | cifar100 | folder')parser.add_argument('--dataroot', type=str, default='./data', help='path to dataset')parser.add_argument('--workers', typ.

2020-09-23 10:08:23 487

原创 【python】logger模块

def setup_logger(logger_name, root, phase, level=logging.INFO, screen=False, tofile=False): '''set up logger''' lg = logging.getLogger(logger_name) #获取logger对象 formatter = logging.Formatter('%(asctime)s.%(msecs)03d - %(levelname)s: %(message).

2020-09-23 09:53:35 1152

原创 【GAN网络】tensorflow和pytorch实现损失函数

import tensorflow as tf#batch_size = 3,真实数据real_logits=tf.constant([[1.25], [2.5], [-1.7]]) #GAN的话是两分类,因此最后只有一个节点,经过D映射后表示为真的概率 real_prob=tf.nn.sigmoid(real_logits) #真实数据经过D后被判别为真的概率read_labels=tf.ones_like(.

2020-09-18 15:00:06 1604 1

原创 【tensorflow】读取图片的几种方式

TensorFLow从文件读取图片的四种方式用十张图详解TensorFlow数据读取机制(附代码)

2020-09-11 20:23:54 670

原创 【tensorflow基础】读取mnist数据

TensorFlow的封装让使用MNIST数据集变得更加方便。MNIST数据集是NIST数据集的一个子集,它包含了60000张图片作为训练数据,10000张图片作为测试数据。在MNIST数据集中的每一张图片都代表了0~9中的一个数字。图片的大小都为28*28,且数字都会出现在图片的正中间。代码如下:import tensorflow as tfimport numpy as npimport pickleimport matplotlib.pyplot as pltfrom tensorfl.

2020-09-08 13:05:35 1178

原创 如何理解“机器学习”中的数据分布

机器学习中的“分布”

2020-09-07 17:07:48 2343

原创 【lintcode】背包问题

92. 0/1背包问题(无价值)在n个物品中挑选若干物品装入背包,最多能装多满?假设背包的大小为m,每个物品的大小为A[i]样例 1: 输入: [3,4,8,5], backpack size=10 输出: 9样例 2: 输入: [2,3,5,7], backpack size=12 输出: 12二维的dp数组表示对于大小为的背包,前个物品能装多满。所谓0/1背包问题,就是对于某一个物品,它有两种状态,要么放入背包,状态为1,要么不放入背包,状态为0...

2020-08-13 01:12:40 496

原创 【leetcode】二分法

目录方法总结704. 二分查找852. 山脉数组的峰顶索引162. 寻找峰值278. 第一个错误的版本374. 猜数字大小35. 搜索插入位置方法总结笔者目前的水平给出两种二分法的模板。 模板一 这种是最简单的二分法的模板,如下。其特点是:循环可以继续的条件是 while (left <= right) ,表示当 left == right 成立的时候,还有一个元素,即下标 left(right)位置的元素还没有看到,需要继续查看这个元素的值...

2020-08-04 12:17:16 387 1

原创 【leetcode】深度优先搜索

面试题 08.10. 颜色填充面试题 16.19. 水域大小130. 被围绕的区域1219. 黄金矿工79. 单词搜索面试题 08.10. 颜色填充编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的横坐标为 sr 纵坐标为 sc。需要填充的新颜色为 newColor 。「周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。请用新颜色填充初始坐标点的周围区域,并返回填.

2020-08-03 11:14:54 233

原创 【leetcode】回溯法:组合、排列

目录77. 组合46. 全排列47. 全排列 II39. 组合总和40. 组合总和 II216. 组合总和 III78. 子集90. 子集 II77. 组合给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]这道题是比较简单的回溯法题目,这一题的解答模板就是回溯问题的基本模...

2020-07-29 15:46:10 244

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除