- 博客(51)
- 收藏
- 关注
原创 写博客三周年的感想
当时写博客主要是有以下几点考虑。如果想要更进一步成为一个优秀的博主,还需要对自己博客的内容非常熟悉,我在这方面就需要提高,之前有一位粉丝问我之前写的一个比赛的代码环境相关的问题,我由于不够熟悉加上时间间隔的比较久,最终还是没能解答那个问题。我把我写的这些笔记整理成了博客,在套磁的时候作为补充材料起到了不小的作用(虽然在写博客的时候并没有考虑到会对申请也有帮助,当时计划的研究方向也和优化不太相关,本来计划的是以后做嵌入式相关的岗位,被调剂到了做算法的实习部门,可能这个世界就是这么神奇hhh)。
2023-12-31 11:47:11
552
4
原创 Dataloader读取dataset子数据
我希望完成的是使用dataloader从一个dataset中根据先前设定的index来读取数据(只读取这些index的数据)。最近遇到了一个问题,卡了好久终于解决了,想写一篇博客来记录一下。
2023-10-11 22:35:43
338
原创 Gurobi-目标函数中定义高次函数
最近在使用Gurobi,今天想在目标函数中定义一个三次函数,按照常规写法不行,于是我在网上查了一下,最终找到了解决的方法。经过查阅我发现Gurobi只能够定义两个数相乘,如果我们想定义一个三次函数,我们可以使用下面的方法。那么既然我们可以表示三次方项了,有没有什么办法能够表示多次方项呢?答案是有的,我们可以使用。假设我们需要定义一个目标函数,里面含有三次项。如果按照上面的解法我们会得到报错。我们可以在constraint中定义一个名为。的平方,接着在目标函数中我们可以使用。,比较简单地表示出多次项。
2023-03-02 23:11:23
1790
原创 图机器学习-节点嵌入(Node Embedding)
我们首先需要设计一个encoder对节点进行编码。既然要比较相似度那么我就需要定义节点的相似度。同时我们还需要定义一个decoder,它是一个从embedding space到相似度得分的映射。最后我们需要优化encoder的参数,使得nodes在embedding space的相似度和在原始图中的相似度尽量相近。
2023-01-25 19:17:51
2368
2
原创 图机器学习-图机器学习传统方法
最近在学习一些GNN相关的知识,想写一些笔记记录一下自己的学习过程,主要的学习资料为CS224W课程主页上面的资料和b站同济子豪兄的中文讲解。这篇博客是我2023年的第一篇博客,想以图机器学习中的传统方法作为博客的内容。对于图上面的任务,可以分为几类参考之前的传统机器学习,图机器学习也一样需要将node,link或者graph用一些features来表示。这篇博客主要讲的就是一些传统的方法来得到这些features。(本文的例子皆为无向图)Node有很多种描述刻画的方式,比如最直观的,即node上面的lin
2023-01-12 13:24:16
493
原创 混合整数规划(Mixed Integer Programming)
混合整数规划问题是运筹优化中经常遇到的一类问题。在这类问题中自变量的类型可能是整数也可能不是整数。相比于连续优化,混合整数规划很多时候会更难求解。在学术界混合整数规划一直是一个活跃的研究领域。...
2022-08-30 16:43:00
32871
原创 数值优化-信赖域方法
除了之前讲过的线搜索方法,信赖域方法(trustregion)也是数值优化中的一类重要的方法。在信赖域方法中我们需要定义一个信赖域,在这个信赖域中使用替代函数来代替原来的目标函数,通过优化替代函数来优化目标函数。本文和书中一致,采用二次函数来作为替代函数(modelfunctionmk)。mk是原函数f在xk这点处的泰勒级数展开。f(xk+p)=fk+gkTp+21pT∇2f(xk+tp)pmk。...
2022-07-23 11:57:02
1436
原创 线搜索方法
本文主要介绍线搜索方法(包含梯度下降,牛顿法,拟牛顿法的分析)。线搜索方法是一种迭代算法,迭代的过程由下列公式给出。xk+1=xk+αkpk其中αk为步长,pk为方向。我们需要确定这两个参数,来帮助我们迭代。...
2022-07-20 18:57:34
2973
原创 多智能体强化学习与博弈论-博弈论基础4
本篇文章主要讲的是贝叶斯博弈(Bayesian Games,也称作不完全信息博弈)和拍卖理论。不完全信息博弈在我们生活中经常出现,比如拍卖,在市场和别人讨价还价等等。首先举一个贝叶斯博弈的简单例子假设两个人在决定接下来要做什么,B代表Ballet,F代表Football。player1不知道player2希望和他选择做一样的事情,还是希望避免和他做一样的事情,假设这两种情况的概率都是1/2。这时博弈就是一个不完全信息博弈。我们使用(B,(B,F))来表示这意味着玩家 1会选择B,当处于状态1时,参与人2也会
2022-06-21 20:00:30
939
原创 多智能体强化学习与博弈论-博弈论基础3
之前主要介绍了如何判断博弈中是否到达了纳什均衡,在这篇文章中将主要介绍如何计算纳什均衡。本文主要介绍下列几种情况下的纳什均衡两个智能体,每个智能体有两个动作两个智能体,每个智能体有多个动作,零和博弈非零和,每个智能体有多动作Minimax Theoram:For every two-person, zero-sum game with finitely many pure strategies, there exists a mixed strategy for each player and a valu
2022-06-19 10:35:09
2207
4
原创 多智能体强化学习与博弈论-博弈论基础2
之前我们介绍了一些单次博弈的例子,除了单次博弈外,重复博弈也是经常在我们生活中出现的。在重复博弈中智能体有机会在单次的博弈中占到对手的便宜,但是由于考虑到后来还有博弈,可能其它的智能体会采取对自己更为不利的策略,智能体为了有更好的长期收益,所以决定智能体策略的选择会更加复杂。在重复博弈的过程中不仅要考虑当前这次的博弈,还需要考虑以后的博弈收益。对于以后的博弈,需要给定一个折扣,距离现在的时间越长,折扣越大。折扣可以使用δt\delta^tδt来表示。在重复博弈中有很多的策略,其中的一种策略为。以重复的囚徒困
2022-06-17 19:32:19
1760
原创 多智能体强化学习与博弈论-博弈论基础
最近开始学习一些多智能体强化学习相关的内容,因此我打算写一些多智能体强化学习和博弈论相关的学习记录😃。这篇博客主要介绍博弈论的一些基础示例和基础知识。举个例子:假设有一门课程,你需要在准备期末考试和期末报告中做出选择(两部分权重相同)来最大化你的期末分数。你的同学也需要做出决定来最大化他的分数。两个人之间不能交流。准备考试在这个部分可以获得92分,不准备可以获得80分准备报告,加入你和你的同学都准备你们能在这部分获得100分,如果一个人准备了,你们获得92分,都不准备你们获得84分。我们可以得出这样的一个.
2022-06-12 18:49:55
2251
原创 强化学习之混合动作空间
在强化学习的动作空间设定中有连续动作空间,离散动作空间和混合动作空间。在大多数的论文中研究的都是连续动作空间和离散动作空间,而混合动作空间研究的比较少。在游戏ai,自动驾驶等一些领域中有时动作空间可以是混合动作空间,因此我阅读了一些相关的文献,资料和代码,计划整理一下混合动作空间中的一些基础知识(主要介绍parameterized action space)。考虑一个简单的场景,假设我们要写一个王者荣耀的游戏ai,我们需要控制英雄的走位,技能释放的方向,这些动作都是属于连续动作空间的。同时我们还需要选择不同
2022-06-07 15:43:07
8251
8
原创 MMGC(ACM Multimedia Grand Challenge)总结
MMGC(ACM Multimedia Grand Challenge)总结前段时间参加了ACM Multimedia Grand Challenge的比赛,自己最近空闲时间也比较多,因此想写一篇博客来总结一下MMGC比赛中自己的心路历程 🙈。2022年的MMGC是一个短视频传输中的优化比赛,比赛的介绍如下:短视频是一种基于用户生成内容在网络社交平台上分享的新型视频形式。然而,值得注意的是,短视频公司在带宽上花了很多钱。在不降低用户体验质量(QoE)的前提下节省带宽开销已经成为一个重要的问题。在短视频
2022-05-30 19:44:57
1964
7
原创 SAC(Soft Actor Critic)学习记录
SAC(Soft Actor Critic)学习记录基本介绍SAC(Soft Actor Critic)算法在近年来受到了许多的关注,得到了不少深度强化学习研究者的好评。这篇文章主要包含的内容有SAC算法的理论分析和核心代码实现。与许多目的是最大化累计奖励的深度强化学习算法不同,SAC算法的目的是最大化最大化熵正则化的累积奖励,这样能够鼓励智能体有更多的探索,从而达到更好的训练效果。maxπθ[∑tγt(r(St,At)+αH(πθ(⋅∣St)))]{max}_{\pi_{\theta}}\lef
2022-04-05 11:55:02
3727
6
原创 Python多进程(multiprocessing)
内含Python多进程相关知识,包含multiprocessing,Queue具体代码示例和一些可能遇到的问题以及解决方案。
2022-03-27 22:13:32
2813
6
原创 深度学习升级打怪之序列模型-(RNN, LSTM)
序列模型对于序列学习问题如果我们使用标准的神经网络,则会有一些问题输入和输出在不同的例子中有不同的长度,即使定义最大长度后补零也效果可能会比较差对于NLP等领域的问题时,输入的维度过大,导致参数过多,神经网络不好训练序列模型可以很好的帮助我们解决这些问题RNN(recurrent neural network)对于RNN而言,在前面的时间步的信息会影响到后面的结果。我们可以先初始化一个零向量a<0>a^{<0>}a<0>和x<1>x^{<
2022-01-23 18:21:45
755
原创 深度学习升级打怪之self attention笔记
self attention在听了李宏毅老师关于self attention的讲解后我觉得讲的非常好????,下面是我在听完课之后做的一些学习记录,主要的参考是李宏毅老师的网课和课件(文末给出)。self attention在NLP和很多其它领域都有着广泛的应用,以词性标注为例。I saw a saw这里的第一个"saw"是动词,第二个“saw”是名词(锯子),对于词性标注而言,模型的输入和输出的数量是相同的我们先考虑最简单的情况假设我们将这些词单独输入到一个全连接层,再输出,那么明显我们没
2022-01-23 11:36:48
2197
原创 机器学习笔记-PCA(主成分分析)
参考资料(大量参考了第一个链接,里面讲的非常详细):https://zhuanlan.zhihu.com/p/77151308统计学习方法(李航)https://zhuanlan.zhihu.com/p/29846048https://zhuanlan.zhihu.com/p/58064462
2021-12-15 18:06:17
938
原创 马赛克(蒙太奇)图片生成--Python实现
马赛克(蒙太奇)图片生成观察上面一张图我们可以发现,图片大致为一个蒙娜丽莎的画像,但是又有些不太一样。图片由一个个块组成,每一个块都是一张另外的图片,那么要实现这样的效果,我们应该怎样做呢?用一句话来概括就是将计算目标图片中的不同的块和数据集中源图片的相似度,选择相似度最高的进行替换。假设图片是RGB三通道的,我们可以分别求出来块的三个通道的均值,然后再比较块和源图片三通道数值之间的欧式距离,卡方距离或者其它距离,最终完成比较和替换。import cv2import osimport matpl
2021-11-25 21:57:02
4635
原创 MATLAB与Python类似代码进行边缘检测的差异与注意事项
边缘检测今天在做图像边缘检测的时候遇到了一个比较奇怪的事情,看起来很相似的代码在MATLAB和Python中跑出的结果却不相同。在边缘检测的代码中我定义了一个简单的kernel为[1, -1]用来检测图片的边缘,然后分别和得到的图像进行卷积,最终输出图像。Python代码:img = cv2.imread("lena.bmp")my_kernel = [1, -1]my_kernel = np.reshape(my_kernel, (1, 2))my_kernel2 = my_kernel.
2021-10-17 11:50:26
208
原创 std::bind与std::function
std::bind与std::functionstd::bind调用std::bind的一般形式为auto newCallable = bind(callable, arg_list);newCallable本身是一个可调用对象,arg_list是一个用逗号分隔的参数列表。当我们调用newCallable的时候会调用callable并且传给它arg_list里面的参数std::bind是c++11的新特性,它接受一个可调用对象生成一个新的可调用对象来适应原对象的参数列表。举一个例子bool
2021-10-15 16:28:03
354
原创 Logistic regression 与二分类
Logistic regression 与二分类假设我们有一个二分类问题,输入是一张图像,我们需要判断这张图像是否为猫的图像。也就是说我们需要一个输出,输出为0则代表不是猫的图像,输出为1则代表是猫的图像。对于线性回归而言,我们有y=θxy=\theta xy=θx,但是线性回归并没有办法将输出的结果控制在0和1之间,logistic回归则可以帮助我们解决这个问题。我们先来看一下logistic回归的表达式y=11+e−zy = \frac{1}{1+e^{-z}}y=1+e−z1其中z=ω
2021-10-15 16:17:10
328
原创 Pybind11 tutorial
pybind core featurespybind11(available in https://github.com/pybind/pybind11) is a lightweight header-only library that exposes C++ types in Python and vice versa, mainly to create Python bindings of existing C++ codesimilar project: Boost.pythonadvanta
2021-09-29 17:17:36
358
原创 CMakeLists之include_directories
CMakeLists之include_directories最近在写CMakeLists的时候遇到了一些问题,在这里记录一下我解决的方案下面是一个简单的demo项目的结构如图左边所示。test.h在python文件夹下的include文件夹里面,test.cpp在python文件夹下面的src里面,CMakeLists如下所示cmake_minimum_required(VERSION 3.4.1)project(demo)include_directories( ${CMAKE_CU
2021-08-15 10:57:04
5002
原创 stm32学习笔记之中断编程
stm32学习笔记(2)中断和异常的区别外中断——就是我们指的中断——是指由于外部设备事件所引起的中断,如通常的磁盘中断、打印机中断等;内中断——就是异常——是指由于 CPU 内部事件所引起的中断,如程序出错(非法指令、地址越界)。内中断(trap)也被译为“捕获”或“陷入”。异常是由于执行了现行指令所引起的。由于系统调用引起的中断属于异常。中断则是由于系统中某事件引起的,该事件与现行指令无关。NVICNVIC 是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是内核里
2021-08-06 22:27:49
445
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人