首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >修改Centos默认ssh端口22

修改Centos默认ssh端口22

原创
作者头像
子润先生
修改于 2021-06-24 02:14:07
修改于 2021-06-24 02:14:07
2.7K00
代码可运行
举报
运行总次数:0
代码可运行

修改Centos服务器ssh链接的默认端口22到任意端口,主要两个步骤:

1、添加端口;

2、开放防火墙

添加端口

修改端口的文件sshd_config,位于/etc/ssh/,编辑将其中的#Port 22前的#号去掉,然后在下面新增Port 你的端口,为什么这里先保留22,是要防止新的端口没有修改成功,还可以使用22端口进行连接。

开放防火墙

如果有firewall,那么运行指令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
firewall-cmd --zone=public --add-port=你的端口/tcp --permanent
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
firewall-cmd --reload

如果没有firewall,那么直接添加端口即可:

iptables -I INPUT -p tcp --dport 你的端口 -j ACCEPT

service iptables save

如果使用云服务器,记得还要在控制台开放对应的端口才行。

测试新端口

重启ssh服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl restart sshd.service

重启完之后使用新端口进行连接,如果正常连接,就将第一步中Port 22 前加上#即完成了Centos默认的ssh端口修改。最近打算做一个关于魂斗罗的强化学习训练,于是在网上找了一些怎么搭建Gym搭建的资料,现在做一个记录

魂斗罗的gym强化学习环境我已经搭建好了,并且已经打包发布到Pypi上了,点击这里有关项目的详细说明

整个gym_sample环境我已经上传到git,有兴趣的同学可以自己clone或者fork下来看看样例gym_sample

综述

Reinforcement Learning 已经经过了几十年的发展,发展壮大。近些年来,跟随着机器学习的浪潮开始发展壮大。多次战胜围棋冠军柯洁,以及在DOTA2、星际争霸等游戏中超凡表现,成为了众人追捧的明星。目前OpenAI作为世界NO.1的AI研究机构,构建的GYM,成为衡量强化学习算法的标准工具。通过OpenAI 的Gym直接构建自己的环境,从而利用目前现有的算法,直接求解模型。

包含大量自我理解,肯定存在不正确的地方,希望大家指正

RL and GYM

RL 考虑的是agent如何在一个环境中采取行动,以最大化一些累积奖励。 其中主要包含的是2个交互: agent对env作出动作 改变env

env 给出奖励和新的状态 给agent 其中Gym就是OpenAI所搭建的env。

具体的安装 和 介绍 主页很详细

Gym主页 以及 DOC

简单的安装方法如下

123

git clone https://github.com/openai/gymcd gympip install -e .

你也可是使用

1

pip install -e .[all]

来安装全部的Gym现成的环境

安装好Gym之后,可以在annaconda 的 env 下的 环境名称 文件夹下 python sitpackage 下。

在调用Gym的环境的时候可以利用:

1234567

import gymenv = gym.make('CartPole-v0')env.reset()for _ in range(1000): env.render() env.step(env.action_space.sample()) # take a random actionenv.close()

GYM的文件夹下 主要包含:

文件结构如下

envs 所有环境都保存在这个文件下 spaces 环境所定义的状态、动作空间 utils 环境中使用的一组常用实用程序 warppers 包装 init 读取时初始化 core 核心环境,直接链接到给定的环境 GYM 创建的环境主要在envs中,在这个里面可以找到常用的几个环境,比如说cart-pole, MountainCar等等。 自我构建的GYM环境都应该在放在envs下子文件夹中的一个py文件中的类。 例如:

1

gym\envs\classic_control\cartpole.py

Gym register

所有构建的环境都需要调用GYM库,然后再通过GYM库来调用所写的环境。所以需要现在GYM的内部构件一个内链接,指向自己构建的环境。 registry 主要在

envs下 init.py 文件下

123456

`register(` `id='CartPole-v1',` `entry_point='gym.envs.classic_control:CartPoleEnv',` `max_episode_steps=500,` `reward_threshold=475.0,` `)`

id 调用所构建的环境的名称 调用该环境的时候 所起的名字 ==注:名字包含一些特殊符号的时候,会报错==

entry_point 所在的位置 例如上述: 存在gym 文件夹下 classic_control文件夹下 算法所需的参数 2 在所在文件夹下 建立 init 文件,在下面调用

1

from gym.envs.classic_control.cartpole import CartPoleEnv

其中是cartpole是环境所存在的文件名字,CartPoleEnv是该文件下的类。

Gym 环境构建 自我构建的环境为一个类。主要包含:变量、函数

必须的变量 这个类包含如下两个变量值:state 和 action 对应的两个空间为observation _space 和 action _space 这两个空间必须要用 space 文件夹下的类在init中进行定义。 其中 state是一个 object 一般为一个np.array 包含多个状态指示值。

必须存在的函数 step 利用动作 环境给出的一下步动作 和 环境给出的奖励(核心)

这个函数 承担了最重要的功能,是所构建环境所实现功能的位置

输入为 动作 输出为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1. 下一个状态值 object
1. 反馈 float 值
1. done(终结标志) 布尔值 0 或者1
1. info(对调试有用的任何信息) any
1. reset    重置环境
1. 将状态设置为初始状态,返回: 状态值
  • render 在图形界面上作出反应 可以没有,但是必须存在
  • close 关闭图形界面
  • seed 随机种子 可以没有,但是必须存在

状态、动作空间的构建

主要分为离散空间和连续空间: 连续空间主要由spaces.Box定义,例如:

1

self.action_space = spaces.Box(low=-10, high=10, shape=(1,2))

上面定义了一个取值范围在(-10,10)的变量 维度为1,2

离散空间主要有

spaces.Discrete,例如

1

self.observation_space = spaces.Discrete(2)

上面定义了一个变量空间范围为[0,2) 之间的整数

spaces.MultiBinary, 例如

1

self.observation_space = spaces.MultiBinary(2)

上面定义了一个变量空间为0,1的2维整数变量

spaces.MultiBinary, 例如

1

self.observation_space = MultiDiscrete()

其他还可以定义一个元组或者字典 等变量空间。

下面仔细说明一下Gym的文结构

Gym的文件结构

12345

├── gym_test│   ├── env│   │   ├── env_guess_number.py│   │   ├── __init__.py│   └── __init__.py

init.py文件下你要包含如下代码

12345678

from gym.envs.registration import registerregister( id='MYGUESSNUMBER-v0', entry_point='gym_test.env.env_guess_number:guess_number',)# gym_test.env是相对于项目名字的gym的路径 # env_guess_number是env_guess_number.py# guess_number 是类名

如何使用自定义的Gym 环境?只需要这样

123

import gymimport gym_test.envenv = gym.make('MYGUESSNUMBER-v0')

您必须在PYTHONPATH中安装gym_sample目录或从父目录来使用您自定义的gym环境。

例如

12345678910

整个项目结构:├── gym_test│   ├── env│   │   ├── env.guess_number.py│   │   ├── __init__.py│   │   └── __pycache__│   │   └── __init__.cpython-37.pyc│   └── __init__.py├── README.md└── test.py


init.py 文件:

12345

from gym.envs.registration import registerregister( id='MYGUESSNUMBER-v0', entry_point='gym_test.env.env_guess_number:guess_number',)


env_guess_number.py文件:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

import gymfrom gym import spacesfrom gym.utils import seedingimport numpy as npclass guess_number(gym.Env): """Hotter Colder The goal of hotter colder is to guess closer to a randomly selected guess_number After each step the agent receives an observation of: 0 - No guess yet submitted (only after reset) 1 - Guess is lower than the target 2 - Guess is equal to the target 3 - Guess is higher than the target The rewards is calculated as: (min(action, self.guess_number) + self.range) / (max(action, self.guess_number) + self.range) Ideally an agent will be able to recognise the 'scent' of a higher reward and increase the rate in which is guesses in that direction until the reward reaches its maximum """ def __init__(self): self.range = 1000 # +/- value the randomly select guess_number can be between self.bounds = 2000 # Action space bounds self.action_space = spaces.Box(low=np.array([-self.bounds]), high=np.array([self.bounds])) self.observation_space = spaces.Discrete(4) self.guess_number = 0 self.guess_count = 0 self.guess_max = 200 self.observation = 0 self.seed() self.reset() def seed(self, seed=None): self.np_random, seed = seeding.np_random(seed) return [seed] def step(self, action): # assert self.action_space.contains(action) if action < self.guess_number: self.observation = 1 elif action == self.guess_number: self.observation = 2 elif action > self.guess_number: self.observation = 3 reward = ((min(action, self.guess_number) + self.bounds) / (max(action, self.guess_number) + self.bounds)) ** 2 self.guess_count += 1 done = self.guess_count >= self.guess_max return self.observation, reward, done, {"guess_number": self.guess_number, "guesses": self.guess_count} def reset(self): self.guess_number = self.np_random.uniform(-self.range, self.range) print('guess number = ', self.guess_number) self.guess_count = 0 self.observation = 0 return self.observation


test.py文件

123456789101112

import gymimport gym_test.envenv = gym.make('MYGUESSNUMBER-v0')obs = env.reset()for step in range(10000): action = env.action_space.sample() print(action) obs, reward, done, info = env.step(action)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
RL实践2——RL环境gym搭建
首先先来回顾一下强化学习问题中,环境Env 和 代理Agent 分别承担的角色和作用。
列夫托尔斯昊
2020/09/07
1.6K0
gym 搭建 RL 环境
gym调用 gym的调用遵从以下的顺序 env = gym.make('x') observation = env.reset() for i in range(time_steps): env.render() action = policy(observation) observation, reward, done, info = env.step(action) if done: …… break env.close() 例程 例程是一个简单的策略,杆左斜车左移,右斜则右
列夫托尔斯昊
2020/08/25
8200
OpenAI Gym 中级教程——环境定制与创建
OpenAI Gym 是一个强化学习算法测试平台,提供了许多标准化的环境供用户使用。然而,有时候我们需要定制自己的环境以适应特定的问题。本篇博客将介绍如何在 OpenAI Gym 中定制和创建环境,并提供详细的代码示例。
Echo_Wish
2024/01/31
1.5K0
OpenAI Gym 入门
这一部分参考官网提供的文档[1],对 Gym 的运作方式进行简单的介绍。Gym 是一个用于开发和比较强化学习算法的工具包,其对「代理」(agent)的结构不作要求,还可以和任意数值计算库兼容(如 Tensorflow 和 Pytorch)。Gym 提供了一系列用于交互的「环境」,这些环境共享统一的接口,以方便算法的编写。
口仆
2020/09/03
5.4K1
OpenAI Gym 入门
OpenAI Gym 中级教程----深入解析 Gym 代码和结构
OpenAI Gym 是一个用于开发和测试强化学习算法的工具包。在本篇博客中,我们将深入解析 Gym 的代码和结构,了解 Gym 是如何设计和实现的,并通过代码示例来说明关键概念。
Echo_Wish
2024/02/01
9340
OpenAI Gym高级教程——领域自适应强化学习
OpenAI Gym是一个为强化学习任务提供统一接口的开源平台,它允许研究人员和开发者使用标准化的环境进行实验和开发。本教程将介绍OpenAI Gym的高级用法,重点关注领域自适应强化学习,通过代码示例帮助您理解如何在不同环境中实现自适应性。
Echo_Wish
2024/02/08
4820
【编写环境一】遇到常见python函数处理方式
*Dict()**可用字典(dictionary)的形式储存空间特征,因此可以描述更多特性并用于构建更为复杂的空间
汀丶人工智能
2022/12/21
5050
RLLAB 入门
执行实验 我们对不同的实验模块使用面向对象抽象。进行实验,可以为环境、算法等等构造对应的对象,然后调用合适的训练方法。简单示例如examples/trpo_cartpole.py。代码如下: from rllab.algos.trpo import TRPO from rllab.baselines.linear_feature_baseline import LinearFeatureBaseline from rllab.envs.box2d.cartpole_env import CartpoleEn
用户1107453
2018/06/21
1.4K0
【二】gym初次入门一学就会---代码详细解析简明教程----平衡杆案例
注释:导入gym库,第2行创建CartPole-v0环境,并在第3行重置环境状态。在for循环中进行1000个时间步长(timestep)的控制,第5行刷新每个时间步长环境画面,第6行对当前环境状态采取一个随机动作(0或1),最后第7行循环结束后关闭仿真环境。 同时本地会渲染出一个窗口进行模拟如下图:
汀丶人工智能
2022/12/01
9590
【二】gym初次入门一学就会---代码详细解析简明教程----平衡杆案例
【AlphaGo Zero 核心技术-深度强化学习教程代码实战02】理解gym的建模思想
点击上方“专知”关注获取更多AI知识! 【导读】Google DeepMind在Nature上发表最新论文,介绍了迄今最强最新的版本AlphaGo Zero,不使用人类先验知识,使用纯强化学习,将价值网络和策略网络整合为一个架构,3天训练后就以100比0击败了上一版本的AlphaGo。Alpha Zero的背后核心技术是深度强化学习,为此,专知有幸邀请到叶强博士根据DeepMind AlphaGo的研究人员David Silver《深度强化学习》视频公开课进行创作的中文学习笔记,在专知发布推荐给大家!(关注
WZEARW
2018/04/09
9410
【AlphaGo Zero 核心技术-深度强化学习教程代码实战02】理解gym的建模思想
OpenAI Gym高级教程——解决实际问题与研究探索
OpenAI Gym是一个强化学习的标准工具包,可用于解决各种实际问题和进行研究探索。本教程将深入探讨如何利用OpenAI Gym解决实际问题,并进行相关研究。我们将使用代码示例来说明这些概念,帮助您更好地理解和应用。
Echo_Wish
2024/02/08
2930
强化学习如何让游戏角色“活”起来?
作为一名开发者,我对游戏中那些“智慧”的角色总是充满好奇和追求。无论是一个能够快速躲避玩家攻击的敌人,还是一个能和玩家互动的NPC,这背后的技术支持越来越倾向于人工智能,特别是强化学习(Reinforcement Learning,RL)。接下来,我将和大家聊聊强化学习在游戏开发中的实际应用,深入探讨如何借助这项技术赋予游戏更多的可能性,并用实战项目带你感受它的魅力。
Echo_Wish
2025/04/02
2490
强化学习如何让游戏角色“活”起来?
强化学习仿真环境搭建入门Getting Started with OpenAI gym
gym是用于开发和比较强化学习算法的工具包。它不对代理的结构做任何假设,并且与任何数字计算库(例如TensorFlow或Theano)兼容。
列夫托尔斯昊
2020/09/10
2.7K1
强化学习仿真环境搭建入门Getting Started with OpenAI gym
【AI模型】gym强化学习仿真平台配置与使用
OpenAI Gym 是一个用于开发和比较强化学习算法的开源工具包。它提供了一系列标准化的环境场景和 API 接口,使得研究人员和开发者能够轻松地创建、测试和评估各种强化学习算法。
DevFrank
2024/07/24
5320
使用Python实现深度学习模型:智能食品配送优化
这里推荐一篇实用的文章:《讲解pytorch mseloss bceloss 对比》,作者:【大盘鸡拌面】。
Echo_Wish
2024/11/16
2100
使用Python实现深度学习模型:智能食品配送优化
OpenAI Gym 中级教程——多智能体系统
在强化学习中,多智能体系统涉及到多个智能体相互作用的情况。在本篇博客中,我们将介绍如何在 OpenAI Gym 中构建和训练多智能体系统,并使用 Multi-Agent Deep Deterministic Policy Gradients(MADDPG)算法进行协同训练。
Echo_Wish
2024/02/03
4360
【四】gym搭建自己的环境,全网最详细版本,3分钟你就学会了!
我们下一步要做的就是确保自己创建的环境可以在gym里使用,那么我建议我们可以选择classic_control文件里的cartpole.py来作为我们的myenv.py,简单方便。
汀丶人工智能
2022/12/01
3.9K2
【四】gym搭建自己的环境,全网最详细版本,3分钟你就学会了!
深度强化学习之:PPO训练红白机1942
本公众号MyEncyclopedia定期发布AI,算法,工程类深度和前沿文章。欢迎关注,收藏和点赞。本系列将从原理和代码来循序渐进讲解强化深度学习。
godweiyang
2021/04/08
2.3K0
深度强化学习之:PPO训练红白机1942
【二】MADDPG多智能体算法实现(parl)【追逐游戏复现】
论文原文:Multi-AgentActor-CriticforMixedCooperative-CompetitiveEnvironments_单智能体-互联网文档类资源-CSDN下载
汀丶人工智能
2022/12/21
2.5K2
【二】MADDPG多智能体算法实现(parl)【追逐游戏复现】
【Reinforcement Learning】强化学习下的多级反馈队列(MFQ)算法
在强化学习(Reinforcement Learning, RL)相关背景下,多级反馈队列(Multilevel Feedback Queue, MFQ)算法可以作为调度问题的求解框架,用于优化资源分配和任务调度策略。在这种情况下,MFQ的概念和机制可以被调整为一种面向学习的形式,其中调度策略通过强化学习算法来动态优化。
不去幼儿园
2024/12/03
3120
【Reinforcement Learning】强化学习下的多级反馈队列(MFQ)算法
推荐阅读
相关推荐
RL实践2——RL环境gym搭建
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验