深度学习实战4-卷积神经网络(DenseNet)数学图形识别+题目模式识别

文章目录

一、前期工作

  1. 导入库
  2. 数据集加载
    二、构建CNN模型
    三、训练过程曲线函数
    四、训练模型函数
    五、训练模型与结果
    六、验证

大家好,今天给大家带来一个卷积神经网络(CNN)数学图形识别项目(简单入门版),这个是人工智能解题的基础,机器首先通过题目识别出题目中的文字和图形,读懂题目的含义,这个是个相对复杂的过程。就在今年的1月4日,麻省理工学院等四所高校的联合研究团队,发布了一项最新研究成果:他们开发了一个神经网络,可以解答出微积分、线性代数等大学数学题。不管是要求计算数值,还是写方程式,或者画出函数图形,都能轻易解答,正确率达到了100%。要知道,在短短几个月前,人工智能解答类似的题,最高正确率不到10%。
解数学题不是直接算公式,而是需要你去理解文字,此外,有的题还需要联系上下文,并且包括了一些隐含条件。比如,一道概率论的题目,问:“在扑克游戏中,拿到两副对子的概率是多少?”这道题在人看来很清楚,但是对于计算机来说,其实是有很多隐含条件的。比如,一副扑克有54张牌、4种花色+两张鬼牌等等。人工智能不知道这些隐含条件,就没法算题。

一、前期工作

1.导入库

import tensorflow as tf
# from keras import keras.layers
import matplotlib.pyplot as plt
from time import *
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Dropout,MaxPooling2D,Flatten,Conv2D,experimental

2. 数据集加载

data_dir = "./data/图形识别训练"batch_size = 12
img_height = 224
img_width = 224train_ds = tf.keras.preprocessing.image_dataset_from_directory(data_dir,validation_split=0.2,subset="training",seed=12,image_size=(img_height, img_width),batch_size=batch_size)val_ds = tf.keras.preprocessing.image_dataset_from_directory(data_dir,validation_split=0.2,subset="validation",seed=12,image_size=(img_height, img_width),batch_size=batch_size)

二、构建DenseNet模型

model = tf.keras.applications.DenseNet121(weights='imagenet')
model.summary()# 设置初始学习率
initial_learning_rate = 1e-3lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay(initial_learning_rate,decay_steps=5,      # 敲黑板!!!这里是指 steps,不是指epochsdecay_rate=0.96,     # lr经过一次衰减就会变成 decay_rate*lrstaircase=True)# 将指数衰减学习率送入优化器
optimizer = tf.keras.optimizers.Adam(learning_rate=lr_schedule)
model.compile(optimizer=optimizer,loss     ='sparse_categorical_crossentropy',metrics  =['accuracy'])

三、训练过程的曲线函数

def show_loss_acc(history):# 从history中提取模型训练集和验证集准确率信息和误差信息acc = history.history['accuracy']val_acc = history.history['val_accuracy']loss = history.history['loss']val_loss = history.history['val_loss']# 按照上下结构将图画输出plt.figure(figsize=(8, 8))plt.subplot(2, 1, 1)plt.plot(acc, label='Training Accuracy')plt.plot(val_acc, label='Validation Accuracy')plt.legend(loc='lower right')plt.ylabel('Accuracy')plt.ylim([min(plt.ylim()), 1])plt.title('Training and Validation Accuracy')plt.subplot(2, 1, 2)plt.plot(loss, label='Training Loss')plt.plot(val_loss, label='Validation Loss')plt.legend(loc='upper right')plt.ylabel('Cross Entropy')plt.title('Training and Validation Loss')plt.xlabel('epoch')plt.savefig('results/results_cnn.png', dpi=100)plt.show()

四、训练模型函数

def train(epochs):# 开始训练,记录开始时间begin_time = time()AUTOTUNE = tf.data.AUTOTUNEtrain_ds = train_ds.cache().shuffle(1000).prefetch(buffer_size=AUTOTUNE)val_ds = val_ds.cache().prefetch(buffer_size=AUTOTUNE)# print(class_names)# 加载模型# model = model_load(class_num=len(class_names))# 指明训练的轮数epoch,开始训练history = model.fit(train_ds,validation_data=val_ds,epochs=epochs)# todo 保存模型, 修改为你要保存的模型的名称model.save("models/cnn_fv.h5")# 记录结束时间end_time = time()run_time = end_time - begin_timeprint('该循环程序运行时间:', run_time, "s")  # 该循环程序运行时间: 1.4201874732# 绘制模型训练过程图show_loss_acc(history)

图形识别训练数集里面共有4类:circular(圆形),parabola(抛物线),square(正方形),triangle(三角形)
在这里插入图片描述triangle(三角形)
在这里插入图片描述square(正方形)
在这里插入图片描述

五、训练模型与结果

train(epochs=6)   #训练6次41/41 [==============================] - 218s 5s/step - loss: 1.5289 - accuracy: 0.7224 - val_loss: 21.6089 - val_accuracy: 0.0410
Epoch 2/6
41/41 [==============================] - 206s 5s/step - loss: 0.2921 - accuracy: 0.9204 - val_loss: 4.2023 - val_accuracy: 0.6393
Epoch 3/6
41/41 [==============================] - 210s 5s/step - loss: 0.0962 - accuracy: 0.9673 - val_loss: 0.4482 - val_accuracy: 0.9180
Epoch 4/6
41/41 [==============================] - 209s 5s/step - loss: 0.0406 - accuracy: 0.9898 - val_loss: 0.0980 - val_accuracy: 0.9672
Epoch 5/6
41/41 [==============================] - 205s 5s/step - loss: 0.0149 - accuracy: 1.0000 - val_loss: 0.0269 - val_accuracy: 0.9918
Epoch 6/6
41/41 [==============================] - 220s 5s/step - loss: 0.0061 - accuracy: 1.0000 - val_loss: 0.0220 - val_accuracy: 0.9918
该循环程序运行时间: 1269.1464262008667 s

测试和验证结果准确率图:
在这里插入图片描述
迭代6次后,训练集准确率高达100%,验证集准确率高达99.18%

六、验证

输入图片:
在这里插入图片描述
预测结果:parabola(抛物线)
后续将会通过OCR识别题目中的文字,以及Latex数学公式的识别,识别题目含义,最终结果调用抛物线的解题程序,进行简单的解题。
敬请关注,数据集的获取私信我!

往期作品:

深度学习实战项目

1.深度学习实战1-(keras框架)企业数据分析与预测

2.深度学习实战2-(keras框架)企业信用评级与预测

3.深度学习实战3-文本卷积神经网络(TextCNN)新闻文本分类

4.深度学习实战4-卷积神经网络(DenseNet)数学图形识别+题目模式识别

5.深度学习实战5-卷积神经网络(CNN)中文OCR识别项目

6.深度学习实战6-卷积神经网络(Pytorch)+聚类分析实现空气质量与天气预测

7.深度学习实战7-电商产品评论的情感分析

8.深度学习实战8-生活照片转化漫画照片应用

9.深度学习实战9-文本生成图像-本地电脑实现text2img

10.深度学习实战10-数学公式识别-将图片转换为Latex(img2Latex)

11.深度学习实战11(进阶版)-BERT模型的微调应用-文本分类案例

12.深度学习实战12(进阶版)-利用Dewarp实现文本扭曲矫正

13.深度学习实战13(进阶版)-文本纠错功能,经常写错别字的小伙伴的福星

14.深度学习实战14(进阶版)-手写文字OCR识别,手写笔记也可以识别了

15.深度学习实战15(进阶版)-让机器进行阅读理解+你可以变成出题者提问

16.深度学习实战16(进阶版)-虚拟截图识别文字-可以做纸质合同和表格识别

17.深度学习实战17(进阶版)-智能辅助编辑平台系统的搭建与开发案例

18.深度学习实战18(进阶版)-NLP的15项任务大融合系统,可实现市面上你能想到的NLP任务

19.深度学习实战19(进阶版)-ChatGPT的本地实现部署测试,自己的平台就可以实现ChatGPT

…(待更新)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36757.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

足球比赛分析小软件

1.支持固定格式比赛结果读取 2.支持简单查询 资源地址: http://download.csdn.net/detail/newbie724/4213958 下面是说明文档: Foot 使用方法 1.在File Location处输入样例文件的地址,注意要包含扩展名txt,现在只支持打开…

五个了解自己天赋优势的分析工具(二)盖洛普优势测评

盖洛普优势测评 盖洛普优势识别器(也叫克利夫顿优势评估),是盖洛普公司旗下⼀款王牌产品,是⼀个专⻔⽤来识别⼀个⼈隐形天赋、潜在优势、驱动⼒来源的⼯具,它可以帮助⼀个⼈科学认识⾃⼰。 它把⼈的思维⽅式、感受形…

我们研究了853场世界杯比赛,发现了这几条稳赔不赚的竞猜攻略

本文转载自大数据(ID:hzdashuju) 导读:世界杯开赛以来,据数据叔不完全统计,身边有66.6%的小伙伴上了天台,其中22.2%的人买了阿根廷赢、22.2%的人买了德国赢,还有22.2%的人买了巴西赢。剩下那33.…

再谈大数据之足球盘口赔率水位分析的思路与神准预测技巧

这两天看到CSDN上一篇同行写的有趣的话题,题目为: 浅谈大数据之足球盘口赔率水位分析的思路与神准预测技巧(一)_linwei_hello的专栏-CSDN博客 因为算是同行文章,本人也做足球大数据分析,手头上有全面的足…

PTA 2004年谷歌招聘题

题目 2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘。内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e 中最早出现的 10 …

文心一言 VS chatgpt (11)-- 算法导论2.3 7题 3.1 4~5题

四、2 ^ (n1)O(2 ^ n)成立吗? 2^(2n)O(2 ^ n)成立吗? 文心一言: chatgpt: 第一个式子不成立,第二个式子成立。 2 ^ (n1) O(2 ^ n) 该式不成立。按照大O符号的定义,如果存在正常数c和n0,使得n>n0时&#xf…

不作诗,只做事!国内首次,华为盘古大模型登Nature正刊!

来源:机器之心 千呼万唤始出来,华为的多模态千亿级大模型 「盘古」3.0 版来了。 自去年底以来,ChatGPT 的技术突破引爆了 AI 军备竞赛,国内外科技公司和机构接连发布了上百个大语言模型。 而在其中,有个玩家「没有出手…

调用阿里云语音转文本

文章目录 一、accessKeyId和accessKeySecret申请二、appKey申请三、调用接口代码 一、accessKeyId和accessKeySecret申请 二、appKey申请 创建项目既有 三、调用接口代码 安装包 pip install aliyun-python-sdk-core2.13.3# -*- coding: utf8 -*- import json import time…

文本生成视频Make-A-Video,根据一句话就能一键生成视频 Meta新AI模型

Meta公司(原Facebook)在今年9月29日首次推出一款人工智能系统模型:Make-A-Video,可以从给定的文字提示生成短视频。 Make-A-Video研究基于文本到图像生成技术的最新进展,该技术旨在实现文本到视频的生成,可…

ChatGPT加剧恐慌?4成AIoT开发者认为AI会产生意识 | 中国AIoT开发者报告正式发布...

作者 | 杨阳 出品 | CSDN(ID:CSDNnews) 据国际数据公司IDC预测,到2025年,全球IoT连接的设备数量将达到519亿,其中中国将达到80亿。尽管相较之前,近两年IoT的讨论热度有所消减,但并没…

图灵聊天机器人小程序

历时半年整理出了十多万字的学习笔记,目前依旧在更新 欢迎点赞和支持~🥳🥳🥳 博客 项目描述: 根据图灵API向聊天机器人发送聊天信息,并渲染返回的数据。具有清空聊天记录的按钮。本来是想上线…

15大不同领域问答对比,ChatGPT模型大战:国产版百度文心一言、昆仑万维天工能否击败GPT-4(含百度文心一言、昆仑万维天工个人内测体验测试邀请码获取方法,亲测有效)

目录 前言百度内测申请天工内测申请申请方式内测体验登录界面运行体验 内测对比基本问答事实性问答科普文写作小红书文案项目计划撰写古文理解模型的常识能力和反事实推理代码理解法律相关广告话术数字排序数值计算推理解题跨语言能力文生图 总结其它资料下载 前言 3月16日&am…

中国人工智能框架市场调研报告

随着众多人工智能项目从科研创新到产业落地,人工智能应用场景逐渐扩展,人工智能市场规模正在不断扩大。预训练大模型、“AI for Science”、“负责任的人工智能”等已成为全球学术界和产业界关注的焦点。而人工智能框架是模型算法开发的核心,是支撑人工智能技术发展和产业繁荣发…

C语言实现课程表

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #include<windows.h> #include<mmsystem.h> #pragma comment(lib,"WINMM.LIB")char course[99][99][99];void menu() //菜单显示 {printf("***…

安卓课程表

https://download.csdn.net/download/weixin_57836618/72364964

Android课程表客户端实现方案

客户端开发 1. 开发环境 开发平台&#xff1a;Android Studio 开发语言&#xff1a;Java api&#xff1a;Android 7.0 N api 24 2. 课程格子显示 ScrollView拉动显示下方格子&#xff0c;采用相对布局 即可自定义格子大小&#xff0c;方便阅读简略信息&#xff0c;并可下…

做个课程表吧(一)

手机端的课程表种类繁多&#xff0c;但电脑端的课程表种类却很少&#xff0c;也不支持自动导课。既然这样就让我们来造个课程表吧。 文章目录 获取课程表 制作课程表读取JSON数据获取课程格式化课程表创建窗体显示课程 全部代码 获取课程表 首先我们先去获取课程表。登录教务…

【微信小程序】课程表案例--0基础版

目录 &#x1f52e; 效果动图&#xff1a; &#x1f340;准备工具 &#x1f333;准备代码&#xff1a; &#x1f31e;部署项目 &#x1f9a0;修改课程时间 &#x1f9a0;修改课程内容 &#x1f9a0;修改标题 &#x1f9a0;修改底部导航栏 &#x1f34d;项目发布 &…

多表查询-学生表,班级表,课程表,班级课程表

多表查询&#xff1a; 学生表、班级表、课程表、班级课程表 -- 多对多 -- 班级表 CREATE TABLE banji( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR (10) NOT NULL ); INSERT INTO banji( name ) VALUES ( java1807 ),( java1812 ); SELECT * FROM banj…