当前位置: 首页 > news >正文

企业开发网站用什么技术北京网站设计公司yy成都柚米科技15

企业开发网站用什么技术,北京网站设计公司yy成都柚米科技15,规划设计公司合作加盟成立分公司,网页广告目录 1. 写在前面2. 环境搭建3. 卷积神经网络4. 数字手写体识别实现 1. 写在前面 这是我的本科毕设#xff0c;今天终于差不多降完重了哈哈#xff0c;总共耗时一个半月#xff0c;写完赶紧趁热打铁来记录一下整个学习过程。本文是基于你了解了lenet-5模型结构进行的手写体识… 目录 1. 写在前面2. 环境搭建3. 卷积神经网络4. 数字手写体识别实现 1. 写在前面 这是我的本科毕设今天终于差不多降完重了哈哈总共耗时一个半月写完赶紧趁热打铁来记录一下整个学习过程。本文是基于你了解了lenet-5模型结构进行的手写体识别系统设计包括手写体数字识别与手写体汉字识别准确率分别达到了99.52%和93.64%左右在本文里不会去详细介绍有关lenet-5模型的各层原理这个信息来源特别多但是会对编写代码的每一步进行详细解释鉴于我的学习历程发现很多博文代码没有解释因此我觉得是特别适合了解理论但不会编代码的小白学习的。 2. 环境搭建 先说一下我的实验环境:Anaconda2019.10PycharmTensorflow2. 1。电脑配置是系统windows10CPUi5-7200u GPUGeForce 920MX计算能力应该是5。原以为环境搭建应该是挺简单的但是在遇坑的时候才发现这里面还是有很多的学问的如果没有了解这方面的知识后面很容易出现很多意想不到的“惊喜”。这里要着重推荐一下北大的tensorflow笔记第一课便是环境的搭建后续的视频也是非常值得去学习。如果觉得看视频比较麻烦也可以直接看一下我的这一篇文章。 搭建成功后下面让我们开始迷人的深度学习之旅吧 3. 卷积神经网络 卷积神经网络的开篇之作LeNet-5产生于1998年从根本来说CNN就是一个多层感知机基本思想是局部连接、权值共享与采样。卷积其实就是卷积计算在图像分类问题的卷积运算中每个像素pixel代表一个神经元neural cell同一个卷积核Convolution kernel)内每个像素所在神经元连接上一层部分神经元这便是局部连接第 m层特征图Feature Map与第 m-1层特征图建立连接时,第 m-1层的不同神经元连接相同的神经元会共享权重将部分像素映射为新的像素值输出为第 m1层特征图。     采样是在时间或者空间上对输入特征图进行降低分辨率的处理保持了网络的空间不变性。这三种特点使得在处理二维图像的问题上图像可以直接作为网络的输入有效解决了传统识别算法中特征提取难的问题尤其是在输入数据的扭曲上具有很强的鲁棒性和网络泛化能力等。 卷积计算 本篇论文主要是以实践为主因此在这只做简单的介绍。有关LeNet-5模型的结构及卷积网络训练原理需要大家自行了解下面咱们直接奔入正题 4. 数字手写体识别实现 我采用的是MNIST数据集该数据集是封装在keras库的datasets里面可以直接调用。本文我是用keras库直接堆叠网络结构适合新手下面直接看代码。 卷积神经网络训练六步法 第一步import import tensorflow as tf from matplotlib import pyplot as plt from net import net1, net2, net3 # 这里是我自己搭建的三个网络 from tensorflow.keras.optimizers import Adam # 优化器 from tensorflow.keras.preprocessing.image import ImageDataGenerator # 数据增强函数 from tensorflow.keras.callbacks import ReduceLROnPlateau # 回调学习率函数第二步加载数据集 mnist tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) mnist.load_data() # x_train.shape:(60000,28,28)y_train.shape:(10000,28,28) # 说明mnist数据集训练集与测试集样本分别为60000个、10000个图像数据为28*28的像素矩阵整体训练集与测试集为三维张量 # y_train.shape:(60000,) # 标签是数值一维张量# 将训练集转变为四维张量并归一化 # 这里转为四维张量是因为keras库的卷积层要求输入为四维张量归一化是方便网络训练 x_train x_train.reshape(-1, 28, 28, 1) / 255.0 x_test x_test.reshape(-1, 28, 28, 1) / 255.0# 把标签转成独热码一维的概率向量这里跟后面选择的损失函数与评价指标有联系 # 因为加载的数据集标签都是数值形式如果选用交叉熵损失函数Categorical_Crossentropy为损失函数就需要转变独热码形式 # y_train utils.to_categorical(y_train, num_classes10) # y_test utils.to_categorical(y_test, num_classes10)第三步kears.Sequential # 搭建卷积神经网络 model tf.keras.Sequential([Conv2D(input_shape(28, 28, 1), filters32, kernel_size(5, 5), activationrelu, paddingsame),MaxPool2D(pool_size(2, 2)),Conv2D(filters32, kernel_size(5, 5), activationrelu),MaxPool2D(pool_size(2, 2), strides2),Conv2D(filters64, kernel_size(3, 3), activationrelu),Conv2D(filters64, kernel_size(3, 3), activationrelu),Flatten(),# 输出层Dense(10, activationsoftmax)]) # 打印网络结构 model.summary()第四步 model.compile 模型设定优化器、损失函数、评价指标的选用 optimizer Adam() # 一般都选 adam优化器默认学习率为1e-3这里我们选用另外一种交叉熵函数Sparse_Categorical_Crossentropy和准确率评价指标sparse_categorical_accuracymodel.compile(optimizeroptimizer, losstf.keras.losses.SparseCategoricalCrossentropy(from_logitsFalse),metrics[sparse_categorical_accuracy])# 回调学习率这个目的是为了提高准确率如果准确率迭代3次还没有增长就降低学习率为原来的0.5倍最低只能降到1e-5 # 经过我的一些实验结果最后发现acc与loss曲线会收敛的更加平滑 learning_rate_reduction ReduceLROnPlateau(monitorval_sparse_categorical_accuracy, patience3, modeauto,verbose1, factor0.5, min_lr1e-5)# 数据增强增强模型的泛化能力是防止过拟合的一种方法 data_augment ImageDataGenerator(rotation_range10, zoom_range0.1, width_shift_range0.1, height_shift_range0.1,horizontal_flipFalse, vertical_flipFalse)第五步model.fit或者model.fit_generator 模型训练 # 训练模型每喂入32组数据打乱样本迭代100次verbose是日志输出形式有123默认为1表示每个banch都输出2表示一行一行的输出3表示不输出 history model.fit_generator(data_augment.flow(x_train, y_train, batch_size32), epochs100, verbose2,validation_data(x_test, y_test), callbacks[learning_rate_reduction], shuffleTrue)# 保存模型因为本模型是我优化之后的所以这里直接保存下来运行结果是输出一个h5文件保存了模型的结构与参数后面的GUI设计会用到这个文件 model.save(jun_model1.h5)第六步model.evaluate # 评估模型打印测试集loss和acc loss, acc model.evaluate(x_test, y_test, verbose0) print(训练完成\n) print(Test loss is {:5f}.format(loss)) print(Test accuracy is {:5.2f}% .format(100 * acc))在这里我还加了一个可视化代码几乎适用于每一个网络注意如果你的损失函数和准确率不是Sparse_Categorical_Crossentropy和sparse_categorical_accuracy那么对应的acc与val_acc就要改写代码。 # 训练集和验证集的acc和loss曲线可视化 acc history.history[sparse_categorical_accuracy] val_acc history.history[val_sparse_categorical_accuracy] loss history.history[loss] val_loss history.history[val_loss] plt.subplot(1, 2, 1) plt.plot(acc, labelTraining Accuracy) plt.plot(val_acc, labelValidation Accuracy) plt.title(Training and Validation Accuracy) plt.legend()plt.subplot(1, 2, 2) plt.plot(loss, labelTraining Loss) plt.plot(val_loss, labelValidation Loss) plt.title(Training and Validation Loss) plt.legend() plt.show()训练结束loss曲线与acc曲线如下图所示 发现误差与准确率都收敛说明网络训练良好再看结果发现识别准确率达到了99.52%网络训练非常成功 创作中·······
http://www.hkea.cn/news/14413558/

相关文章:

  • 有关电子商务网站建设与维护的书籍wordpress数据库名字
  • 做预售的网站wordpress 判断页面id
  • 怎么在百度做原创视频网站wordpress中如何添加面包屑
  • 朝阳网站建设设计签名的软件
  • cn 域名网站二级网站怎样做
  • 织梦怎么做中英文双语网站山东网络推广图片
  • 门户网站 建设方案专业团队照片
  • 焦作网站建设费用怎样自己做商场网站
  • 贵阳市观山湖区网站建设辽宁做网站的公司
  • 软件园二期做网站的公司有哪些广东建设项目备案公示网站
  • 网站建设 牛商网技术提供2345网址导航官方网站
  • 建设网站有什么作用是什么西安网络建设公司
  • 投资建设网站首页做网站 源代码
  • 网站建设是否包含等保做国际贸易哪个网站比较好
  • 怎样架设网站win2008做的网站打不开
  • 网站哪家做得好网站左边logo图标怎么做
  • 网站为何改版江宁区住房和城乡建设局网站
  • wordpress网站运行时间代码建设网站的风险分析
  • 手机网站如何制作免费设计公司推广渠道
  • 清远做网站哪家好营销网站的优势是什么
  • 山东微商网站建设做类似淘宝的网站
  • 怎么建自己的销售网站在手机制作网站
  • 网站引导页下载石材做网站
  • 资阳网站建设资阳wordpress 维护插件
  • 找培训学校去哪个网站环保网站模板 html
  • 网站设置银联密码wordpress注册简化
  • 福田我要做网站优化比较好百度关键词推广一年多少钱
  • 义县网站建设百度搜索站长平台
  • win不用iis做网站云南网站设计方案
  • 产品单页营销型网站模板下载平面设计类的网站