ZhuojunChen
码龄5年
  • 19,845
    被访问
  • 20
    原创
  • 83,177
    排名
  • 7
    粉丝
关注
提问 私信
  • 加入CSDN时间: 2017-06-28
博客简介:

qq_39332551的博客

查看详细资料
  • 2
    领奖
    总分 127 当月 16
个人成就
  • 获得24次点赞
  • 内容获得13次评论
  • 获得96次收藏
创作历程
  • 1篇
    2022年
  • 18篇
    2021年
  • 1篇
    2020年
成就勋章
TA的专栏
  • 神经网络
    6篇
  • 日常小技巧
    5篇
  • 力扣做题
    5篇
  • 踩坑笔记
    1篇
  • 数据挖掘
    6篇
  • 数据库
    1篇
兴趣领域 设置
  • 人工智能
    opencv计算机视觉机器学习深度学习神经网络自然语言处理图像处理nlp
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

深度学习中常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码和对比

在深度学习中,优化器是其重要组成部分,本文来介绍一下常用优化器(SGD, Momentum, Nesterov Momentum, AdaGrad, RMS Prop, Adam)的伪代码并对他们进行对比。1. SGDSGD的伪代码如下:SGD的梯度更新公式简单,采样用的是小样本,训练速度快,但由于是成之字形下降,在一些情况下效率很低。2. (SGD with) Momentum伪代码如下:和SGD相比,带动量的SGD主要是借助物理学中动量的概念,在下降时保留一部分之前的
原创
发布博客 2022.03.12 ·
1046 阅读 ·
3 点赞 ·
0 评论

任意角度旋转图片(python)

处理图片数据的时候遇到要旋转图片的需求,记录一下解决方案。利用PIL和torchvision.transforms.functional这是一个常用的图像处理的方法,可以对图像进行裁剪旋转等等操作,对于大图片来说,得到的效果很好,具体的实现代码为:from PIL import Imageimport torchvision.transforms.functional as TFimage = Image.fromarray(np.uint8(point_set))image = TF.r
原创
发布博客 2021.07.30 ·
877 阅读 ·
1 点赞 ·
0 评论

已知点坐标,求夹角大小(0-360度)(python)

在python中,math.asin求出的夹角范围为(-90,90),math.acos求出的夹角范围为(0,180),有时候需要求(0,360)范围内的角,写了一个函数供以后使用。def arcsin_and_arccos(pt1, pt2): delta_x = pt2[0] - pt1[0] delta_y = pt2[1] - pt1[1] sin = delta_y/math.sqrt(delta_x**2 + delta_y**2) cos = delta_x/
原创
发布博客 2021.07.27 ·
932 阅读 ·
0 点赞 ·
0 评论

关于sort函数中的cmp参数的笔记(C++)

C++中sort函数是经常会用到的一个函数,主要的功能是排序,可以给数组,或者链表list、向量排序。sort(first_pointer,first_pointer+n,cmp)在三个参数中,前两个参数很好理解(第二个参数记住要是尾地址的下一个地址),第三个参数一直会忘记他的用法,因此今天写一篇做一个笔记。第三个参数默认可以不填,如果不填sort会默认按数组升序排序。当需要以一些特殊的方式,或者对集合中每个元素中的某个子元素进行排序时,需要自定义cmp,自定义的方式有两种:(1)另定义一
原创
发布博客 2021.07.10 ·
323 阅读 ·
0 点赞 ·
0 评论

超简洁版 查找列表中的重复元素并统计重复数量(python)

之前在碰到要寻找列表中的重复元素的问题时,总是用for循环来解决,但是总是觉得有点繁琐,感觉这么频繁使用的需求应该有什么简洁的方法,搜索了一番,还真有,以下做一个总结。这个方法主要是用到collections.Counter函数,导入方法为from collections import Counter。collections在python官方文档中的解释是High-performance container datatypes,具体到Counter我认为可以理解为一个计数器,统计列表中的各个元素的个数。
原创
发布博客 2021.06.25 ·
1376 阅读 ·
1 点赞 ·
0 评论

简易黑白图像放大方法(Python)

在复现一篇论文的时候,碰到需要将原图片放大一倍的需求,由于精度要求不高,网上给出的方法太过繁琐,就自己写一个简易的算法来实现。输入的是一个黑白图片矩阵。主要的思路是在两个像素点之间进行插值,如果两个像素点都是0,插值0,有一个为1,插值1,这么做会稍微扩大1的范围,但基本还是保持了原来的形状,代码如下:def augment_pic(pic):#pic:2d array aug_pic_line = [] aug_pic = [] for i in range(len(pic)
原创
发布博客 2021.06.21 ·
197 阅读 ·
0 点赞 ·
0 评论

“FindPython3.cmake“找不到的解决方案

在cmake中常见以下错误: By not providing "FindPython3.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "Python3", but CMake did not find one. Could not find a package configuration file provided by "
原创
发布博客 2021.06.15 ·
1142 阅读 ·
3 点赞 ·
2 评论

pandas输出csv不带自动添加的行和列的序号

在用pandas输出csv时,如果不对第一行和第一列进行定义,pandas会自动用数字序号补齐,但有时候我们只想单纯输出数据,不想要表头或者序号,那么就需要以下的操作:output = pd.DataFrame(data=list1)output.to_csv('save_path', header=None, index=None)将header和index赋值成None即可。...
原创
发布博客 2021.06.07 ·
4314 阅读 ·
3 点赞 ·
1 评论

万能通用版 csv文件导入,多种形式的数字字符串转float(C++)

本文主要实现的是输入文件地址,以字符串的形式读取csv文件中的数据(正数、负数、科学计数法数据混合),在将这多种形式的数据转化成float。vector<vector<vector<float>>> c;vector<vector<float> >a; vector<float>b; inline void file_to_string(vector<string> &record, const stri
原创
发布博客 2021.06.07 ·
166 阅读 ·
0 点赞 ·
0 评论

将PyTorch模型部署到C++上(Ubuntu)

为什么要这么做?PyTorch作为一个开源的Python机器学习库正受到越来越广泛的关注和应用。然而,作为一门语言,Python并不是在任何场景下都适用的。在生产以及部署到自动驾驶车辆上等场景中,C++常常是更好的选择。因此需要将PyTorch模型部署到C++上。以下是实现的步骤。将PyTorch模型转化成Torch ScriptTorch Script的作用是用TorchScript编写的任何代码都可以从Python进程中保存并加载到没有Python依赖关系的进程中。有两种方法可以实现这一步.
原创
发布博客 2021.06.01 ·
553 阅读 ·
1 点赞 ·
0 评论

【数据分析】单个csv文件导入与输出,多个csv文件按顺序批量导入和输出(Python)

csv文件是常见的数据存储格式,经常用它来保存大量的实验数据。为了便于分析,需要将其导入Python中进行进一步的处理,并在处理之后重新输出为csv文件。下面就来介绍利用Python对单个csv文件进行导入与输出操作,以及对多个csv文件按顺序进行批量的导入和输出操作。单个csv文件的导入import pandas as pddata = pd.read_csv(data_path)data_lists = data.values.tolist()这样就可以将csv导入并转化为list的形
原创
发布博客 2021.05.28 ·
492 阅读 ·
1 点赞 ·
0 评论

【神经网络】权值初始化以及常见的激活函数对应的初始化方法(Pytorch)

权值初始化是搭建神经网络之后的重要步骤。适当的初始化可以加速模型的收敛,而不适当的初始化则会使梯度消失或爆炸,下面主要针对常见的激活函数简要介绍两种权值初始化方法。Xavier 方法该方法主要针对饱和激活函数如 sigmoid 和 tanh 等。pytorch中的调用语句为:tanh_gain = nn.init.calculate_gain('tanh')nn.init.xavier_uniform_(m.weight.data, gain=tanh_gain)Kaiming 方法该
原创
发布博客 2021.05.24 ·
172 阅读 ·
0 点赞 ·
0 评论

【数据分类】利用随机森林的方法进行数据分类

关于随机森林的原理,可以参考这篇博文:随机森林算法及其实现(Random Forest)关于sklearn中随机森林分类器参数和属性和含义(中文版),可以参考这篇博文:sklearn随机森林分类类RandomForestClassifier下面用一个类来实现随机森林:from sklearn.ensemble import RandomForestClassifierclass CipvRandomForest(): def __init__(self): self.c
原创
发布博客 2021.05.21 ·
1036 阅读 ·
0 点赞 ·
0 评论

【神经网络-数据分类】利用深度学习神经网络(DNN)来对数据进行分类

对于数据量大,适合以一维数据作为输入且难以探索数据内部规律的数据集,可以尝试利用深度学习神经网络(DNN)来对数据进行分类。由于是分类问题,使用Adam作为优化器,交叉熵作为损失函数,大概的网络结构代码如下:import torchimport torch.nn as nnimport torch.nn.functional as Ffrom torch.utils.data.dataset import Datasetfrom torch.utils.data import DataLoade
原创
发布博客 2021.05.21 ·
1065 阅读 ·
1 点赞 ·
1 评论

【神经网络-数据分类】利用卷积神经网络(CNN)对数据进行分类

对于数据量大,维度高,且难以找到数据之间内在关系的数据集,可以尝试用卷积神经网络对数据进行分类。 以下为卷积神经网络数据分类的大致结构,采用Adam作为优化器,交叉熵作为损失函数。import torchimport torch.nn as nnfrom torch.utils.data.dataset import Datasetfrom torch.utils.data import DataLoaderclass CipvCNN(nn.Module): def __ini.
原创
发布博客 2021.05.21 ·
2840 阅读 ·
2 点赞 ·
9 评论

【排序算法】两种插入排序的思路与C++实现

插入排序是一种常见的排序方式,其原理是,从前往后按顺序选取一个元素,将其与之前的元素进行比较,插入到合适的位置,以此类推直到取完所有元素。具体来说,插入排序有两种实现方式:交换法插入排序:交换法插入排序的主要思路是先插入所选取元素,再和前面的元素比大小,通过不断交换的方式完成排序。vector<int> insertsort1(vector<int>& nums) { for (auto i = 1; i != nums.size(); i++) { int
原创
发布博客 2021.04.17 ·
30 阅读 ·
1 点赞 ·
0 评论

【排序算法】二元选择排序(C++实现)

选择排序是一种常见的排序方法。它的主要思路是:遍历数组,每一次找出所遍历数组中的最小值或最大值,放在数组开头或者末尾,然后再遍历剩下的数组并找到最小值/最大值,直到遍历完为止。所谓二元选择排序,就是在遍历数组的过程中,同时寻找最小值和最大值,放在数组的开头和末尾,这样可以减少遍历次数,提高效率。具体代码实现如下:void select_sort(vector<int>& numset) { for (auto i = 0; i != numset.size() / 2; i++)
原创
发布博客 2021.04.17 ·
100 阅读 ·
1 点赞 ·
0 评论

【排序算法】冒泡排序进阶版(C++)

冒泡排序是一种基础且常见的排序方法。其主要思路为从前到后遍历数组,一边比较一边向后两两交换,将最值冒泡到最后一位。然而,在遍历过程中,存在还没有遍历完整个数组就已经排序完成的情况。举个例子,如果需要排序的数组是[1,2,6,3],我们希望将其从小到大排序,在第一轮排序完成之后,数组改变为[1,2,3,6],此时已排序完成,应当及时停止,不再进行之后的排序。针对这种情况,可以使用一个变量记录当前轮次的比较是否有交换发生,若没有,则代表数组已经有序,则停止排序。具体实现代码如下:void bubble_so
原创
发布博客 2021.04.17 ·
99 阅读 ·
1 点赞 ·
0 评论

关于排序中数组元素前后交换的小技巧

我们知道,交换数组中的元素在很多情况下都会用到,一般的方式如下:int temp = a;a = b;b = temp;然而,如果要在不引入第三个中间变量的情况下实现交换,要怎么做呢?可以用先加后减或者位运算的方式完成数字的交换。先加后减:b = b + a;a = b - a;b = b - a;位运算:a = a ^ b;b = b ^ a;a = a ^ b;...
原创
发布博客 2021.04.17 ·
191 阅读 ·
2 点赞 ·
0 评论

【数据库】三分钟快速创建一个简单的数据库(Postgresql)

三分钟快速创建一个简单的数据库(Postgresql)本文主要介绍建立一个简单数据库的基本步骤(创建数据库、创建数据表、导入数据)以及一些注意事项。创建数据库创建一个新的数据库:CREATE DATABASE 数据库名;如果需要对数据库改名字:UPDATE pg_database SET datname = '要改的名字' WHERE datname = '原来名字';删除数据库:DROP DATABASE 数据库名;创建数据表创建数据表的基本格式为:CREA
原创
发布博客 2020.11.21 ·
2368 阅读 ·
3 点赞 ·
0 评论
加载更多