在国内使用github最近一直都是20kb,太折腾人了. 想到使用代理加速git
1 | #use proxy |
在国内使用github最近一直都是20kb,太折腾人了. 想到使用代理加速git
1 | #use proxy |
最近新建了一个vue的小项目,需要再服务器上测试,但是又没有必要配置CI。
所以在
A pure javascript secure copy program based on ssh2.scp2 is greatly powered by ssh2, implemented the scp in a sftp way.It is written in pure javascript, and should work on every OS, even Windows. Nodejs (v0.8.7 or newer) is required to make it work.
npm install scp2 --save
在项目根目录新建deploy.js文件
1 | // ./deploy.js |
也可以在package.json中建立新的脚本"deploy": "npm run build & node deploy.js"
就可以使用npm run deploy将工程build并上传
code-server is vscode running on a remote server, accessibale throught the browser.
code-server就是一个可以搭建在服务器上的远程vscode,并且我们可以直接用browser直接访问,本来的初衷是为了写blog可以直接在浏览器中写,而不是每次必须打开vscode,后来发现code-server也可以用在ipad上,兼容性还不错
参考自:https://github.com/cdr/code-server
使用docker搭建code-server的优势是搭建速度比较快,但是没有办法使用宿主机的环境和配置,如果需要配置需要从头开始配置。
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。使用docker compose我们的docker命令可以复用,也可以构成更高级的配置文件。
新建文件夹mkdir /usr/local/code-server
可以在任意位置,用来存放建立的新工程,打开新建的文件夹cd /usr/local/code-server
,新建并编辑docker-composetouch docker-compose.yml && vim docker-compose.yml
1 | version: "3" |
1 | #在cocker-compose.yml目录下 |
1 | vim /etc/modprobe.d/blacklist.conf |
1 | #安装必要 |
下载Anaconda, 如果在国内的话建议使用国内的mirror下载, https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 清华镜像源的镜像,找到对应的版本进行下载.
1 | wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Linux-x86_64.sh |
按照提示进行安装
生效环境变量
1 | source ~/.bashrc |
换清华镜像源
1 | conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ |
创建一个name为pytorh python版本为3.7的虚拟环境。
1 | conda create -n pytorch python=3.7 |
配置好conda环境后就,pytorch就可以顺利安装了。
此处不能按照官方进行安装conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
1 | #需要去掉-c torch后,可以从清华镜像快速下载。 |
如果有更好的思路希望大佬们可以提出
要处理的图片
灰度
处理后二值化
$$ Xcos(\theta_1)+Ysin(\theta_1) = r $$
$$ Xcos(\theta_2)+Ysin(\theta_2) = r$$
1 | a = np.array([ |
-最后的中心点也就是求平均值。标记出中心点。
1 | import cv2 |
这是一个走悬崖的问题。强化学习中的主体从S出发走到G处一个回合结束,除了在边缘以外都有上下左右四个行动,如果主体走入悬崖区域,回报为-100,走入中间三个圆圈中的任一个,会得到-1的奖励,走入其他所有的位置,回报都为-5。
这是一个经典的Q-learing问题走悬崖的问题,也就是让我们选择的最大利益的路径,可以将图片转化为reward矩阵
1 | [[ -5. -5. -5. -5. -5. -5. -5. -5. -5. -5. -5. -5.] |
我们的目标就是让agent从s(3,0)到达g(3,11)寻找之间利益最大化的路径,学习最优的策略。
在Q-learing算法中有两个特别重要的术语:状态(state)
,行为(action)
,在我们这个题目中,state对应的就是我们的agent在悬崖地图中所处的位置,action也就是agent下一步的活动,我的设定是(0, 1 ,2,3,4)对应的为(原地不动,上,下,左,右),需要注意的事我们的next action是随机的但是也是取决于目前的状态(current state)。
我们的核心为Q-learing的转移规则(transition rule)
,我们依靠这个规则去不断地学习,并把agent学习的经验都储存在Q-stable,并不断迭代去不断地积累经验,最后到达我们设定的目标,这样一个不断试错,学习的过程,最后到达目标的过程为一个episode
$$Q(s,a) = R(s,a)+\gamma *max \lbrace Q(\tilde{s},\tilde{a}) \rbrace $$
其中$s,a$表示现在状态的state和action,$\tilde{s},\tilde{a}$表示下一个状态的state和action,学习参数为$0<\gamma<1$,越接近1代表约考虑远期结果。
在Q-table初始化时由于agent对于周围的环境一无所知,所以初始化为零矩阵。
参考以下伪代码:
具体程序如见附录
程序的关键点:
valid_action(self, current_state)
实现发现的问题:题目中的目标点为G 的目标值也是为-1,但是程序会走到这个一步但是函数没有收敛到此处,而且由于在奖励点收益大,所以最后的agent会收敛到奖励点处,在三个奖励点处来回移动。所有我将最后的目标点G的值改为了100,函数可以收敛到此处。后来也看到文献中的吸收目标
最后到Q-tabel矩阵由于太大放到附录查看,但是同时为了更加直观的看到运行结果,
编写了动态绘图的程序 画出了所有的路径。如果需要查看动态图片请运行程序最终结果如下图:
从图中可以看到agent避过了所有的悬崖,而且收获了所有的奖励最终到达目标。
程序:
1 | #-*- utf-8 -*- |
Q-table矩阵最终结果:
1 | [[[ -14.84480118 0. -14.06400168 0. -14.06400168] |
1 | vim /etc/crontab |
重启crond
systemctl restart crond
1 | yum install php7.1w-init |
需要注意的是php应该对应自已的版本,nginx对应的是自己的服务器
1 | vim /etc/php.d/opcache.ini |
/etc/php-fpm.d/www.conf
1 | chown nginx:nginx /var/lib/php/session/ |
实在没办法的话,可以试试
1 | chmod -R 777 /var/lib/php/session/ |
最后一定要记得清除浏览器的cookies