
机器学习
文章平均质量分 82
gzroy
长期任职500强通讯企业,担任了从产品售前到产品研发的各个关键岗位,对移动通讯技术,人工智能,软件开发等有深入的了解和从业经验。现为国内头部能源企业提供人工智能方面的咨询和规划等服务。个人研究领域广泛,对NLP,图像识别,游戏开发,3D制作,区块链,AR等领域均有研究。
展开
-
建设一个私有知识库问答网站
介绍了如何基于大模型构建私有知识库问答系统原创 2024-02-07 21:53:59 · 1090 阅读 · 0 评论 -
大模型强化学习之奖励模型的训练
详细讲述了如何根据InstructGPT论文来实现一个奖励模型原创 2023-09-02 15:19:48 · 4936 阅读 · 0 评论 -
Huggingface训练Transformer
用Huggingface来对大模型进行强化学习训练原创 2023-08-27 12:12:01 · 3896 阅读 · 0 评论 -
解读YOLO v7的代码(三)损失函数
对Yolov7的代码进行分析,研究其正样本生成机制以及损失函数原创 2023-02-09 08:58:12 · 12961 阅读 · 9 评论 -
解读YOLO v7的代码(二)训练数据的准备
在上一篇文章解读YOLO v7的代码(一)模型结构研究_gzroy的博客-优快云博客,我对Yolo v7的模型结构进行了分析,那么这次我们将进一步研读代码的关键部分,学习是如何对模型进行训练的。训练数据的准备是模型训练的关键,通常我们需要对图像数据做很多图像增广的处理,例如色彩的变换,形变,mixup, mosaic等等,通过对代码的训练数据处理部分的解读,可以更好的帮助我们理解当前主流的图像增广技术。原创 2022-12-30 22:45:01 · 3165 阅读 · 4 评论 -
解读YOLO v7的代码(一)模型结构研究
YOLO v7在今年7月份推出,模型的性能和速度相比以往版本有了很大的提升。我也想好好研究一下YOLO v7模型,因此把官方的代码库下载下来进行研究,尝试更好的理解这个模型。原创 2022-12-11 10:06:21 · 2913 阅读 · 0 评论 -
构建一个WIFI室内定位系统
室内定位可以应用在很多场景,由于受到室内环境的限制,GPS信号无法有效的接收,这时可以利用室内的WIFI热点提供的信号强度来进行辅助定位。通常在室内都会有很多的WIFI热点,我们可以把室内的区域划分为多个网格,在每一个网格测量所接收到的WIFI热点的信号强度,根据这些信息来建立一个WIFI信号指纹库,以后我们就可以通过比对指纹库,来确定在室内的位置了。原创 2022-11-15 20:32:13 · 4076 阅读 · 6 评论 -
基于Tensorflow实现一个Transformer翻译器
Transformer是谷歌在2017年的一篇论文"Attention is all you need"提出的一个seq2seq的模型架构,其创造性的提出了自注意力的思想,可以很好的表达序列中各个单词之间的相互注意力关系。这个模型在NLP领域取得了巨大的成功。此外这个模型架构在最近几年也在CV领域取得了令人瞩目的进展,在图像识别,目标检测等方面都达到或超过CNN模型的性能。因此Transformer可以说是人工智能领域最近最值得关注和学习的一个架构。目前有网上已经有很多文章详细解读了Transformer的原创 2022-04-27 22:25:29 · 7421 阅读 · 10 评论 -
强化学习的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 评论 -
用强化学习来玩Atari游戏(基于Tensorflow的深度Q学习模型)
在之前的博客中,我用TF-Agents实现了一个深度Q学习模型,并且对小车上山这个环境进行了训练。那么更进一步,我们可以看看能否用深度Q学习解决一些更复杂的问题,例如我们是否能训练一个模型,可以玩Atari的游戏,并取得比人类更好的成绩。在2015年,DeepMind发表的论文...原创 2022-01-04 07:45:36 · 5705 阅读 · 1 评论 -
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 评论 -
强化学习笔记(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 评论 -
Kaggle NLP Disaster Twitter竞赛的解决方案(基于TensorFlow 2.x实现)
Kaggle NLP Disaster Twitter竞赛的解决方案(基于TensorFlow 2.x实现)原创 2021-06-28 11:13:26 · 845 阅读 · 2 评论 -
用Tensorflow重现YOLO V4
YOLO是一个非常出名的目标检测的模型,兼具精度和性能,在工业界的应用非常广泛。我司也是运用了YOLO V3算法在智能制造领域,用于协助机械臂进行精确定位。不过可惜YOLO的原作者自从推出了V3算法之后,因为个人的理念,不希望计算机视觉技术用在军事等领域上,宣布不再从事这方面的研究。所幸Alexey Bochkovskiy一直持续研究YOLO算法,并在2020年发布了论文,提出了V4版本,作出了很多改进,融合了在目标检测,图像识别方面的很多研究成果,实现了进一步的提升。具体可以参阅相关的论文。这里我尝试原创 2021-05-01 18:04:47 · 1312 阅读 · 1 评论 -
用Kubeflow开发机器学习的Pipeline
Kubeflow项目使得在Kubernetes上部署机器学习的工作流更加容易,可移植并且可扩展。其中Pipeline是Kubeflow的一个核心模块,可以定义机器学习各个步骤的工作流,按照编排来进行执行。我在学习Kubeflow的过程中,发现网上关于Pipeline方面的介绍比较少,官网的例子则比较晦涩,而且大都是要结合GCP环境来部署的。对于我们个人学习来说,没有一个比较简明的教程。我研究了一下,实现了在个人电脑上部署基于Microk8s的Kubeflow,并以预测泰坦尼克号生还者这一个经典的机器学习原创 2021-03-29 22:00:17 · 1705 阅读 · 7 评论 -
nvidia-container-cli的没有检测到cuda相关设备的问题的解决
因为需要远程在服务器上运行3D的程序,在服务器上配置了Vglrun,但是之后发现在Microk8s里面的nvidia-device-plugin-daemonset这个Pod启动失败,用describe pod命令查看,发现有“nvidia-container-cli: initialization error: cuda error: no cuda-capable device is detected”这个错误,但是我用nvidia-smi,以及nvcc --version都是能正确显示驱动版本以及CU原创 2021-03-11 16:14:48 · 3900 阅读 · 0 评论 -
基于WSL2来运行NVIDIA CUDA
测试了一下在Win10上基于WSL2来运行Tensorflow。以下是安装步骤:1. 安装Win10的开发版(预览体验版)NVIDIA要求Win10的版本号是高于20145。我安装了win10专业版之后,在更新里面的预览体验计划没看到有任何显示,只能在Windows网站上手动下载预览版ISO文件,下载之后安装,我选择的是最新的20231版本2. 安装NVIDIA驱动下载NVIDIA的支持WSL的驱动,在https://developer.nvidia.com/cuda/wsl这个网页中下载,原创 2020-12-15 08:31:29 · 2601 阅读 · 0 评论 -
把Objects365制作为Tensorflow数据集
Objects365是北京旷视科技有限公司与北京智源人工智能研究院共同发布的全球最大的目标检测数据集。该数据集总共包含63万张图像,覆盖365个类别,高达1000万框数,具有规模大、质量高、泛化能力强的特点,远超Pascal VOC、COCO等传统数据集。数据集包括人、衣物、居室、浴室、厨房、办公、电器、交通、食物、水果、蔬菜、动物、运动、乐器14个大类,平均每一类有大约26个小类。与COCO数据集相比,Objects365具有5倍的图像数量、4倍的类别数量、以及10倍以上标注框数量。Objects365数原创 2020-06-25 16:12:43 · 940 阅读 · 2 评论 -
YOLO V3基于Tensorflow 2.0的完整实现
YOLO V3版本是一个强大和快速的物体检测模型,同时原理上也相对简单。我之前的博客中已经介绍了如何用Tensorflow来实现YOLO V1版本,之后我自己也用Tensorflow 1.X版本实现了YOLO V3,现在Tensorflow演进到了2.0版本,相比较1.X版本做了很大的改进,也更加易用了,因此我记录一下如何用Tensorflow 2.0版本来实现YOLO V3。网上能找到的很多Te...原创 2020-06-21 23:16:25 · 9018 阅读 · 11 评论 -
EfficientNet的解读与Tensorflow 2.0实现
Efficient Net是Google在2019年11月发表的一篇论文,系统的研究了如何在给定资源的条件下,如何平衡扩展网络的深度,广度以及图像的分辨率这三者的关系,来取得最好的图像识别精度。作者提出了一种新的方法来统一的扩展这几个维度,并在Resnet和Mobilenet的基础上验证了这种方法的有效性。作者首先用NAS(神经网络搜索)的方法来设计一个基准网络EfficientNet-B0,...原创 2020-04-07 14:02:57 · 5078 阅读 · 10 评论 -
Imagenet图像分类训练总结(基于Tensorflow 2.0实现)
最近看到AWS在18年年底的一篇论文(Bag of Tricks for Image Classification with Convolutional Neural Networks),是李沐和他的同事们总结的在图像分类中用到的一些技巧,可以提高分类的准确率,我也照着论文提到的技巧测试了一下,基于Tensorflow 2.1版本,搭建了一个Darknet53的模型(这也是大名鼎鼎的YOLOV3的...原创 2020-02-04 17:40:12 · 4882 阅读 · 6 评论 -
自动驾驶模拟工具CARLA的安装
最近研究了一下自动驾驶的模拟器Airsim和CARLA,准备搭建一个学习环境来学习自动驾驶的相关知识。Airsim最初是微软推出的一个模拟飞行的平台,之后增加了模拟驾驶的内容,这个平台据网上的资料是微软的一个较小的开源项目,因此也没有得到太大的重视,我看了一下平台好像也好久没有更新了,平台上的问题也没有什么人解答。我在Linux环境上下载的City Environment始终解压有问题,看到平...原创 2019-11-25 17:36:58 · 8041 阅读 · 0 评论 -
用Tensorflow 2.0实现Imagenet的训练
Tensorflow 2.0正式版10月份正式推出了,我也第一时间转向了这个新的版本,花了一些时间研究之后,我的结论是2.0版本确实是挺简便易用的,不过也有个缺点是封装的太好了,你无法很好的理解里面实现的机制,例如我尝试了2.0推荐的Keras搭建模型和训练的方法后,发现并没有之前1.x版本用低阶API直接训练收敛的快,而且似乎也达不到1.x的训练精度。例如采用了Batch Normalizati...原创 2019-10-16 22:47:51 · 2733 阅读 · 4 评论 -
基于Tensorflow的Resnet程序实现(CIFAR10准确率为91.5%)
在上一篇博文中我重写了Tensorflow中的CNN的实现,对于CIFAR10的测试集的准确率为85%左右。在这个实现中,用到了2个卷积层和2个全连接层。具体的模型架构如下: 为了进一步提高准确率,我们可以采用一些更先进的模型架构,其中一种很出名的架构就是RESNET,残差网络。这是Kaiming大神在2015年的论文"Deep Residual Learning...原创 2018-09-07 14:57:28 · 21667 阅读 · 84 评论 -
用Tensorflow来预处理Imagenet数据
[备注:我的另外一篇博文对这个Imagenet的数据处理过程有更新,请参考: https://blog.youkuaiyun.com/gzroy/article/details/85954329]最近想以Imagenet 2012图像分类大赛的数据来进行训练和测试,看看如何能利用这么大量的图像数据来完善卷积神经网络模型。之前做的基于Cifar10的数据量还是大小了,类别也不够多。Imagenet的数据总共...原创 2018-10-27 18:05:32 · 7826 阅读 · 8 评论 -
基于Tensorflow的Imagenet数据集的完整处理过程(包括物体标识框BBOX的处理)
最近比较忙,好久没更新博客了。上一篇博客是关于对Imagenet数据集进行预处理的,虽然能给Tensorflow的后续训练提供数据,但是我觉得还是有改进的空间,主要包括了两点:数据集中还提供了很多图片的bounding box,这个bounding box是人工进行的标注,准确的标注了图片中对应类别的物体的具体位置。在之前的数据集预处理中没有包括这一部分。即使我们现在做的模型是做类别判断,...原创 2019-01-06 22:50:22 · 10701 阅读 · 27 评论 -
用训练好的Alexnet模型测试迁移学习
最近用Tensorflow实现了一个Alexnet的模型,并在Imagenet的数据集上跑了一下训练,测试结果是能达到Top5接近71%的准确度。我想测试一下这个训练好的模型是否可以用于其他的图像分类的任务中,因此我选取了Tensorflow的迁移学习教程里面提到的Flowers分类任务的数据来做一个测试。首先是下载Flowers的数据,具体可以参见Tensorflow里面的介绍。下载后的数据...原创 2019-02-23 15:45:11 · 4609 阅读 · 8 评论 -
Tensorflow实现Alexnet对Imagenet的训练与评测
在上一篇博文中已经提到了如何对Imagenent 2012图像分类大赛的数据进行预处理。在此基础之上,我们可以搭建不同的神经网络来学习如何对Imagenet的数据进行训练和预测。Imagenet的数据集足够庞大,有120多万张图片和1000个类别,是CIFAR 10数据集无法比拟的,我觉得只有真正在Imagenet的数据集上训练出一个好的模型,才能证明在计算机视觉领域具备解决实际问...原创 2019-02-19 17:46:06 · 6349 阅读 · 18 评论 -
基于Imagenet训练的深度学习卷积网络调参心得
都说深度学习是炼丹术,调参是炼丹的核心技能。最近基于Imagenet的数据集,测试了一下不同的参数对于性能的影响,在此总结一下。首先搭建一个深度的卷积神经网络,网络结构参照YOLO论文中的对Imagenet预训练的网络,即一个20层的卷积网络再加上一个全连接层,具体的网络结构代码如下:import tensorflow as tfdef _conv(name, inputs, ker...原创 2019-03-26 22:17:02 · 2885 阅读 · 1 评论 -
从零开始用Tensorflow实现YOLO物体检测算法
一直对物体检测算法很感兴趣,记录一下自己用Tensorflow来重现YOLO论文的过程。这里的程序代码都是个人原创。我认为YOLO论文是一个开创性的研究成果,通过对图像划分多个网格,并对网格的物体进行预测,在速度上大大领先其他的物体检测算法,例如Regional CNN,Faster RCNN等。YOLO的论文写的不是太好读懂,特别是关于LOSS函数的计算这一部分。网上对于YOLO论文的解读有...原创 2019-04-21 23:07:32 · 10930 阅读 · 21 评论 -
基于Tensorflow对COCO目标检测数据进行预处理
COCO数据集是微软发布的一个大型图像数据集, 专为对象检测、分割、人体关键点检测、语义分割和字幕生成而设计。这个数据集还提供了Matlab, Python 和 Lua 的 API 接口. 该 API 接口可以提供完整的图像标签数据的加载, parsing 和可视化。下面记录一下我是如何利用COCO的数据集来制作目标检测的数据,以及对数据进行增广处理的。首先我们去COCO的官网http://...原创 2019-07-07 21:26:19 · 5036 阅读 · 1 评论 -
Tensorflow Estimator实现ImageNet的图像识别
Tensorflow从1.3版本开始引入了Estimator,并且随着版本的演进越来越加大了对这种高级API编程方式的支持,而且在Estimator上可以很方便的实现对多GPU训练的支持。在我之前的博客中,我都是使用的低级API来进行模型的构建和训练,这个好处是更加灵活,可以了解模型的底层的细节,但是缺点是代码量较大,也比较繁琐,很多细节都需要自己去实现。为此我尝试了在最新的TensorFlow1...原创 2019-08-09 12:37:09 · 975 阅读 · 0 评论 -
如何在没有配备显示器的深度学习服务器上调整GPU的风扇速度
我搭建的深度学习的服务器中,配置了1块NVIDIA 1070Ti和1块2080Ti的显卡,系统是Ubuntu 16.04,通过NVIDIA-SMI命令查看,其中的1070Ti的风扇转速为0, 另一块的转速平时是26%,即使在GPU温度很高,例如到80度时,风扇转速仍然不超过75%,导致在做深度学习训练时,GPU温度一直降不下来。网上有很多资料关于如何用nvidia-settings来设置风扇转...原创 2019-10-03 16:08:17 · 788 阅读 · 0 评论