![](https://img-blog.csdnimg.cn/20201010183229500.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Python程序设计
文章平均质量分 76
本文将记录作者学习Python的一些技巧和易错点。
魔法攻城狮MRL
技术到位,功夫到家
展开
-
C++程序设计之编译性语言和解释性语言的
本文简单介绍了编译性语言、解释性语言和半编译半解释语言,提到了各自的优缺点。需要说明的是,这些优缺点并不是不可以改变的,一门语言的优点或缺点并不完全取决于其先天的设计,也取决于后天的生态建设,例如C#也是半编译半解释语言,但是其跨平台能力和Java不可同日耳语。Python作为跨平台能力强的语言,不仅因为它是解释性语言,而且它的学习成本低,开源生态好,很多程序员贡献了十分丰富的代码库。原创 2022-04-29 15:54:57 · 963 阅读 · 0 评论 -
【优化调参】提升GPU和CPU的利用率
在深度学习项目中,调节batch_size和num_workers参数来充分发挥GPU和CPU的性能原创 2021-11-27 00:18:27 · 17555 阅读 · 1 评论 -
【Python小游戏】用AI玩Python小游戏FlappyBird【源码】
提示:如果本文对您有帮助,欢迎点赞支持!文章目录目录前言一、Flappy Bird是什么?二、本项目简介1.实现效果2.游戏逻辑的相关链接(1)游戏逻辑部分(2)AI训练逻辑部分说明前言本项目是作者实现用AI玩Python小游戏中的游戏逻辑部分,暂不会牵扯到相关的AI逻辑,当然为了便于AI训练,该游戏进行了一定的简化处理,没有添加开始游戏等其他界面。一、Flappy Bird是什么?Flappy Bird是一款玩家要在游戏中尽可能长地维持小鸟生命的原创 2021-05-02 22:29:15 · 8266 阅读 · 25 评论 -
【FlappyBird小游戏】编写游戏逻辑(一)——基本游戏主循环【源码】
提示:如果本文对您有帮助,欢迎点赞支持!文章目录前言1、创建游戏窗口2、添加循环频率和退出事件2、创建渲染图片3、让地面图片实现移动效果前言在Python程序中编写桌面小游戏大都使用的是第三方库pygame。导入该库的相关设置:import sysimport pygame1、创建游戏窗口创建一个指定大小的游戏窗口FPS = 30 # 刷新频率SCREENWIDTH = 288 # 屏幕宽度SCREENHEIGHT = 512 # 屏幕高度原创 2021-05-02 21:51:41 · 2426 阅读 · 6 评论 -
【FlappyBird小游戏】编写游戏逻辑(二)——读取游戏资源【源码】
提示:如果本文对您有帮助,欢迎点赞支持!文章目录1、读取图片资源2、读取音效资源3、读取游戏资源4、修改游戏主循环(1)游戏初始化(2)游戏帧渲染在上一篇中,我们已经可以读取图片资源,但是在该游戏中的图片资源非常多,另外还有音效资源,所以这里我们抽取相应方法来统一读取上述游戏资源。1、读取图片资源我们要读取的资源是具有透明度的.png文件:我们将读取的图片文件资源放在一个字典中,如下图:SPRITES_PATH = 'assets/sprites/' #原创 2021-05-02 21:56:15 · 1237 阅读 · 3 评论 -
【FlappyBird小游戏】编写游戏逻辑(三)——添加Bird和Pipe【源码】
提示:如果本文对您有帮助,欢迎点赞支持!文章目录前言1、添加Pipe对象(1)初始化(2)重置(3)帧渲染(4)实现效果2、添加Bird对象(1)初始化(2)重置(3)帧渲染(4)实现效果前言在之前的代码中,我们已经实现了一个用Pygame搭建FlappyBird的基本框架,其最终生成效果如下:现在我们添加继续添加Bird和Pipe对象,让该游戏看起来更加完整。1、添加Pipe对象(1)初始化在Flappy_Bird_Env的ini原创 2021-05-02 22:00:54 · 1140 阅读 · 8 评论 -
【FlappyBird小游戏】编写游戏逻辑(四)——控制Bird和碰撞检测【源码】
提示:如果本文对您有帮助,欢迎点赞支持!文章目录1、玩家控制Bird(1)更改游戏主循环(2)更改游戏帧渲染2、Bird的碰撞检测(1)更改游戏帧渲染(2)碰撞检测函数(3)像素级碰撞检查(4)最终效果1、玩家控制Bird在该游戏中玩家只需要按空格或者up键来控制输入,玩家每按一次,小鸟就向上飞行一小段距离,这也是该游戏的特点(1)更改游戏主循环我们在游戏主循环中添加接收玩家输入事件的判断程序,如下: def run_game(self):原创 2021-05-02 22:09:31 · 1177 阅读 · 0 评论 -
【FlappyBird小游戏】编写AI逻辑(一)——RL系统和数据预处理
提示:如果本文对您有帮助,欢迎点赞支持!文章目录前言一、强化学习系统二、帧数据的预处理1、抓取帧图像2、预处理初始状态3、预处理下一状态前言我们的目标是训练小鸟尽可能地保持存活通过更多的管道障碍物从而最大化游戏得分。当很难完全罗列预定的行为进行编程时,就可采用强化学习方式。我们计划设计一个强化学习系统,其中Q函数通过一个卷积神经网络(深度Q网络)来模拟,其输入是原始像素,输出是一个评估未来奖励的价值函数,通过该价值函数来指导智能体采取动作。深度Q网络的训练是提取游戏运原创 2021-05-04 22:10:30 · 1294 阅读 · 1 评论 -
【FlappyBird小游戏】编写AI逻辑(二)——基于队列的经验重放池
如果本文对您有帮助,欢迎点赞支持!文章目录前言第1种设计方式:基于Numpy数组第2种设计方式:基于Python数组第3种设计方式:基于队列前言书写经验重放池是Deep Rl算法的必备技术之一,常见的是基于数组的形式,本文列举3种常见的实现方式。本文不会详细介绍代码,因为太过简单,不理解的同学可以直接在评论区提问。第1种设计方式:基于Numpy数组class ReplayBuffer(object): def __init__(self, capacity,原创 2021-05-06 15:52:14 · 731 阅读 · 1 评论 -
【FlappyBird小游戏】编写AI逻辑(三)——RL算法的训练主循环
本文隶属于一个完整小项目,建议读者按照顺序阅读。本文仅仅展示最关键的代码部分,并不会列举所有代码细节,相信具备RL基础的同学理解起来没有困难。全部的AI代码可以在【Python小游戏】用AI玩Python小游戏FlappyBird【源码】中找到开源地址。如果本文对您有帮助,欢迎点赞支持!文章目录一、训练主循环二、启动代码一、训练主循环训练主循环与Deep Rl算法紧密相关,本项目的主循环如下:def train(self,max_episodes): print原创 2021-05-06 16:12:51 · 655 阅读 · 1 评论 -
【FlappyBird小游戏】编写AI逻辑(四)——搭建CNN网络
本文隶属于一个完整小项目,建议读者按照顺序阅读。本文仅仅展示最关键的代码部分,并不会列举所有代码细节,相信具备RL基础的同学理解起来没有困难。全部的AI代码可以在【Python小游戏】用AI玩Python小游戏FlappyBird【源码】中找到开源地址。如果本文对您有帮助,欢迎点赞支持!文章目录前言一、封装基本操作1、卷积操作2、最大池化操作3、扁平化操作二、封装基本神经层1、卷积操作2、封装卷积神经层三、封装基本神经网络前言一、封装基本操..原创 2021-05-06 16:07:14 · 679 阅读 · 2 评论 -
【FlappyBird小游戏】编写AI逻辑(五)——搭建计算图和学习机制
本文隶属于一个完整小项目,建议读者按照顺序阅读。本文仅仅展示最关键的代码部分,并不会列举所有代码细节,相信具备RL基础的同学理解起来没有困难。全部的AI代码可以在【Python小游戏】用AI玩Python小游戏FlappyBird【源码】中找到开源地址。如果本文对您有帮助,欢迎点赞支持!文章目录一、定义计算图1、定义评估网络的输入输出2、定义目标网络的输入输出3、定义两个网络的参数更新操作二、定义学习机制1、从经验重放池中进行批采样2、根据批采样数据使用单步Q-l原创 2021-05-06 16:12:15 · 723 阅读 · 2 评论 -
从零构建参数化全连接神经网络研究(一)之前言【开源】
从零构建参数化全连接神经网络研究目录前言一、项目内容结构1、目录结构2、8个迭代的神经网络版本二、项目代码简析1、神经网络类的派生2、代码的注释与说明3、最终版本的神经网络三、项目开源信息前言本项目原是作者的《图像合成技术》的一个课程作业,现已结课,开源出来供同行批评指正。主要内容是从零构建一个基础的参数化的全连接神经网络(不使用人工智能算法库),并使用该网络进行了一个分类实验和一个回归实验。本项目进行了8个版本的神经网络的迭代,每个版本层层推进,适合原创 2021-04-26 17:41:36 · 368 阅读 · 0 评论 -
从零构建参数化全连接神经网络研究(二)之数字分类实验【开源】
注意:这是一个完整的项目,建议您按照完整的博客顺序阅读。因为该项目原本是作者的一个课程作业,其详细内容直接截取了作者汇报PPT,若给您带来不便,欢迎留言。从零构建参数化全连接神经网络研究(二)之数字分类实验目录一、实验的MNIST数据集二、过拟合问题的实验研究1、梯度下降算法 & 最小批次梯度下降算法2、探究过拟合现象3、过拟合解决办法(一)之增加数据集4、过拟合解决办法(二)——正则化方法三、提高训练效率的实验研究1、提升训练速度办法(一)——优化权重初原创 2021-04-26 17:52:05 · 170 阅读 · 0 评论 -
从零构建参数化全连接神经网络研究(三)之函数拟合实验【开源】
注意:这是一个完整的项目,建议您按照完整的博客顺序阅读。因为该项目原本是作者的一个课程作业,其详细内容直接截取了作者汇报PPT,若给您带来不便,欢迎留言。从零构建参数化全连接神经网络研究(三)之函数拟合实验目录一、实验的MNIST数据集二、过拟合问题的实验研究1、梯度下降算法 & 最小批次梯度下降算法2、探究过拟合现象3、过拟合解决办法(一)之增加数据集4、过拟合解决办法(二)——正则化方法三、提高训练效率的实验研究1、提升训练速度办法(一)——优化权重初原创 2021-04-27 13:51:15 · 300 阅读 · 1 评论 -
【API使用总结】np.argmax()和tf.argmax()的辨析
提示:如果本文对您有帮助,请点赞支持!文章目录前言一、np.argmax()的使用二、tf.argmax()的使用前言在写AI算法的Demo时,偶然间出现了一个bug,发现是我不小心将tf.argmax()写成了np.argmax(),正好闲来无事,辨析下两个API的使用一、np.argmax()的使用np.argmax()是Python的第三方库numpy中的一个常见API,经常用来获取数组中的最大值所在的索引。所以使用该API要先导入该库:impo..原创 2021-04-19 20:29:52 · 618 阅读 · 2 评论 -
TensorBoard训练可视化(一)
如果本文对您有帮助,欢迎点赞支持!目录前言1、TensorBoard可以做什么?2、TensorBoard的绘制流程一、可视化计算图结构1、为计算图结构添加name和name_scope2、生成graph Events文件3、启动TensorBoard4、TensorBoard的显示效果二、监控训练过程数据1、监控张量节点变化2、监控模型变量变化3、定期添加到TensorBoard前言1、TensorBoard可以做什么?TensorBoard原创 2021-04-16 16:05:50 · 691 阅读 · 0 评论 -
TensorFlow模型的保存与加载(二)——pb模式【源码】
如果本文对您有帮助,欢迎点赞支持!目录前言1、TF模型保存方法2、pb模式3、适合保存模型的时机一、保存模型1、定义简单网络模型2、保存网络模型为pb文件二、加载网络模型前言1、TF模型保存方法网络模型的保存和重载操作是学习和训练AI模型的必备技能之一,也是进一步学习迁移学习知识的基础。Tensorflow的模型保存加载有不同格式,使用方法也不一样。目前来看,Tensorflow的保存方式按照生成的主要文件的格式基本可以分为三种:(1)checkpoint模式原创 2021-04-15 20:03:32 · 9530 阅读 · 2 评论 -
TensorFlow模型的保存与加载(一)——checkpoint模式【源码】
如果这篇文章对您有帮助,欢迎点赞支持!目录前言1、TF模型保存方法2、checkpoint模式3、适合保存模型的时机一、保存模型1、创建Saver对象2、检查保存路径3、生成模型文件二、加载模型1、加载模型结构2、加载模型参数3、获取Tensor变量三、代码封装1、保存网络模型2、加载网络模型前言1、TF模型保存方法网络模型的保存和重载操作是学习和训练AI模型的必备技能之一,也是进一步学习迁移学习知识的基础。Tensorflow原创 2021-04-15 16:52:10 · 8244 阅读 · 3 评论 -
C#编程——在Unity脚本中与Python通信
提示:若本篇文章对您有帮助,欢迎点赞支持。文章目录前言一、方法(一)——通过命令行调用Python代码1、命令行运行Python程序的方法2、C#中运行Python程序3、该方法的不足之处二、方法(二)——通过套接字调用Python代码1、套接字通信方法简介2、引用套接字通信包前言Unity是一款十分优秀的游戏引擎,许多个人开发者都在尝试使用该软件自己喜爱的应用。如果在Unity中使用一些先进的人工智能算法则可能需要借助Python代码。Unity官方推出原创 2021-04-09 14:49:56 · 5427 阅读 · 1 评论 -
Python编程——基于TCP的套接字通信包【开源】
提示:转载请注明出处,如果改文章对您有帮助,请点赞支持下 文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言基于TCP的套接字通信是深入学习Python程序的必备技能之一,套接字不仅可以用于网络编程,在本地不同进程之间的通信、不同编程语言的程序通信中也应用十分广泛。本篇文章是在之前了解套接字编程接口的基础上进一步扩展,写出一套真正可用于实际程序通信的代码。本片文章将会集中研究套接字通信中的分包和粘包问题、自定义通信协议的方...原创 2021-04-01 20:12:23 · 2259 阅读 · 6 评论 -
Python编程——基于TCP的套接字简单通信
提示:转载请注明出处,如您觉得对您有帮助,请点赞支持下。文章目录目录一、套接字是什么?二、服务端的套接字使用步骤1、引入库2、初始化套接字对象3、同步监听客户端连接并发送消息三、客户端的套接字使用步骤1、引入库2、初始化套接字对象3、连接服务端和通信一、套接字是什么?套接字(Winsock)是一种独立于协议的网络编程接口,在OSI体系中集中在会话层和传输层。各类主流编程语言基本都提供了一系列对于套接字操作的封装,Python也不例外。...原创 2021-03-30 22:09:24 · 669 阅读 · 1 评论 -
Python模块(一)——Numpy(一)
提示:转载请注明出处,若本文无意侵犯到您的合法权益,请及时与作者联系。Python模块(一)——Numpy(一)一、NumPy是什么?二、Ndarray 对象1、创建Ndarray 对象2、数组属性3、创建数组的方式4、从数值范围创建数组二、NumPy 切片和索引1、使用冒号(:)2、使用冒号(...)3、整数索引4、布尔索引一、NumPy是什么?NumPy是2005年推出的Python语言的一个开源免费扩展库,其底层采用C语言编写,在进行大量原创 2020-10-23 21:39:51 · 201 阅读 · 1 评论 -
Python模块(二)——Pandas(一)
提示:转载请注明出处,若本文无意侵犯到您得合法权益,请及时与作者联系。Python模块(二)——Pandas(一)前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言本篇博客是作者学习莫烦Python相关Pandas的笔记,如果你向观看莫烦Python的代码,可以进入传送门:莫烦Python之Pandas一、Numpy 和 Pandas 有什么不同? Pandas是一个开源的,BSD许可的库(基于numpy),为Python编程语言提供原创 2020-10-24 22:35:11 · 191 阅读 · 0 评论 -
Python技巧——访问列表
目录一、循环遍历指定次数二、正反向访问列表三、访问列表的索引四、同时访问列表的元素和索引五、去除列表中的相同元素六、访问列表的指定索引之后的元素一、循环遍历指定次数# 从0开始循环到4for i in range(5): print(i)# 从1开始循环到5for i in range(1,6): print(i)二、正反向访问列表# 正向访问列表的元素for i in list: print(i)# 反向访问列表的元素 for原创 2020-10-10 20:12:05 · 401 阅读 · 0 评论 -
Python技巧——解析式
解析式是将一个序列(实际上适用于任何可迭代对象(iterable))转换成另一个序列的工具。一、将for循环改写成列表解析式:numbers = [1, 2, 3, 4, 5]# 一个没有条件语句的for循环doubled_odds = []for n in numbers: doubled_odds.append(n * 2)# 改写成一个列表解析式后:doubled_odds = [n * 2 for n in numbers ]# 一个有条件语句的for循环原创 2020-10-10 19:50:22 · 262 阅读 · 0 评论 -
如何在PyCharm中组织Python项目目录
提示:转载请注明出处,若本文无意侵犯到您的合法权益,请及时与作者联系。如何在PyCharm中组织Python项目目录 目录 如何在PyCharm中组织Python项目目录 一、创建项目 二、创建包 1.创建包 _init_.py的作用 2.模块之间的项目导入 一、创建项目创建项目是一个非常简单的工作,但是创建Python项目和其他语言有点不同,即需要选择Python Interpreter。Python Interpreter就是Pytho..原创 2021-02-18 14:39:43 · 5863 阅读 · 0 评论 -
如何设置PyCharm的文件头注释
提示:转载请注明出处,若本文无意侵犯到您的合法权益,请及时与作者联系。如何设置PyCharm的文件头注释?按照下图所示,进行5步操作,就可以添加要给简单的文件头注释。设置后,新建Python文件后的效果如下图所示。...原创 2020-11-22 17:38:33 · 717 阅读 · 0 评论