机器学习速成大法之手写数字识别篇
我作为一枚人工智能领域小白程序员 ,准备用一个月的时间练成机器学习高手。万丈高楼平地起,从网上找到一段hello world代码,识别手写体数字。我通过各种查阅资料,加了注释,记录了我对每行代码的理解,希望对也想上路机器学习的程序员们有帮助。# 互联网小白鼠学习专用代码 # 1、导入tensorflow包 import tensorflow as tf def hello_world(): print("start hello world test...") # 2、下载并获取手写数字的数据集 mnist = tf.keras.datasets.mnist # 3、将数据集加载到4个数组里,train表示训练数据,test表示验证数据 (x_train, y_train), (x_test, y_test) = mnist.load_data() # 4、像素都是0~255的数字,为了便于进行模型训练,除以255,全部变成0~1之间的数据 x_train, x_test = x_train / 255.0, x_test / 255.0 # 5、定义好训练模型,Sequential是层堆叠模型,表示要将下述4个layer层叠加在一起 # 5.1 Flatten 平移层,的作用是把多维数组压平,变成二维数组。 # 5.2 Dense 密集连接层,128表示设置128个神经元。activation 是表示选择激活函数,relu函数的作用去掉负值,把小于0的数据改为0 # 5.3 Dropout 随机丢弃层,0.2表示每次只随机选中20%的神经元,丢弃其它。这么做的目的是防止过拟合 # 5.4 Dense 密集连接层,设置了一个 softmax 激活函数,它的目的是通过指数计算,把任何值归一到 0~1之间的数值,常用于表达一个概率值 model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation="relu"), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation="softmax") ]) # 6. 开始编译模型,optimizer表示优化器, adam 是一种动态自适应优化器,具有较高的稳定性 # 6.1 loss 表示损失函数,预测值与真实值之间的差距 # 6.2 metrics 评估指标,accuracy表示用预测精度来评估模型好坏 model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=["accuracy"]) # 7 开始训练,epochs 为几个数据一组 model.fit(x_train, y_train, epochs=5) # 8 开始验证,verbose表示日志输出方式 model.evaluate(x_test, y_test, verbose=2) def call_function(name): hello_world() # Press the green button in the gutter to run the script. if __name__ == "__main__": call_function("PyCharm")
我在Python代码注释中对机器学习步骤做了一个序号,总结来看,就是如下8步:
第一步:导入tensorflow lib包,这是Python程序的惯例,引入Lib才能调用各种现成的接口;
第二步:下载一个手写数字数据集,开源就是好,这些数据集网上都有,不用自己去制作,并且tensorflow包里已经封装好了对数据集的下载工作;
第三步:把手写的数字图片数据加载到数组里,这里拆分成两部分加载,一部分用于训练,一部分用于验证;
第四步:把图片像素数据等比例缩小到0~1之间,方便后续运算;
第五步:构建模型,这里先进行了池化,把多维数组平移为二维数组。然后叠加几个神经网络层,这一步是最难理解的,既然本篇是囫囵吞枣,就暂时不做详细解释了,可以看我注释伦里的初步解释,后续会逐个深入解析;
第六步:编译模型,在这里设置好优化器,损失函数,评价指标。具体每一项是什么意思,后续也会做详细解释;
第七步:训练模型,这里是开始让每一组数据都在模型里跑一遍,从而让模型能够自己生成相关参数。这里的原理是黑盒的,要想知道训练过程怎么产生模型参数,至少需要人工智能博士学历;
第八步:验证模型,通过上一步训练后,其实就生成了一个参数模型,这一步只是运行这个参数模型来对未训练数据进行预测,看看结果对不对;
这八步下来,我们就把机器学习这颗大红枣给吞下去了,概括起来无非就是先加载数据,构建模型框架,然后再训练数据生成模型实体,最后再用一些数据去验证一下这个模型实体是否可靠。这个步骤跟我们造一个锤子是类似的,先画个锤子图纸,然后用车床加工一个锤子,最后用这个锤子去打几个核桃,看看合不合格。
而训练模型与造锤子最大的不同在于,造锤子的工艺顺序是确定的、可感知的,而训练模型让其生成实体的过程却是不可确定、不可感知的。它跟小孩认识一只猫一样,至今还没有哪位科学家能把小孩如何认出一只猫的过程详细论述出来。
说不清道不明,也许这才是机器学习的魅力所在吧,后续将会逐个知识点的展开来学习,争取30天速成!
风扇界的小米,足不出户,享受山谷的自然风,关节吹了不冷疼天气一热,空调和风扇就要用起来了。但空调长时间开着不利于空气流通,还会使空气变得混浊,引发空调病。传统风扇风力小,吹出来的风很硬,直吹人体,吹久了头疼,也容易着凉。最近逛某书,被斗
阳光电源会是雷?21年新能源龙头阳光电源绝对是大家公认的白马股,从20年1月11块多一直涨到21年10月的180多,从此走上跌跌不休的路,本月2021日两天剧烈下跌,跌副达41。83,股价至65多
这款APP的开发,是为了拯救极度濒危海龟人工智能为打击非法玳瑁交易提供了更轻松的路径,也成为了打击非法野生动物贸易的前沿。一只极度濒危的玳瑁在礁石上方游泳。据信,在过去的两个世纪里,有超过900万只玳瑁因为自己的龟甲丧生
股价跌停后神州信息隐现利好消息腾讯系大举买入,持股市值达1。86亿元每经记者曾剑每经编辑陈俊杰腾讯系又一次在A股市场上大举扫货。神州信息(000555,SZ)4月25日晚间发布的一则公告显示,林芝腾讯科技有限公司(以下简称林芝腾讯)新进成为了公司第
宁德时代复盘宁德时代300750全名宁德时代新能源科技股份有限公司。专注于新能源汽车动力电池系统储能系统的研发生产和销售,致力于为全球新能源应用提供一流解决方案,核心技术包括在动力和储能电池领
通过nginx进行wss和ws协议转换项目场景一个im项目在测试准备上线的时候,发现微信小程序在正式阶段只支持wss协议问题描述提示发现微信小程序在正式阶段只支持wss协议,由于通信采用https,所以ws协议无法直接
电动汽车锂电池能量密度提升10倍的希望!量子技术频获重要进展量子对于很多人来说,可能是个高深的概念,类似于玄学一样的存在。但是最近连续不断的技术进展证明量子并不是一个没有实际应用的遥远概念,选择了正确的问题,就可以完成有非凡影响力的工作。目
快看中兴通讯一季度营收微增至279。3亿元,未来以双曲线促增长记者陆柯言4月25日,中兴通讯(000063)发布了2022年第一季度报告。报告显示,2022年13月,中兴通讯实现营业收入279。3亿元,同比增长6。4归属于上市公司普通股股东的
欧盟通过!主要针对谷歌亚马逊据路透社布鲁塞尔消息,当地时间23日欧盟27国官员和议员们经过16个小时的谈判,通过了旨在对大型科技企业网络内容进行严格管理的欧盟数字服务法案。报道说,根据欧盟数字服务法案,欧盟可
十大经典排序(3)快速排序快速排序概念快速排序(QuikSort)是从冒泡排序算法演变而来的,实际上就是在冒泡排序基础上的递归分治法。快速排序在每一轮挑选一个基准元素,使得比其大的元素移动到一边,比其小的移
性能测试中QPS取样器和RT取样器之前写过一个性能测试框架中QPS取样器实现,总体思路是通过一个异步工具类com。funtester。frame。execute。Progress来统计各个线程自己的统计数据(响应时