自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(537)
  • 资源 (1)
  • 收藏
  • 关注

原创 linux中结合sed和grep的全局文本替换示例

在grep命令的字符串要用双引号“”围起来,但是在sed命令中的oldstring和newstring不需要双引号围起来!注意:grep命令前后是一对“`”,不是单引号,是键盘左上角的那个!path:路径,可以是一个文件路径,也可以是一个目录路径。-i 表示inplace edit,就地修改文件。newstring:要替换成为的新字符串。-r 表示递归式地搜索子目录。oldstring:原字符串。-l 表示输出匹配的文件名。

2023-06-05 20:35:13 5

原创 数字电路仿真编译文件指定方式

一个设计通常可能会可以通过预处理器宏开关来控制其中的配置情况或者设计选项的切换,本质上是切换编译范围。有时也通过宏来指定设计参数。比如说一个DMA的设计,4个通道还是8个通道,在编译时指定宏的值来决定按几个通道进行设计配置,也同样可以在命令行或者file.lst指定宏的定义,这里有两种情况。如下所示(最后两行):+libext+.v其中,NUM_CH对应于设计中使用到的一个参数类的宏,比如说用于指定通道数为8个。

2023-05-26 21:11:21 604

原创 二叉树的序列化(serialization)与反序列化(de-serialization)

本文简要介绍二叉树的序列化处理和反序列化处理及对应的python实现。二叉树通常为了方便而以一维数组(比如说python list)的格式进行存储,二叉树的序列化(serialization)就是指将二叉树转换成列表或者一维数组的形式。实际使用的时候再由列表的形式变换回二叉树的格式,这个就是反序列化(de-serialization)。序列化和反序列化是各种复杂的数据结构的实际存储和使用时都需要碰到的问题。

2023-05-22 20:53:18 360 1

原创 Python: 导入或执行python源文件的几种方法

本文介绍python中导入或执行python源文件(通常是从另一个python源文件中)的几种常用方法。包括import, exec(), os.system()等。

2023-05-12 19:45:14 446

原创 Linux压缩和解压缩(tar, zip, bz2, 7z, xz, rar, etc)

汇总简介linux系统中常见各种文件压缩格式,包括tarball, zip, bz2, 7z, xz,rar等等的压缩和解压缩。本文中只介绍所涉及到的工具或命令常见使用方法,更详细更高端的使用方法可以用"cmd --help"的方式进行查看。

2023-05-02 14:32:11 685

原创 Python string formatting: %-formatting, str.format(), f-strings

Python中有三种字符串格式化的方式: (1) %-formatting (2) str.format() (3) f-strings 本文简要介绍这三种字符格式化方法的使用方式。

2023-04-30 15:28:43 634

原创 关于稠密性和连续性的通俗理解

通俗地说,当我们说某个数域的稠密性时说的该数域中任意两个不同的数之间必然还存在第三个(同样属于该数域的)不同的数。有理数是稠密的,任意两个有理数之间还有无穷多个有理数。取任意两个不同有理数p、q,显而易见的是,(p+q)/2是居于p和q之间的另一个有理数。依此类推,可以构造出p和q之间的任意多个有理数。

2023-04-27 13:02:37 288

原创 git: Linux中创建中心仓库(or 裸仓库:bare repository)

简单介绍在linux系统中创建一个多人协同作业用的git repository的步骤及一些相关设置。这里仅考虑在同一linux服务器内的用户要访问该git-repo,暂不涉及从外部网络访问该git-repo的设置。首先,假定你有管理员权限,并且假定先创建了一个组grp_git,允许该组中的成员访问该共享git repository。

2023-04-17 13:54:11 457

原创 算法笔记:前缀和+哈希表(leetcode题解例)

前缀和(以及与哈希表组合)是解决算法问题中常见的技巧。本文结合几道leetcode算法题解例介绍前缀和+哈希表的应用例。前缀和:针对一个给定的数列A,它的前缀和数列定义如下:(这里采用和c或者pyhton相同的从0开始的下标方式,以便于和编程进行对照)。前缀和的计算有一个良好的特性,即不是每个前缀和都需要独立计算,前后有依赖关系,如下所示:,这样的话针对数组(本文中不追求严格,数列和数组视为可以互换的名词)A,它的所有的前缀和可以在一次从左到右的遍历中以O(n)(而不是O(n**2)!

2023-03-12 16:45:17 574

原创 RL笔记:基于策略迭代求CliffWaking-v0最优解(python实现)

CliffWalking-v0是gym库中的一个例子[1],是从Sutton-RLbook-2020的Example6.6改编而来。不过本文不是关于gym中的CliffWalking-v0如何玩的,而是关于基于策略迭代求该问题最优解的实现例。这个游戏非常简单,不用计算,直觉就可以知道,最优策略是:在出发点向上走一格;然后在第3行一路右行;到达最右侧后向下移动一格后即到达目标网格。总的奖励是-13点。以下给出基于策略迭代算法来求解这个问题的最优策略,看看能不能得出以上直觉上的最优策略。

2023-03-05 18:25:01 975 4

原创 4K vs. UHD: What’s the Difference?

UHD的上一代标准是HD,HD的帧大小(分辨率)为1920*1080,UHD严格地来说有两种,一种是3840*2160;由于4K的江湖名声远比UHD跟通俗而易被大众接受,所以电视或者显示器等设备制造商就更喜欢用4K作为宣传,相当于碰了个瓷,但是其实是指4K UHD。有些厂家会特意标明4K UHD,以区别于DCI 4K,但是绝大多数情况就是直接用4K。4K标准的帧大小为4096 x 2160,是其上一代的2K标准的4倍。所以说,4K是从内容的角度来说事儿,而UHD则是从显示设备的角度来说事儿。

2023-02-28 17:24:57 871

原创 RL笔记:动态规划(2): 策略迭代

Sutton-book第4章()学习笔记。本文是关于其中4.2节(策略迭代)。

2023-02-26 16:44:26 917

原创 RL笔记:动态规划(1): 策略估计和策略提升

Sutton-book第4章(动态规划)学习笔记。本文是关于其中4.1节(策略估计)和4.2节(策略提升)。当给定MDP的完全模型后,可以基于动态规划算法求解最优策略。事实上,所有使用的强化学习算法都可以看作是动态规划算法的近似。DP可以用于连续强化学习问题,但是仅限于有限的特殊情况能够给出精确解。常见的做法是将连续问题离散化,然后基于有限MDP的动态规划方法求解。问题设定:Finite MDP{S, A, R, p(s’,r|s,a)}Key Idea:基于价值函数进行结构化的策略搜索。

2023-02-05 15:26:33 963 1

原创 强化学习笔记:基于策略的学习之策略迭代(python实现)

在强化学习中,根据是否依赖于(环境的)模型,可以分为有模型(model-based)学习和无模型(model-free)学习。根据行动的决策基准,可以分为基于价值的学习(value-based)和基于策略学习(policy-based)。前面两篇分别介绍了直接求解贝尔曼方程进行价值计算以及以迭代的方式求解价值近似(value iteration)。本篇进一步介绍基于策略的学习的策略迭代算法原理及其实现。

2023-01-28 16:05:38 1429 1

原创 强化学习笔记:基于价值的学习之价值迭代(python实现)

在强化学习中,根据是否依赖于(环境的)模型,可以分为有模型(model-based)学习和无模型(model-free)学习。根据行动的决策基准,可以分为基于价值的学习(value-based)和基于策略学习(policy-based)。 本文(以及接下来的文章)描述价值估计或者近似,通常称为价值迭代(value iteration)的原理和实现。。。。这里似乎存在状态值的定义与基于价值的方法的行动决策机制之间的矛盾。其本质问题是什么呢?

2023-01-25 17:18:40 994

原创 强化学习笔记:基于价值的学习之价值计算(python实现)

在强化学习中,根据是否依赖于模型,可以分为基于模型(model-based)的强化学习和无模型(model-free)的强化学习。根据策略的更新和学习方法,强化学习算法可以分为基于价值函数的学习方法和基于策略的学习方法。在基于价值函数的学习方法中,根据状态值函数(state-value function)的估计值,进行行动决策。比如说,从t时刻的状态出发,有K种行动可以选择:{},在各行动分别迁移到状态{那选择哪个动作呢?

2023-01-18 17:58:21 1331

原创 TicTacToe: 基于时序差分TD(0)算法的agent实现以及完整python实现框架

本文进一步实现一个基于强化学习的时序差分算法(Temporal Difference, TD(0))的Tic-Tac-Toe AI Agent。并进行了多种Agent之间的对战测试。本文中的代码是基于【2】中chapter01的代码进行改造的。包括类结构和类中的方法等实现的修改, 追加Minimax Agent,多种Agent之间的对战测试,等等。当然,本文针对关键要点根据我的理解追加了解读代码说明,希望能够有兴趣的小伙伴有所帮助,一起学习进步。

2023-01-15 14:26:42 703 1

原创 TicTacToe:Minimax-Agent以及人机对弈python实现

在上一篇中实现一个简单的Tic-Tac-Toe人机对弈程序。参见:Tic-Tac-Toe人机对弈程序(python实现)其中计算机棋手或者说AI棋手除了在下一步能够使自己获胜或者阻止对手取胜外,就只是随机落子了。本文更进一步引入经典的经典的对抗性博弈算法minimax算法来为AI棋手加持。

2023-01-07 17:09:08 956 1

原创 Tic-Tac-Toe人机对弈程序(python实现)

前面几篇博客(以循序渐进的方式)实现了Tic-Tac-Toe游戏的棋局搜索、遍历以及所有可能棋局数和盘面状态数的计算,参见:本文先实现一个简单的Tic-Tac-Toe人机对弈程序,为下一步实现基于minimax算法的Tic-Tac-Toe人机对弈程序做一个准备。

2023-01-05 11:31:51 634

原创 Tic-Tac-Toe有多少种不同棋局和盘面状态(python实现)

在前两篇博客中实现了遍历搜索所有的Tic-Tac-Toe的棋局的python程序实现。根据上一篇的实现(搜索Tic-Tac-Toe所有可能棋局),结果表明有255168种棋局,有5478种盘面状态。但是,这个结果对吗?严格地来说是不对的。因为以上实现没有考虑Tic-Tac-Toe游戏的棋盘的对称性。举个例子说,第一手下在四个角上的任意一个角上本质上都是一样的。考虑了对称性所导致的重复后,总的可能棋局数和盘面状态数会大幅度减小。

2023-01-02 15:28:27 531

原创 Tic-Tac-Toe可能棋局遍历的实现(python)

在上一篇博客中实现了搜索Tic-Tac-Toe游戏的某个棋局的python程序。接下来的问题是,在Tic-Tac-Toe游戏中总共有多少种可能的棋局呢?注意,棋局是指在两个player交替下棋直到终局的过程中所导致的棋盘状态变化的序列。所以,即便所包含的棋盘状态集合完全相同,但是如果棋盘状态出现的顺序不同的话,也是不同的棋局。本文在上一篇的基础上进一步实现搜索Tic-Tac-Toe游戏的所有可能棋局的实现。

2023-01-01 16:47:15 504

原创 Tic-Tac-Toe可能棋局搜索的实现(python)

Tic-Tac-Toe中文常译作井字棋,即在3 x 3的棋盘上,双方轮流落子,先将3枚棋子连成一线的一方获得胜利。Tic-Tac-Toe变化简单,可能的局面和棋局数都很有限(相比中国象棋、日本象棋、围棋等来说连九牛一毛都不到!具体有多少可能的局面以及可能的棋局数,本系列完成以后就可以给出答案了),因此常成为和搜寻的教学例子,同时也是的一道好题目。本系列考虑实现一个Tic-Tac-Toe AI,以由浅入深循序渐进的方式来逐步完成这个实现。

2022-12-31 16:49:07 707

原创 哈希冲突概率计算及python仿真

Hash函数不是计算理论的中基本概念,计算理论中只有单向函数的说法。所谓的单向函数,是一个复杂的定义,严格的定义要参考理论或者密码学方面的书籍。用“人类”的语言描述单向函数就是:如果某个函数在给定输入的时候,很容易计算出其结果来;而当给定结果的时候,很难计算出输入来,这就是单向函数。各种加密函数都可以被认为是单向函数的逼近。Hash函数(或者成为散列函数)也可以看成是单向函数的一个逼近。即它接近于满足单向函数的定义。Hash函数还有更通俗的理解方式,即它代表的是一种关于数据的压缩映射。

2022-12-21 23:18:31 569

原创 机器学习笔记:scikit-learn pipeline使用示例

在机器学习中,管道机制是指将一系列处理步骤串连起来自动地一个接一个地运行的机制。Scikit-Learn提供了pipeline类用于实现机器学习管道,使用起来十分方便。既然要将不同处理步骤串联起来,首先必须确保每个步骤的输出与下一个步骤的输入的数据是匹配的。所以,管道中的每个步骤都包含两个方法,fit()用于拟合(或者说训练),transform()用于数据转换(将数据转换为下一个步骤所需要的输入数据格式)。管道的最后一个步骤应该是一个估计器,估计器不再需要数据转换,因此估计器只需要实现fit()方法。

2022-12-16 22:03:18 893

原创 混检在什么条件下是可行的?

十混一混检的目的是用尽量少的采样管数来覆盖所有人的检测。但是只有在人群群体感染率比较低的时候才能达到这一目的。以下我们来计算一下能够实现这一目的的临界条件。

2022-12-13 16:51:50 1172 1

原创 混检阳性概率的计算(贝叶斯定理的一个应用例)

目前核酸混检的基本做法是十混一,如果阳性人群分布完全随机,那么做十混一混检为阳性的概率有多大呢?假设人群整体感染率为p,十个人中任意一个人为阳性的话,混检结果为阳性。只有十个人都是阴性时,混检结果才为阴性。这样为了方便,我们假定混检的漏检概率为0,即任何一个人是阳性的话肯定能够得到混检阳性的结果;虚警概率也为0,即十个人全阴性的条件下不会报告阳性。由于人群整体感染率为p,所以任意某人为阴性的概率为(1-p),十个人全部是阴性的概率为。因此,十混一混检阳性率为:.

2022-12-11 18:27:48 14675 5

原创 Matlab图像处理基础(2):区域处理,边沿检测

基于Matlab的图像处理基础介绍。Matlab提供了丰富的图像处理相关的工具箱,基于Matlab代码实验可以使得图像处理算法的理解变得更加简单直观。 以下所介绍的一些matlab工具函数都限于篇幅只涉及其基本的用法,更丰富的参数设定等可以查阅matlab说明。 本篇是本系列第二篇,介绍区域处理(Regional Processing),包括卷积、相关、高通滤波(边沿检测)、低通滤波(平滑)等。 上一篇参见:Matlab图像处理基础(part 1) 区

2022-11-29 20:15:24 1766

原创 numpy和matlab的多维数组展平:ravel, flatten, reshape, (:)

matlab的数组展平有两种基本方法,一种是用a(:);另一种是用reshape()函数。运行结果如下:要点:(1) matlab是按列优先进行展平。matlab中是以列作为第1维,行作为第2维,将矩阵展平时,先把第一列取出来,然后取第二列排在第一列后面,然后以此类推。。。(2) matlab本质上把所有标量、向量和矩阵都是当作矩阵(2维数组来看待)。比如说以上代码中即便常数1的size也是(1,1)。所以即便将矩阵展平了其实得到的还是一个矩阵,只是矩阵的两个维度方向的长度发生的变化。

2022-11-25 22:43:27 1789

原创 dB family cheat sheet: dB, dBW, dBm, dBi, dBc, dBFS, etc

简要介绍dB家族的各个成员。。。

2022-11-22 14:15:38 779

原创 Matlab滤波器设计示例

Matlab提供了非常丰富的滤波器设计工具,其中最基本的是designfilt()函数。designfilt()函数是通用的滤波器设计工具,可以用于设计各种类型的数字滤波器,以及模拟滤波器的数字近似。Matlab还提供了其它很多专用类型的滤波器设计函数,还有基于图形化界面进行滤波器设计的工具filterDesigner(旧版本为fdatool)。本文综合但简要地介绍各种matlab滤波器设计工具,顺便代码示例介绍用于滤波器频谱观测用的工具、以及如何使用所生成的滤波器对象。

2022-11-20 21:16:41 7207

原创 Matlab图像处理基础(1):图像表示,点处理

基于Matlab的图像处理基础介绍。Matlab提供了丰富的图像处理相关的工具箱,基于Matlab代码实验可以使得图像处理算法的理解变得更加简单直观。 以下所介绍的一些matlab工具函数都限于篇幅只涉及其基本的用法,更丰富的参数设定等可以查阅matlab说明。

2022-11-18 20:54:19 6877

原创 量子笔记:布尔逻辑/代数、逻辑门、通用门、可逆计算

量子计算、量子信息、量子编程自学笔记系列。用自己能看懂的方式来表述对于量子计算基础知识的理解。不求体系完备和逻辑严谨、但求通俗易懂。或能顺便给路过的小伙伴一些参考和启发那是纯属巧合概不认账^-^。当然,仅限于轮廓的勾勒和要点简述,对细节感兴趣的话还是要亲自服用正儿八经的专业书籍。本文介绍经典世界的布尔逻辑、布尔代数、通用门、可逆计算等概念,为接下来更好地理解量子计算做一些准备和铺垫。

2022-11-13 12:20:00 1336

原创 欠拟合与过拟合、泛化能力概念总结及python示例

机器学习中欠拟合(underfitting)和过拟合(overfitting)是一个很常见的问题,在训练模型的过程中,我们通常希望达到以下两个目的:(1). 训练的损失值尽可能地小。(2). 训练的损失值与测试的损失值之间的差距尽可能地小。当第一个目的没有达到时,则说明模型没有训练出很好的效果,模型对于判别数据的模式或特征的能力不强,则认为它是欠拟合的。

2022-11-11 21:52:31 1396

原创 Matlab高效编程:向量化(vectorization)、矩阵化、变量预定义

本文介绍几个Matlab常用的提高运行效率的编程技巧。对一个基于数值化的方式计算一个连续函数的频谱(傅里叶变换)的例子给出了三种实现(双重循环、向量化实现、矩阵化实现)代码,对比了运行时间。由于Matlab是解释性执行语言,Matlab不要求变量使用之前进行预定义,也不要求内存的预分配,一切都可以在执行过程中动态分配。这种灵活的方式方便了用户编程,但是同时也带来了潜在的低效率问题。以下针对一个简单的计算例子,用几种不同的代码实现方式来比较不同的写法对于运行效率的影响。

2022-11-01 22:35:17 2225

原创 量子笔记:多比特量子门

量子计算、量子信息、量子编程自学笔记系列。用自己能看懂的方式来表述对于量子计算基础知识的理解。不求体系完备和逻辑严谨、但求通俗易懂。或能顺便给路过的小伙伴一些参考和启发那是纯属巧合概不认账^-^。当然,仅限于轮廓的勾勒和要点简述,对细节感兴趣的话还是要亲自正儿八经地啃正经的参考书。本节介绍用于多个量子比特的操作的量子门。单个量子比特的操作无法使量子比特之间发生“化学反应”--纠缠。虽然对单量子比特的门操作也是不可或缺的,但是只有多比特量子门作用于多个量子比特才能真正的产生有趣的事情。

2022-10-29 23:22:55 3200

原创 量子笔记:量子计算 toy python implementation from scratch

量子计算、量子信息、量子编程自学笔记系列。 用自己能看懂的方式来表述对于量子计算基础知识。到目前为止已经介绍了一大堆理论知识,这一篇来上点代码,看看如何用python来模拟实现量子计算中的处理。这是python实现的第一篇,先介绍一些python实现量子计算基本编程实现,整到哪算哪。。。

2022-10-28 11:10:40 1400 3

原创 蒙提霍尔问题(The Monty Hall Problem)解析(贝叶斯分析、Python仿真)

蒙提霍尔问题可能是概率论历史上最具争议的问题。问题的场景极其简单,而其结果却呈现出惊人的反直觉,以至于许多人都无法接受它,曾经引发了巨大的争论。并且有许多著名的人物都在此问题上闹了笑话。本文介绍蒙提霍尔问题,并给出几种不同的分析和解题思路。

2022-10-21 23:08:00 3939

原创 量子笔记:量子纠缠祛魅,贝尔纠缠态

目录0. 概要1. 纠缠态 vs 可分离态1.1 由张量积生成的双量子状态1.2 无法由张量积生成的双量子状态1.3 双量子系统状态的向量空间2. 测量的视角 from measurement's perspective3. 纠缠度:貌合神离 vs 勾肩搭背 vs 心灵交织4. 如何制备量子纠缠5. 超光速通信? 量子计算、量子信息、量子编程自学笔记系列。 用自己能看懂的方式来表述对于量子计算基础知识的理解。 不求体系完备和逻辑严谨、但求通俗易懂。或能顺便给路过的

2022-10-17 22:38:49 1425 1

原创 量子笔记:多量子系统、叠加、量子计算并行处理能力

在经典世界里进行这样的计算,比如说,考虑在经典计算机上变成实现以上处理的话,计算机需要先计算门作用于基态0的效果,然后再计算门作用于基态1的效果,然后再对两个处理的结果进行线性组合得到新的状态。研究多量子系统的主要目的在于研究当不同量子比特之间存在相互作用的情况,只能用一个能够正确表现量子位间相互作用的新的向量空间来描述。从另外一个角度来看,经典比特要么处于0状态、要么处于1状态,而量子比特的状态由于是以叠加态的形式存在(在观测之前保持了坍缩到0和1的可能性),所以可以认为同时既在0状态,又在1状态。

2022-10-16 08:19:34 1308 1

原创 量子笔记:张量、张量的阶数与向量的维数、外积、张量积

量子计算、量子信息、量子编程自学笔记系列。 用自己能看懂的方式来表述对于量子计算基础知识的理解。 不求体系完备和逻辑严谨、但求通俗易懂。或能顺便给路过的小伙伴一些参考和启发那是纯属巧合概不认账^-^。当然,这里仅限于轮廓的勾勒和要点的连接,对细节感兴趣的话还是要正儿八经地啃正经的参考书。 本节介绍张量以及张量积,为下一节介绍多量子系统的状态表示、量子纠缠和作用于两个或多个量子比特的门做一些数学准备。

2022-10-14 22:46:24 4264 7

tictactoe-chenxy.py

TicTacToe的Python实现,包括基于时序差分(TD(0))算法的实现,基于Minimax算法的实现,RandomAgent的实现,各种不同Agent之间的对战测试,以及人机对弈程序等等。

2023-01-15

斯坦福大学CS231N-2022课程第一个大作业全部代码数据

斯坦福大学CS231N-2022课程第一个大作业,包含原始的starter-code package(也可以从课程网页下载)以及本人所完成的所有代码。通过代码对比可以知道代码修改部分。相关解说参见博客https://chenxiaoyuan.blog.csdn.net/article/details/124630014。

2022-05-21

空空如也

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

TA关注的人

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