- 博客(38)
- 收藏
- 关注
原创 DWA局部路径规划算法
动态窗口法是一种算法,起源于对移动机器人在复杂环境中实时避障的需求。该算法由F. D. Proentzen和O. Khatib提出,后经过不断优化,已成为移动机器人领域中的标准算法之一。
2024-08-19 11:01:55
760
1
原创 Docker下运行GUI应用
Docker本身的工作模式是命令行的,因为主要的使用场景可能是做服务器后端方面的比较多。但有时候我们会有在docker容器里运行一些图形界面的软件,比如使用ROS时候需要gazebo和rviz的可视化这时候就需要使用图形界面进行结果的显示。下面就做一些自己找到的一些解决方案。
2023-02-16 11:21:46
2266
2
原创 强化学习2(价值学习)
我们知道根据Q∗Q*Q∗函数能够反映每一个动作的好坏,只要有了该函数,我们就能根据该函数来控制agent运动,每一个时刻智能体只要选出得分最高的动作执行就可以,但是实际是我们并没有Q∗Q^*Q∗函数,所以价值学习的目的就是学习一个Q∗Q^*Q∗函数。所以我们使用DQN来近似一个Q∗Q^*Q∗函数,然后根据TD算法来跟新迭代DQN模型。
2022-11-07 22:01:23
366
原创 强化学习1(基本概念)
一个状态可以想象成游戏中的一帧画面,整个游戏就是由多帧画面组成的。值的注意的是,t时刻的画面可能有多种,它与智能体选择的动作有关,因此,状态具有随机性。我们将t时刻的状态记作St。动作是智能体与环境交互时所发出的,好的动作能够使智能体适应环境,从而获取较高的奖励,而坏的动作可能使得智能体在游戏局中失败例如在上面的图片中,这张图片就是当前状态,马里奥做成的动作就是action。所以有三种动作:向上、向左和向右。
2022-11-06 16:39:26
615
原创 C++回调函数
首先看一下回调函数的官方解释:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。这段解释比较官方。个人可以简单的理解为:**一个通过函数指针调用的函数。
2022-11-05 15:49:41
5981
原创 Lambad表达式
Lambda还有许多种用处,通常也可以作为STL种算法的参数传入,用于处理一些逻辑较为简单的函数结构,例如比较大小等。});这个例子就是用sort算法,并利用Lambda进行排序。
2022-11-04 20:08:20
86
原创 solidity基础
solidity是一门面向合约的、为实现智能合约而创建的高级编程语言,能在以太坊虚拟机(EVM)上运行。它是一门静态语言。内含的类型除了常见编程语言中的标准类型,还包括address等以太坊独有的类型。以太坊不仅是一种加密数字货币,它更是功能完备的智能合约平台,solidity就是用来开发以太坊上的智能合约的原生开发语言。solidity最早发布于2015年,它是第一种图灵完备的智能合约专用开发语言。目前除了以太坊之外,在其他区块链中也逐渐开始支持solidity,例如hyperledger fabric、
2022-10-24 21:56:17
592
原创 Java中深浅拷贝的简单介绍
复制对象的所有基本数据类型的成员变量值。为所有引用数据类型的成员变量申请存储空间,并复制每个引用数据类型成员变量所引用的对象,直到该对象可达的所有对象。也就是说,对象进行深拷贝要对整个对象(包括对象的引用类型)进行拷贝。深拷贝实现方式 1:重写 clone 方法来实现深拷贝。深拷贝实现方式 2:通过对象序列化实现深拷贝(推荐)首先是第一种方式,重写clone方法来进行深拷贝。//引用类型 public DeepProtoType() {
2022-10-15 21:18:13
121
原创 C语言动态开辟多维数组空间
在一些特定的程序中,我们常常无法预测数组的大小。如果我们自己将值分配给数组,那么它在执行期间无法更改。这会产生问题,要么数组的内存变低,要么数组占用更少的空间浪费内存,因此为避免这种情况,建议动态分配数组。
2022-09-06 12:56:00
2393
1
原创 Vue-使用事件总线进行组件间的消息传递
使用事件总线之前首先再main.js中进行总线的挂载,然后,在需要接收消息的组件中执行this.$bus.$on()进行事件的绑定,在发送消息的组件中执行this.$bus.$emit()进行事件的分发,就可以完成总线中的消息传递。...
2022-07-21 11:04:30
675
原创 RNN基础回顾(3)(GRU)
GRU (Gated Recurrent Unit)也称门控循环单元结构,它也是传统RNN的变体,同LSTM一样能够有效捕捉长序列之间的语义关联缓解、梯度消失或爆炸现象。同时它的结构和计算要比LSTM更简单它的核心结构可以分为两个部分去解析:更新门和重置门。使用GRU能够达到相当的效果,并且相比之下更容易进行训练,能够很大程度上提高训练效率,因此很多时候会更倾向于使用GRU。一、总体结构如图是一个GRU单元的内部构造,图中的和分别表示更新门和重置门。GRU将LSTM中的输入门和遗忘门合二..
2022-05-09 16:04:43
1743
原创 RNN基础回顾(2)(LSTM)
上一篇博客中已经回顾了最基础的RNN结构,还有RNN的输入层、输出层、隐藏层等相关概念,一般的RNN模型是一种将以往学习的结果应用到当前学习的模型,但是这种一般的RNN存在着许多的弊端。举个例子,如果我们要预测“the clouds are in the sky”的最后一个单词,因为只在这一个句子的语境中进行预测,那么将很容易地预测出是这个单词是sky。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的,RNN 可以学会使用先前的信息。标准的RNN结构中只有一个神经元,一个tanh层进行重复的..
2022-05-03 15:09:59
798
原创 RNN基础回顾(1)
RNN循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络。一、网络架构首先回顾一下传统的卷积神经网络的架构,如下图所示,是LeNet网络结构,输入一张28x28的图像,经过多层卷积处理,然后由三层的全连接层输出结果,从图像可以看出,传统的卷积神经网络是一个不断“向前”的神经网络,图片数据不断向前传播,然后误差反向优化网络。这是由于,卷积神经网
2022-04-30 16:35:35
2762
原创 git on centos(测试修改合并代码)
测试使用阿里云服务器的centos7.6安装git,并进行代码的提交,通过本地widows电脑的另一个GitHub账号对提交的代码进行合并。一、安装git直接使用yum命令进行安装,该命令可以git及其依赖包。yum install git输入git --version指令,可以查看版本号,安装成功。二、配置git全局配置自己的用户名和邮箱git config --global user.name "username" git config --global use
2022-04-27 17:34:33
151
原创 AJAX请求
Ajax即AsynchronousJavascriptAndXML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,括:HTML或XHTML, CSS,JS,DOM, XMLX, 以及最重要的XMLHttpRequest。[3]使用Ajax技术网页应用能够快速地将增量更新呈现在界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。为了快速搭建后端环境,后端采用了N...
2022-04-24 11:30:01
140
原创 springboot整合redis
配置类相关代码:package com.it.config;import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.annotation.PropertyAccessor;import org.springframework.cache.CacheManager;import o
2022-03-21 20:35:46
56
原创 cv2.imread和Image.open的差异
opencv的库cv2和PIL中的Image都可以用于读取和保存图片import cv2from PIL import Imageimport matplotlib.pyplot as pltimg1=cv2.imread('dog.jpg')img2=Image.open('dog.jpg')此时读取同一张图片,img1是一个ndarray的数组,img2是PIL.JpegImagePlugin.JpegImageFile的对象,可以使用np.array(img2)转换为一个ndarr
2022-01-27 22:24:45
4214
原创 ResNet18复现
ResNet18的网络架构图首先将网络分为四层(layers),每层有两个模块组成,除了第一层是两个普通的残差块组成,其它三层有一个普通的残差块和下采样的卷积块组成。输入图像为3x224x224格式,经过卷积池化后为64x112x112格式进入主网络架构。代码如下:import torchfrom torch import nnfrom torch.nn import functional as Fclass BasicBlock(nn.Module): def __ini
2022-01-27 14:02:29
3530
原创 SSM+jquery+ajax进行文件上传
在用Java做后端开发时文件上传时候涉及许多输入输出File流的操作,相比python开发的过程繁琐,有些工具类可以简化操作,下面简单写一下文件上传的操作。首先准备工具类由于会有重名的文件进行上传,使用UUID对上传的文件重命名,但文件格式不能改变:import java.util.UUID;public class FileNameUtil { //根据UUID生成文件名 public static String getUUIDFileName() {...
2022-01-24 17:36:41
1111
原创 Docker安装(Centos7.6)
在阿里云服务器上安装Docker,参考官方的文档进行安装(Install Docker Engine on CentOS | Docker Documentation)。一、卸载旧版本sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docke..
2022-01-22 23:30:14
202
原创 Mybatis中多对一的处理
Mybatis框架中,如果bean对象中成员变量名称和数据库中的字段一一对应则可以完成自动注入,如果Java Bean对象中有复杂的数据类型(自定义对象类型),则需要在xml文件中配置相关的resultMap进行映射。例如一位老师会对应多名学生(先只考虑多对一的关系)数据库中的student表和teacher表写入简单的数据如下:这两个表之间通过tid进行关联,两个bean对象的定义如下:public class Student { private int id; privat
2022-01-20 22:57:24
1148
原创 关于Java中反射的一点思考
1、什么是反射什么是反射?先看看正常的Java代码如何在执行的,可以简单的分为三个阶段:首先是Source源代码阶段:比如Person.java类经过javac编译后成为Person.class,.class文件通过类加载器(ClassLoader)生Class类对象到第二个阶段Class类对象阶段,Class类对象中有成员变量Field[] fields,构造方法Constructor[] cons,成员方法Method[] methods;最后创建对象到第三个阶段Runtime运行时阶段。
2022-01-18 22:40:42
168
原创 centos7.6下安装MySql8
首先进入/opt目录下,在这个目录里面安装:利用阿里云的镜像进行下载(没有安装wget的可以先使用yum install wget安装)wget https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.27-el7-x86_64.tar.gz然后可以检查一下以前是否安装过MySQL:(如果有的话自行卸载)rpm -qa | grep mysql下一步安装相关依赖包:yum install libaio下一步在opt目录下
2021-11-13 16:16:37
476
1
原创 JDBC插入数据时java.util.Date与java.sql.Date转换的问题
Java使用JDBC连接数据库进行数据插入的时候,会有数据类型的不同,如果要插入日期类型的数据首先要进行格式的转换,例如:Connection con=DriverManager.getConnection(url,user,password);;PreparedStatement pstmt=con.prepareStatement("insert into student(stu_id,name,address,birthday) values(?,?,?,?);这里stu_id,nam..
2021-11-13 11:35:38
1042
原创 Mybatis配置
Mybatis是一个是一个基于Java的持久层框架,MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。 我是用IDEA来创建maven工程配置Mybatis。首先导入项目的相关依赖<dependencies> <dependen...
2021-10-29 10:06:47
98
原创 sklearn决策树可视化
sklearn是一个机器学习的python库,其中可以很方便的进行决策树算法的进行,但是没有内置的api可以进行决策树的可视化操作,可以考虑用另一个第三方库graphviz进行可视化的操作,使用pip install graphviz安装库,在graphviz官网上下载安装包进行安装(http://www.graphviz.org/)并配置环境变量。决策树算法的实现:from sklearn.datasets import load_irisfrom sklearn.model_selectio
2021-09-08 15:29:02
375
原创 使用virtualenv创建虚拟环境
使用python写一个新的项目时,通常要使用一个新的环境(旧的环境可能会存在包的冲突),虽然重新配置旧环境也可以,但较为麻烦。最常用的方法是使用Anaconda创建新环境,考虑到我最开始使用的python没有使用Anaconda,我就使用了python 的第三方库virtualenv来配置新的环境(使用的是win10 64位环境)。首先用命令行进入安装虚拟环境的目录,使用如下命令就可以创建一个新的python环境:virtualenv env_test环境的名字为env_test,所在目录..
2021-08-25 20:09:49
504
原创 matplotlib图像问题
python在jupyter notebook和jupyter lab中使用matplotlib时候默认情况下会出现图像不清晰的问题加入以下代码可以解决这样的问题import matplotlib.pyplot as plt%matplotlib inline%config InlineBackend.figure_format='svg'若想要导出的图像清晰度提高可以加入以下代码:plt.savefig('image_name.png',dpi=500,bbox_inches=..
2021-08-24 16:51:49
141
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人