【RLchina2022强化学习暑期课】理论课一-机器学习和深度学习基础
参考资料
http://rlchina.org/topic/492
Classical Machine Learning
Definition by Tom Mitchell(1998):
Machine Learning is the study of algorithms that
improve their performance P
at some tasks T
with experience E
A well-defined learning task is given by <P,T,E>
Programming : 1 + 2 = ?
Machine Learning: 1 + x = 3 ,x =?
Area
Recommender system
Computer vision
E-commerce
Space exploration
Robotics
Information extraction
Social networks
Debugging software
why we need machine learning
识别手写数字
...
Python字符动画制作(PIL/FFmpeg)
参考
奇乐编程学院
https://ffmpeg.org/
准备
安装ffmpeg
准备python
安装PIL
安装numpy
代码
from PIL import Image, ImageDraw, ImageFontimport argparseimport numpy as npsample_rate = 0.4def ascii_art(file): im = Image.open(file) # Compute letter aspect ratio font = ImageFont.load_default() # font = ImageFont.truetype("SourceCodePro-Bold.ttf", size=12) aspect_ratio = font.getsize("x")[0] / font.getsize("x")[1] new_im_size = np.array( [im.size[0] * sample_rate, im.size[1] * sample_r ...
理解Socket技术
参考
https://www.yuque.com/qingkongxiaguang/javaweb/lmkyt6
计算机网络基础
IP和端口号
端口号 0- 65535
IPV4 和 IPV6
TCP 三次握手,四次挥手
UDP 无连接协议,不会建立可靠传输
Socket技术
服务端与客户端建立连接
//服务端import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class Server { public static void main(String[] args) { try(ServerSocket server = new ServerSocket(8080)){ //将服务端创建在端口8080上 System.out.println("正在等待客户端连接..."); while (true){ //无限循环等待客户端连接 ...
OpenCV(Pyhton)
参考
https://opencv.apachecn.org/#/docs/4.0.0/3.1-tutorial_py_basic_ops
环境
我使用的是annaconda的环境,自行搜索
要先熟悉了numpy之后再学习OpenCV
图像导入
# 读取图像# 用灰度模式加载图像newImg = cv.imread('./img/learn2.png', 0) # 即使图像路径错误,它也不会抛出任何错误,但是打印 img会给你Nonecv.imshow('image', newImg)cv.waitKey(0) # 是一个键盘绑定函数,它的参数是以毫秒为单位的时间。如果你在这段时间内按下任意键,程序将继续。cv.destroyAllWindows() # 简单的销毁我们创建的所有窗口# 如果你想销毁任意指定窗口,应该使用函数 cv.destroyWindow() 参数是确切的窗口名。# 或者cv.namedWindow('image', cv.WINDOW_NORMAL) # 窗口可以调整大小cv.imshow('image', newImg)cv.wai ...
Python的OS库
参考
https://docs.python.org/zh-cn/3/library/os.html 这里面写了很详细的系统操作ku
简单介绍
本模块提供了一种使用与操作系统相关的功能的便捷式途径。
.System()
在子外壳程序中执行此命令(一个字符串)。 这是通过调用标准 C 函数 system() 来实现的,并受到同样的限制。
#自动安装脚本import oslibs = {"numpy", "matplotlib", "pillow", "sklearn", "requests", "jieba", "beautifulsoup4", "wheel", "networkx", "sympy", "pyinstaller", "django", "flask", "werbot", "pyQt5", "pandas", "pyopengl", "pypdf2", "docopt", "pygame"}try: for lib in libs: os.system("pip install " + lib) print("Suc ...
【项目】Python脚本玩游戏
参考
利用Python开发游戏脚本,就凭一个设定,玩家直接起飞!https://zhuanlan.zhihu.com/p/272547680
Tesseract OCR V5.0安装教程(Windows)https://www.jianshu.com/p/f7cb0b3f337a
adb下载安装及使用 https://blog.csdn.net/weixin_43927138/article/details/90477966
最前面是小的尝试,可以直接跳到第四个
准备工作
安卓设备一个:模拟器或者真机都可以。我用的夜神
原作者用的公主链接做,但是我用夜神需要将设置->基础->关闭root,才可以正常打开
安装ADB,并添加到系统的PATH里:adb是用来
安装tesseract-ocr,并添加到系统的PATH里:帮助我们实现简单的字符识别
安装python3.7以上的版本
python库
pip install pillow pytesseract opencv-python
使用adb获取安卓设备
在windows PowerShell中 ...
深度学习入门
参考
莫烦python
官方文档 https://tensorflow.google.cn/guide/variable
科普
张量 https://blog.csdn.net/qq_31821675/article/details/79188449
cuda安装
什么是cuda
CUDA ®是 NVIDIA 发明的并行计算平台和编程模型。它通过利用图形处理单元 (GPU) 的强大功能来显着提高计算性能。
CUDA 的开发考虑了几个设计目标:
为标准编程语言(如 C)提供一小组扩展,可以直接实现并行算法。使用 CUDA C/C+++,程序员可以专注于算法的并行化任务,而不是花时间在它们的实现上。
支持应用程序同时使用 CPU 和 GPU 的异构计算。应用程序的串行部分在 CPU 上运行,并行部分卸载到 GPU。因此,CUDA 可以逐步应用于现有应用程序。CPU 和 GPU 被视为具有自己的内存空间的独立设备。此配置还允许在 CPU 和 GPU 上同时进行计算,而不会争用内存资源。
支持 CUDA 的 GPU 拥有数百个内核,可以共同运行数千个计算线程。这些内 ...
PIL入门
参考
http://c.biancheng.net/pillow/image-objects.html
做简单的图像处理
显示图片
from PIL import Imageim = Image.open("test.png")im.show()
创建图片
#使用颜色的十六进制格式im_1=Image.new(mode='RGB',(260,100),color="#ff0000")im_1.show()
图像处理
ROS编程深入理解(Python)
参考
官方的wiki http://wiki.ros.org/cn/ROS/Tutorials/
中文ROS教程社区 https://www.ncnynl.com/
之前没有详细看官方的wiki,而是选择看网上的课程,现在看来是错误的,不过也是一个学习的过程。
ROS构建工作空间
这部分因为之前的ROS编程已经很详细了,这里记录一些简单的理解
整体围绕软件包开发,也就是pkg
创建软件包有很多细节,主要是处理依赖的问题,还有保证自己的软件包的完整性,我理解这是一种规范,这样别人使用的时候也很方便。
构建工作空间可以自定义名称,每次修改需要编译
记得source
当你发现你没地方输命令的时候,开新的终端 Ctrl + alt + T 快捷键
ROS基本命令
节点
$ roscore
这是最核心的命令,相当于启动一台机器,深入理解就是,启动rosmaster,这个是方便节点之间通信的,详细请看我的ROS通信那篇文章。
$ rosnode list
这个命令是用来查看当前启动的节点
$ rosnode info /节点名
这个命令当然是用来看节点一些服务、配置等
$ ro ...
强化学习入门
准备
下面是我搜集的一些学习资料,在之后的学习中,我将继续完善和补充,一起成长!
数学基础
高等数学- 宋浩
概率论与数理统计- 孔祥仁
理论基础
王树森深度强化学习课程
《强化学习导论》
《神经网络与深度学习》
编程基础
python基础、面向对象
numpy、pandas
tkinter、PyQt5
莫烦强化学习
Python深度学习
综合
动手强化学习 https://hrl.boyuai.com/
个人经验
我是在学习了基本的数学知识和python基础之后,看了王树森教授的课程的第一节,对强化学习形成了初步的概念
我做了一个PyQt 的python项目,相当于搭建了一个agent的环境,也就是一个地图模拟程序
在之后接触了莫烦的教程,从numpy、到pandas,再到强化学习的课程,去实现一个Q-learning的算法,主要还是要项目驱动,如果单纯的无目的学习是很难坚持下去的。
参考文章
强化学习中的奇怪概念(一)——On-policy与off-policy
基本知识
agent 表示动作主体,或者表示执行动作的个体
stat ...