AI 时代程序员如何准备?从擅长领域出发,融入 AI 热潮
发表时间:2024-07-11 16:02:12
文章来源:炫佑科技
浏览次数:100
菏泽炫佑科技
AI 时代程序员如何准备?从擅长领域出发,融入 AI 热潮
全文:约5,600字
您可能需要一些时间才能读完这首歌
随着人工智能的日益深入发展,智能革命的浪潮迫在眉睫,并悄然影响着软件行业。
那么,作为一名从业多年的程序员,或者说,正在准备成为新一代程序员的读者,你该如何为智能时代做好准备,成为AI时代的程序员呢?
网上有很多的教程,大部分都是从高等数学、线性代数、概率的角度讲算法的基础,或者讨论某个网络的算法,比较模型的效果,偏向于研究和数据科学。
学习更多的知识当然是好的,但是这毕竟需要花费很多的时间,而且在软件开发中积累的经验似乎也没有太大的用处。
如果程序员从自己的专业领域出发,逐渐融入AI热潮,岂不是可以补齐短板,事半功倍?另一方面,未来只开发AI模型就够了吗?显然不是。AI模型会带来智能革命,但传统软件开发仍是基础。
就像工业革命之后,人类依然需要农业来提供足够的粮食;信息革命之后,同样需要工业革命带来的巨大工业生产力。因此,智能化革命也将建立在信息革命所构建的巨大软件制造经验和能力之上。
本文将帮助你开始 AI 应用开发,并编写你的**个 AI 程序——手写识别(见下图)。同时,还会讲一些必备的 AI 知识和背景,带你走进 AI 新世界的大门。
找一个网络环境好的地方,规划好自己的空闲时间,放松心情,循序渐进的学习,保证你的收获会非常多。
注意:安装过程中需要下载的软件较多,建议在稳定、快速的网络环境下安装,总时间取决于预安装和网络状况,通常需要 1 小时以上才能完成环境搭建和 AI 应用。
1.配置AI开发环境 1.安装要求 2.检查并安装Git
Git是目前非常流行的源代码版本管理工具,被广泛使用,在接下来的安装过程中会通过它来下载一些AI组件。
首先打开命令行或终端窗口,输入git,看看能否找到该命令。如果命令行返回Git命令的使用说明,则说明Git已经安装完毕,可以跳过Git安装部分。
若未安装Git,打开安装页面会自动下载Git安装包,下载完成后点击安装。为方便使用,需要在安装向导的命令提示符中选择使用Git(如下图所示)。其他步骤点击下一步。
3.检查显卡机器学习包是否安装
在机器学习中,一些算法在并行计算下可以得到大幅加速。GPU 具有很强的并行计算能力,因为它们需要进行快速的图形处理,而这种计算可以高度并行化。在运行一些机器学习算法时,同等价格的 GPU 可以比 CPU 快几十倍甚至几百倍。
显卡是机器学习领域*受欢迎的硬件之一,几乎所有框架都集成了对显卡的支持。安装过程中也包括显卡的配置。
如果你没有显卡,可以跳过这一步,直接安装或配置2017。
确认您的显卡与 CUDA 兼容。
CUDA( )是英特尔推出的通用并行计算架构,可以利用显卡解决各种复杂的计算问题。显卡的数百甚至数千个并行核心用于加速计算。访问台式机或笔记本电脑显卡列表,找到您的显卡型号,点击详情页。如果在左侧可以看到下图高亮部分,则表示支持 CUDA(部分高端显卡会进入购买页面,也表示支持 CUDA),否则开始安装或配置 2017。
如果你不清楚如何查看GPU型号,或者找不到你的显卡,可以跳过下面的CUDA和cuDNN安装过程,接下来安装AI框架的时候会自动检测GPU是否支持,以及CUDA和cuDNN是否安装。
如果发现显卡支持但是没有安装CUDA和cuDNN,可以在安装完成后执行此步骤。
4.安装机器学习相关组件
如果你已确认显卡支持CUDA,请按照下面的步骤完成配置。
1.确认已安装*新的显卡驱动程序
如果已经安装,那么我们安装 CUDA
2.安装CUDA 9.0
为了减少与机器学习框架的兼容性问题,我们选择安装兼容性*好的CUDA 9.0。
首先,转到 CUDA 9.0 下载页面。
然后选择对应的操作系统、CPU架构、操作系统版本确认安装包,安装包本身也比较大,如果网速稳定可以选择网络()版本按需安装,如果网速不稳定,或者要多台机器安装可以选择本地安装(local)版本,一次性完成下载。
选择后,点击打开或者保存到本地运行即可。
注意:如果安装过程中出现以下错误,可能是因为显卡较新,CUDA 9.0中未包含对应的驱动,这种情况下可以重新启动安装过程,选择自定义安装,取消勾选显卡驱动( )后重试。
3.配置 cuDNN
cuDNN(CUDA Deep)是一个基于CUDA针对深度神经网络优化的计算库,cuDNN的下载安装过程相对复杂,需要在网站上注册后才能下载。
首先进入cuDNN下载页面,点击展开cuDNN v7.0.5 (Dec 5, 2017), for CUDA 9.0。然后根据对应的操作系统选择对应的版本,之后会进入下方的登录界面。
注册或者登录后,你就可以看到下载链接,或者再次点击进入下载页面。
解压后会有一个以dll为扩展名的动态链接库文件,将其复制到CUDA安装目录的bin目录下即可,CUDA默认安装路径如下:
安装或配置 2017
注意:如果有其他版本,安装2017之前尽量卸载。特别是2012或者更低版本,否则使用时可能会出现版本冲突相关问题。
如果你已经安装了2017,那么从开始菜单搜索打开即可,在更多中选择修改,确认开发和.NET桌面开发工作负载是否安装,如果没有,则选择安装。
1. 转到下载页面,指向下载,然后单击 2017。
该版本完全免费,包含大部分基础功能,能够全面支持AI应用开发,只需要使用微软账号登录即可一直使用。
2. 运行安装程序后,将打开工作负载选择界面。至少选择开发和.NET 桌面开发。
各个场景的开发以工作负载的形式组合在一起,只需要勾选即可顺利进行对应场景的开发,安装完成后可以通过开始菜单再次打开此界面安装其他工作负载。
然后点击右下角的安装按钮开始安装,安装时间会根据选择的内容量和网络状况而有所不同,这里请耐心等待。
安装 AI 工具
Tools for AI是AI集成开发环境的核心部分,包含训练任务管理、模型推理等功能。
1. 开始,从菜单栏中选择工具->扩展和更新。
2.点击,在右上角输入tools for ai回车,如果**次搜索不成功,可以加一个空格再回车搜索,搜索结果出来后,点击Tools for AI的下载按钮。
3.下载完成后,关闭所有窗口以触发插件安装过程。关闭后,等待几秒钟,会出现安装界面,点击修改。等待整个安装过程结束,然后点击关闭。
4、再次打开,会在菜单栏看到AI tools,说明安装完成。
安装 AI 框架
在机器学习,尤其是深度学习中,经常因为各种原因需要在不同的AI框架之间切换,不同的框架可能依赖的底层库版本也不同,因此搭建一个便捷的AI开发环境需要花费一些时间和精力。
本文通过 AI 中的一键安装脚本简化了AI框架的安装过程。
可以一次性安装CNTK、Keras、MXNet等热门框架,以及scipy、onnx、-learn等热门工具,这个1000多行的安装脚本会节省大量的安装配置时间,新手再也不会卡在安装配置环境这一步了。
下载 AI 示例库
打开命令提示符或终端窗口,选择并输入要存储代码的目录,例如 %% 。运行以下命令下载 AI 示例库,然后进入该目录。
注意:请确保整个路径中没有中文,很多机器学习框架对多语言的支持不是很好,为防止出现问题,请确保整个路径中没有中文等扩展字符集。
注意:建议以管理员权限打开命令提示符窗口。这是为了避免安装目录需要管理员权限才能写入文件。步骤:打开开始菜单->在键盘上输入cmd->右键单击出现的命令提示符->选择以管理员身份运行->通过cd命令选择合适的目录,例如cd /d %%。
运行安装脚本
1.命令提示符中可能没有配置路径。运行--检查。
如果出现以上内容,说明不在系统路径下,这种情况下请使用以下命令根据系统中的安装路径进行设置。
注意:如果改变默认安装路径,此命令也需要做相应的修改。
2.执行.py
3.检查并配置CUDA和cuDNN
如果之前因为不确定显卡是否支持 CUDA 等原因跳过了前面步骤的 CUDA 安装,可以看一下此处的输出。如果在输出的前几行发现以下字样,则表示支持 CUDA,但是 CUDA 或(和)cuDNN 未正确安装。安装脚本运行后,请参考上一篇文章完成 CUDA 和 cuDNN 的安装。
安装完成后,若出现红色错误提示,请参考FAQ:运行.py时出现红色错误提示,如何处理?。
命令行窗口完成后,按回车键,但不要关闭它,然后开始训练**个模型。
训练**个模型
下载的-for-ai包含大量机器学习训练和应用的例子,MNIST例子用于测试环境安装是否成功,为下一步的AI模型做准备。
运行过程中会打印一些错误信息,不用担心,这些都是AI训练过程中正常的错误率信息,随着训练过程的进行,模型在训练时的错误率会逐渐下降,这意味着AI模型预测的结果越来越准确。
2. 创建你的**个 AI 应用程序
克隆代码并导入训练好的模型,就可以尝试你的**个AI应用了!当然,你不仅要知道结果,还要知道原因。接下来,我们将分析核心代码。
运行程序并克隆代码
使用以下命令克隆AI应用的代码,代码里有一个应用形式项目,里面所有的代码都是预先写好的,同上,需要选择放置代码的路径,如:cd /d %%
注意:克隆代码放置的路径不能包含中文字符。
运行上述脚本后,解决方案将在2017年打开。
参考模型
1. 首先创建一个模型项目。在解决方案资源管理器中,右键单击解决方案,指向添加,然后单击新建项目。
注意,必须右键单击解决方案,否则不会出现新项目菜单。
2.在弹出的添加新项目对话框中,选择AI Tools,然后在右侧选择模型推理库(.NET)。
然后将下面的名称改为Model,点击OK。
注意:名称必须一致(包括大小写),这是生成代码的命名空间。
3.点击OK之后会提示检查环境,完成后会出现下图,不要管那个红框,点击就可以了。
4.浏览到示例代码的下载路径,继续选择以下路径中的.pb文件并点击打开。
注:示例的路径请参考上面训练模型部分的代码。
5.点击Open之后会出现模型分析的流程,完成后如下图,此时在类名中输入Mnist,*后点击OK即可。
**次导入模型时,依赖库会被下载,因此创建项目‘模型’...对话框会显示更长时间。
注意:Mnist 将是生成代码的类名,因此请保持一致(包括大写)。还要注意单词中 n 和 i 的位置。
将调用分析模型来分析模型文件的输入和输出信息,以便生成相应的代码,这有时需要一两分钟的时间。
6. 项目创建完成后,检查模型项目是否生成如下图所示,其中是否有 . 文件。如果没有看到这个文件,一般是网速慢,下载超时导致的。请参考FAQ:创建模型项目出错如何处理?
然后,右键单击 MNIST.App 项目的“引用”,然后单击“添加引用”。
有兴趣的可以打开Mnist目录看看生成的代码,里面还包含优化后的模型数据文件。
注意:右键单击引用。
7. 在弹出的对话框中点击,勾选右侧的Model,这样就可以在表单中引用Model项目了。
8. 现在按 CTRL + F5,或单击工具栏上的“开始”按钮。您的**个 AI 应用程序正在运行!666。
理解代码
除了知道事实,我们还要知道原因,所以我们先简单介绍一下代码和必备的知识。代码的逻辑在MNIST.App项目的.cs文件中,剩下的都是自动生成的代码。这个文件包括了界面联动和数据预处理的代码,还有一行推理预测的代码。界面联动是为了实现手写输入时的良好体验,数据预处理部分是将用户的手写输入转换成模型在推理之前需要的浮点数组。
注意:代码中有非常详细的注释,建议大家看完本章之后再仔细阅读代码中的注释,以便更深入的理解整个代码逻辑。
接口联动
1.展开MNIST.App项目,找到.cs文件,所有的界面设计和代码都在这里,双击打开设计界面,可以看到设计界面和程序实际运行效果很像,窗体包含三个控件: 、Label、 。后面我们会介绍控件对应的变量名,以及添加的事件、用途等。
2、在窗体设计界面右键选择View Code,可以看到核心代码。
3.打开代码后可以看到几乎每一行代码都有对应的注释,除了类中的少数变量外,其余逻辑几乎都在事件响应函数中,这些响应函数都是在控件属性的事件面板中添加的,每个控件都可以通过变量名在代码中使用。
具体信息如下:
数据预处理
数据预处理是人工智能应用的重要组成部分。
在大部分的AI应用中,尤其是本文中的图像分类应用,都是采用监督学习来训练模型,即先提供一些有标签的图像来训练模型,然后输入未知的图像来推断和预测图像的类别。因此在训练和推理过程中,每次输入模型的数据格式必须完全一致,才能保证预测和推理的效果。
在这个例子中,训练数据的输入格式是已知的,因此按照说明编写代码即可。在实际的人工智能应用中,了解模型输入数据的格式细节并严格执行非常重要。如果数据格式细节不一致,通常会降低推理结果的准确性。然而,这类问题几乎不会引起编译或运行时错误,而且数据是浮点数组,不容易直观理解,因此很难诊断和纠正此类问题。
下面将介绍本示例中数据预处理的过程,以便您了解数据预处理的细节。
1.数据预处理**步,在设计表单时将手写区域调整为正方形,与训练数据的形状一致。
2. 定义一个类变量常量等于28。这是训练数据的实际图像大小。
界面上的正方形*终会缩小到28 x 28。以下均为C#代码
3. clear 函数将手写区域的背景设置为白色。训练数据是黑白的AI 时代程序员如何准备?从擅长领域出发,融入 AI 热潮,所以需要将前景色和背景色设置为相同,以达到与训练数据的*大对比度。
4、事件中设置手写笔样式,手写笔宽度为40,颜色为黑色,起止位置设置为圆头。
笔迹宽度与图像大小的比例基本与训练数据的比例相符,但用户输入的文字大小无法控制,会存在一定的误差,好在深度学习模型适应性强,对识别准确率影响不大。
黑色字迹与白色背景相匹配,形成*大的对比度。
笔迹的起止位置都是圆形的,在书写过程中会多次调用鼠标移动事件,每次都会从上次的结束位置到当前位置画一条直线。如果笔尖没有设置为圆头,这些直线就会形成一个矩形,形成很多不连续的位置,如下图所示。这样很影响识别,也不美观。
5. 事件包含其他数据处理逻辑。首先,构造一个 28 x 28 的图像,并将手写图像缩放到新的图像对象中。
6.按行和列遍历28 x 28位图中的所有节点,取出每个像素,进行处理并存储在数组中。
7.将红、绿、蓝通道相加并求均值,完成像素灰度转换。手写识别模型的输入数据是黑白图像。
手写区域是白底黑色文字,各个颜色通道的数值其实是一样的,为了逻辑严谨,方便理解,对数值进行了平均,并进行了灰度化。
8.取值范围改为0~1。机器学习中的取值范围差别很大,因此大部分机器学习模型都采用浮点数进行计算。
9.翻转数值,并将它们移位0.5。此步骤会减少输入数据中的零值数量。过多的零会导致中间结果中出现更多零,这很容易导致神经网络中的信息丢失。
白色背景经过灰度转换后为255,转换后为-0.5;黑色字迹经过灰度转换后为0,转换后为0.5。经过这样的过程,大部分数值都变成了非零值。
数据的反演是一个经验性的做法,通过实验发现很多情况下反演之后训练效果更好,MNIST数据集的数据也是通过反演保存下来的。
推理
就是输入数据,得到模型的预测结果。这一步很简单,输入变换好的一维数组,输出预测结果。 函数每次调用可以输入多张图片,进行批量预测。
实际情况
这个例子很简单,还不足以成为一款实用的手写识别产品。但迈出这一小步,将让你踏上 AI 应用开发的门槛。这里,我先抛出一些想法,然后提出一些实际问题,并提供一些解决方案供参考。
在实际应用中,会发现更多的问题,例如草书书写、倾斜校正、梯形校正等。因此,加入AI模型之后,可以将不可能变成可能,但需要的软件开发量仍然很大,传统软件开发中的挑战也不会少。
在思考实际场景的同时,你会逐渐对AI的应用有意识。在做产品的时候,如果遇到数据很多,但很难找到规律的情况,不妨想想能不能用AI模型来解决这个问题?有了这样的AI意识,你才能更好地将AI与传统软件结合起来,做出视觉冲击力强、用户体验自然的产品。
在大多数AI应用中,数据非常重要,在网上的讨论中经常看到数据是AI应用的基础,在以下的解决方案中也可以看到,很多解决方案都依赖于大量有代表性的数据。
传统解决方案易于理解和实现,但需要巧妙的算法,并且难以处理噪声等异常情况。AI模型的质量取决于数据、特征工程和算法,不需要深入研究算法。
究竟哪种方案更好,还需要实际场景验证才能确定,也可以同时使用多种方案,再通过AI模型来决定采用哪种方案。
大小不同或不居中
当字符写得较小或偏离中心时,识别错误会更多。这是因为训练数据被居中并缩放以提高模型的识别率。可能的解决方案包括:
1. 利用一些图像算法,比如找到手写像素的分布中心,将其居中,并根据外围手写像素进行缩放,使其适合识别区域。这种方法逻辑清晰,不需要数据进行训练。缺点是如果手写数据来自摄像头,会有很多噪音,从而造成误判。
2. 训练一个用于物体检测的AI模型( ),自动框出合适大小的图像。这种方法会用一个矩形框出需要的物体(即字符),并基本保证居中,矩形适当缩放后即可作为输入。如果数据量足够且具有代表性,这种方法会发挥很好的作用。但物体检测所需的数据标注工作非常繁琐,需要在每条训练数据中标注字符框,标注的好坏直接影响识别的质量。
多字符识别
写作时,一般是连续的段落或者方程式,很少只输入一个字符,需要分割成单个字符再逐个识别。需要解决的问题有两个:一是将图像分割成单个字符,二是字符排序。
字符排序。
单个字本身的意义是不够的,在语言文字中,字需要组合成词和句子才能有更丰富的意义。上一步中,对单个字进行了切分,识别完成后,还需要将它们组合成词和句子。
除了常见的横写,还有竖写,如果纸上没有线,可能会越来越歪,这些问题给字符排序带来麻烦,这一步可以通过传统方法根据各个方向的距离等因素来判断是否是连续的字符串。
不同的个人风格
这个问题的解决主要依靠收集不同的写作风格,如果有一个有代表性的数据集,这个问题就很容易解决了。
识别字母、符号和汉字
如上所述,数据是*重要的。此外,随着问题规模的增加,所使用的AI模型可能也需要修改,以变得足够复杂,以容纳更多信息。
比如汉字比较复杂,28x28的尺寸可能不足以表达足够的细节,所以原始输入尺寸需要更大。
3.常见问题 运行.py时出现红色错误文字,如何处理?
因为语言异常信息一般在*下面一行,所以需要仔细阅读*后一行红色文字,找到关键词。根据以下情况,针对不同的问题进行处理:
通常下载超时是因为网速不够或者网络不稳定导致的,你可以等整个脚本完成后再试,或者换个网络环境再试,重试的时候不会重新安装已经安装的包,这样会更快。
这是因为它安装在系统目录下,需要管理员权限才有写入权限。用管理员权限打开命令行窗口进行安装。步骤:打开开始菜单->键盘输入cmd->右键点击出现的命令提示符->选择以管理员身份运行。然后重新安装命令行相关工作。
如果系统路径已经存在怎么办?
它是AI训练中*常用的语言软件开发,大多数AI框架和库都是基于它。
多个实例可以安装在操作系统中,但并非每个环境都可以用于AI开发。
如果您以前已经安装了机器学习软件包,则建议安装新的软件包,以获取*佳兼容性。
检查是否是64位。
如果未满足上述任何条件,或者已经安装了其他机器学习组件,建议安装新的条件。
克隆代码时,我经常会出现错误。
在诸如教育网络之类的网络环境中,如果您找不到其他网络环境,则只能在网络的非高峰时段尝试。
如果创建模型项目时发生错误,该怎么办?
如果您在添加模型项目后没有在目录中看到。
如果在运行时出现“系统找不到指定路径”的提示,该怎么办?
这通常是由路径中的汉字引起的,整个解决方案需要移至不包含诸如中文之类的扩展字符集的路径。
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等