
Python编程
文章平均质量分 81
gzroy
长期任职500强通讯企业,担任了从产品售前到产品研发的各个关键岗位,对移动通讯技术,人工智能,软件开发等有深入的了解和从业经验。现为国内头部能源企业提供人工智能方面的咨询和规划等服务。个人研究领域广泛,对NLP,图像识别,游戏开发,3D制作,区块链,AR等领域均有研究。
展开
-
Unity开发一个单人FPS游戏的教程总结
介绍了如何用Unity设计一个FPS单人游戏的方方面面原创 2025-02-17 19:57:53 · 908 阅读 · 0 评论 -
中文词向量质量的评估
本文介绍了对中文词向量的质量进行评估的方法,对腾讯,Jinaai,Text2Vec这三个主流的中文词向量模型的效果进行了综合评估,并采用CA8评测数据集进行了测试原创 2024-11-03 15:08:58 · 1213 阅读 · 0 评论 -
建设一个私有知识库问答网站
介绍了如何基于大模型构建私有知识库问答系统原创 2024-02-07 21:53:59 · 1090 阅读 · 0 评论 -
用Flask打造一个大模型智能问答WEB网站
用Flask来建立一个智能问答网站,建立自己的ChatGPT系统原创 2024-01-27 13:28:32 · 1905 阅读 · 0 评论 -
大模型强化学习之奖励模型的训练
详细讲述了如何根据InstructGPT论文来实现一个奖励模型原创 2023-09-02 15:19:48 · 4936 阅读 · 0 评论 -
Huggingface训练Transformer
用Huggingface来对大模型进行强化学习训练原创 2023-08-27 12:12:01 · 3896 阅读 · 0 评论 -
基于Tensorflow来重现GPT v1模型
根据GPTv1的论文,用tensorflow来重现模型的训练过程原创 2023-07-10 11:34:39 · 2539 阅读 · 4 评论 -
解读YOLO v7的代码(三)损失函数
对Yolov7的代码进行分析,研究其正样本生成机制以及损失函数原创 2023-02-09 08:58:12 · 12961 阅读 · 9 评论 -
Jason Web Encryption (JWE)的解密
在Web应用的鉴权和授权当中,经常都会碰到JWT, JWE形式的Token。JWT可以很方便的在jwt.io之类的网站中解码,查看token的信息。但是对于JWE,因为Token保存的信息是加密后的,不能直接解码,需要进行解密。以下是如何用Python进行解密的方法。首先我们需要安装一个库,pip install jwcryptoJWE是由5部分组成,每个部分之间以.号分隔。第一部分是没有加密的,只是进行了BASE64的编码,我们解码之后可以看到这个JWE的加密方式。例如我拿到的JWE的第一部分是e原创 2022-05-19 18:13:50 · 3073 阅读 · 0 评论 -
强化学习的A3C算法应用(训练Atari游戏)
A3C算法的全称是Asynchronous Advantage Actor-Critic,异步优势执行者/评论者算法。这个算法和优势执行者/评论者算法的区别在于,在执行过程中不是每一步都更新参数,而是在回合结束后用整个轨迹进行更新。因此可以让多个Worker来进行轨迹的搜集和参数更新。每个执行者的更新都是异步的。这个算法与优势执行者/评论者算法相比,优点在于可以大大提高执行效率,因为对于策略更新算法来说,最耗时间的是在轨迹的搜集部分。算法的步骤如下:输入:环境输出:最优策略的估计参数:优化器原创 2022-01-28 17:00:10 · 7718 阅读 · 0 评论 -
基于TF-Agent的回合策略梯度算法模型训练Atari游戏
在上一篇博客中,我用Tensorflow的Agent库的DQN模型来对Atari的PONG游戏进行训练,效果很好。这次我打算测试一下回合策略梯度模型,看是否也能取得相同的效果。关于回合策略梯度算法的介绍,可以见我之前的另一篇博客强化学习笔记(5)-回合策略梯度算法_gzroy的博客-优快云博客在TF-Agent里面,有一个ReinforceAgent,实现了回合策略梯度算法。这个Agent需要构建一个Actor Network,通过输入环境的观察,得到动作的分布值,对这个分布值进行Softmax计算就原创 2022-01-07 09:55:15 · 3164 阅读 · 0 评论 -
Kaggle Titanic Disaster Competetion
好久之前在Kaggle上面写的一个notebook, 关于如何用数据科学的方法来对泰坦尼克号数据集进行分析和预测生还者的,有兴趣的朋友可以参考一下Roy's Titanic Notebook | Kaggle原创 2021-12-27 10:57:52 · 711 阅读 · 0 评论 -
用Tensorflow Agents实现强化学习DQN
在我之前的博客中强化学习笔记(4)-深度Q学习_gzroy的博客-优快云博客,实现了用Tensorflow keras搭建DQN模型,解决小车上山问题。在代码里面,需要自己实现经验回放,采样等过程,比较繁琐。Tensorflow里面有一个agents库,实现了很多强化学习的算法和工具。我尝试用agents来实现一个DQN模型来解决小车上山问题。Tensorflow网上的DQN教程是解决CartPole问题的,如果直接照搬这个代码来解决小车上山问题,则会发现模型无法收敛。经过一番研究,我发现原来是在ag原创 2021-12-26 22:15:55 · 3068 阅读 · 3 评论 -
强化学习笔记(6)-执行者/评论者方法
以下为阅读《强化学习:原理与python实现》这本书第八章的学习笔记。本章介绍带自益的策略梯度算法,这类算法将策略梯度和自益结合起来:一方面,用一个含参函数近似价值函数,利用这个近似值来估计回报值;另一方面,利用估计得到的回报值估计策略梯度,进而更新策略参数。这两方面常常被称为评论者(critic)和执行者(actor)。所以带自益的策略梯度算法称为执行者/评论者算法。执行者/评论者算法用含参函数表示偏好,用其softmax运算的结果来近似最优策略。在更新参数时,也是根据策略梯度定理,取为梯度方向迭原创 2021-12-12 10:56:52 · 1023 阅读 · 0 评论 -
强化学习笔记(5)-回合策略梯度算法
记录一下在阅读《强化学习:原理与python实现》这本书的学习笔记。在之前学习到的强度学习方法中,每次更新价值函数只更新某个状态动作对的价值估计。但是有些情况下状态动作对的数量非常大,不可能对所有的状态动作对逐一更新。函数近似方法用参数化的模型来近似整个状态价值函数,并在每次学习时更新整个函数,这样,对于没有被访问过的状态动作对的价值估计也能得到更新。函数近似方法采用一个参数为w的函数q(s,a:w)来近似动作价值。...原创 2021-12-05 10:50:46 · 2008 阅读 · 0 评论 -
强化学习笔记(4)-深度Q学习
记录一下在阅读《强化学习:原理与python实现》这本书的学习笔记。在之前学习到的强度学习方法中,每次更新价值函数只更新某个状态动作对的价值估计。但是有些情况下状态动作对的数量非常大,不可能对所有的状态动作对逐一更新。函数近似方法用参数化的模型来近似整个状态价值函数,并在每次学习时更新整个函数,这样,对于没有被访问过的状态动作对的价值估计也能得到更新。函数近似方法采用一个参数为w的函数q(s,a:w)来近似动作价值。...原创 2021-11-23 16:18:16 · 2625 阅读 · 2 评论 -
X.509证书的使用
总结一下如何使用X.509证书来保护我们的设备的数据传输。证书的签发以下是证书签发的流程,为了更好的演示,我们需要分别创建两个根证书,并且用每个根证书来颁发一个客户端证书。这两个根证书分别为root_1.crt以及root_2.crt,对应的两个客户端证书分别为client_1.crt以及client_2.crtopenssl genrsa -out rootkey.pem 2048 生成根证书的密匙 openssl req -x509 -new -key rootkey.pem -out原创 2021-09-26 16:07:27 · 1159 阅读 · 0 评论 -
以太坊智能合约与预言机实现机密数据的传送
假设我们有一个场景是需要在智能合约里面保存一个密码,当用户调用合约存入一定数量的以太币,合约将把密码告知用户。这个场景很简单,但是实现起来却不太容易,因为智能合约的代码对所有人都是透明的,因此很容易就可以查看代码获取到密码。要解决这个问题,我们可以引入预言机(Oracle)。在区块链中,智能合约是无法直接与外部系统交互的,例如经典的一个智能合约的应用,两个用户打赌球赛结果,并约定按照球赛结果来支付金额。这个场景里面,智能合约如何获知外部的球赛结果呢?这时就需要一个预言机作为中介,把球赛的结果写入到区块链中,原创 2021-09-21 19:41:10 · 1002 阅读 · 2 评论 -
以太坊私有网络的设置与体验
记录一下搭建一个以太坊私有网络环境的过程,方便以后的开发我这里采用的是Geth客户端,在geth.ethereum.org网站上有详细的文档介绍,这里主要是按照官网的教程来操作。安装我是Ubuntu的环境,执行以下命令来安装sudo add-apt-repository -y ppa:ethereum/ethereumsudo apt-get updatesudo apt-get install ethereum设置私有网络首先需要设置一个network id以便和其他以太坊网原创 2021-09-09 15:21:38 · 459 阅读 · 0 评论 -
强化学习笔记(3)-时序差分更新算法
时序差分更新算法和回合更新算法一样都是利用经验数据进行学习,其区别在于时序差分更新不必等到回合结束,可以用现有的价值估计值来更新。因此时序差分更新既可用于回合制任务,也可用于连续性任务。同策时序差分更新从给定策略的情况下动作价值函数的定义出发,我们可以得到:单步时序差分只需要采样一步,用来估计回报样本的值,这里表示有偏回报样本,与回合更新中由奖励计算得到的无偏回报样本相区别。基于以上分析,我们可以定义单步时序差分目标为:这里的U的上标(q)表示是对动作价值定义的,下标t:t+1表原创 2021-09-06 17:05:01 · 925 阅读 · 0 评论 -
强化学习笔记(2)-异策回合更新算法
在前一篇博客中,我总结了强化学习的同策回合更新的方法,并用这种方法来学习21点游戏的最优策略。这里我将总结一下我学习到的异策回合更新的方法。同策学习和异策学习的区别在于,同策是边决策边学习,学习者同时也是决策者。异策则是根据之前的历史来学习,学习者和决策者可以不同。以围棋AI为例,如果边对弈边学习,这就是同策学习。如果通过阅读人类的历史对弈记录来学习,那么就是异策学习。在异策学习中,历史记录中用到的策略和我们要学习的策略是不同的,所以称为异策学习。我们将要学习的策略称为目标策略,用来生成历史记录的另原创 2021-08-29 12:51:12 · 691 阅读 · 0 评论 -
强化学习笔记(1)-同策回合更新算法
在我上一篇博客文章中对21点的策略进行了研究,采用蒙特卡洛的方式来进行大量的模拟,通过对比不同策略的收益来找到最佳的策略,这里主要是通过概率的思想来进行研究。这里我打算换一种思路,采用强化学习的方法来进行研究。环境模拟首先我们需要先配置一个实验的环境,这里采用了Gym库的环境"Blackjack-v0"来进行模拟。以下代码是建立环境并用随机策略玩一个回合的代码。import gymimport numpy as npenv = gym.make("Blackjack-v0")ob原创 2021-08-16 14:57:34 · 1175 阅读 · 0 评论 -
21点扑克游戏的出牌策略的研究
21点是一个非常流行的扑克游戏,规则很简单,计算手中的牌,如果超过21点则输,不到21点则比谁的牌大。其中JQK都当成10点计算,A可以计算为1点或11点。在澳门的娱乐场里面,21点的规则如下,庄家先给每位玩家发一张牌以及给自己发一张牌,然后庄家继续给玩家发一张牌。这是玩家手里有两张牌,庄家只有一张牌。玩家需要根据自己的牌以及庄家的牌来作出决策,是继续要牌,还是停牌,如果两张牌一致还可以选择分牌。庄家根据玩家的决策来进行相应的操作,并且计算点数,如果玩家的牌超过21点则算玩家负。等所有玩家的操作都完成后原创 2021-08-08 12:37:39 · 58718 阅读 · 12 评论 -
Kaggle NLP Disaster Twitter竞赛的解决方案(基于TensorFlow 2.x实现)
Kaggle NLP Disaster Twitter竞赛的解决方案(基于TensorFlow 2.x实现)原创 2021-06-28 11:13:26 · 845 阅读 · 2 评论 -
用Python进行ASN.1的编解码
记录一下如何用Python来进行ASN.1的编解码。首先定义一个ASN.1的Schema,并保存为visioncontrol.asn文件VISIONUPLOAD DEFINITIONS AUTOMATIC TAGS::= BEGIN -- Message from the platformITSMessageVisionUpload ::= SEQUENCE { imageT...原创 2019-10-30 18:37:28 · 11520 阅读 · 1 评论