python基于PaddleOCR的文本识别GUI程序

C#调用Python脚本 PaddleOCR-GUI 每种语言都有每种语言的优势,Python由于其强大的生态,很多任务通过调用包就可以实现,那么学会从C#项目中调用Python脚本完成任务就很重要。C#调用Python代码有多种方式,如果Python那边内容比较多,可以考虑起一个Web Api进行调用,如果只是一个简单的脚本而且不需要频繁调用,那么可以考虑使用Process类创建一个进程来调用,如果有几个方法,并且需要进行数据交互,并可能会频繁调用,那么可以考虑使用pythonnet。 阅读详情

python基于PaddleOCR的文本识别GUI程序

1.PaddleOCR 的组成

PaddleOCR 包含多个模块,主要分为两部分:
文本检测:检测图像中的文本区域。
文本识别:识别文本区域中的具体文字。
此外,PaddleOCR 还支持多语言识别、表格识别、方向分类等功能。

2. 模型规模

PaddleOCR 提供了多种预训练模型,模型规模从小到大都有:

2.1 轻量级模型:如 PP-OCRv3,模型较小,适合移动端或嵌入式设备。

2.2 高精度模型:如 PP-OCRv3-server,模型较大,适合对精度要求较高的场景。

这些模型的规模远小于典型的“大模型”(如 GPT、BERT 等),但它们针对 OCR 任务进行了优化,能够在较小的模型规模下实现较高的精度。

3. 本程序GUI界面

主界面

功能 1:

可以整个图片进行文字识别。
全图识别

功能 2 :

对图片所选区域进行识别文字
区域识别

4. 核心代码

(https://download.youkuaiyun.com/download/java_marvel/90291417)[数据包]

class ImageRecognition(QtWidgets.QMainWindow):
    def __init__(self):
        super(ImageRecognition, self).__init__()
        # imagePath
        self.filePath = ''
        self.all_screens = []
        self.shot_screens = []

        self.resize(1200, 800)
        self.setWindowTitle("A+ KPD Image-recognition Tool")
        self.setWindowIcon(QtGui.QIcon("🍳"))
        # central widget
        centralwidget = QtWidgets.QWidget(self)
        self.setCentralWidget(centralwidget)
        # central widget 里面的 主 layout
        mainLayout = QtWidgets.QVBoxLayout(centralwidget)

        # UI Up page
        topLayout = QtWidgets.QHBoxLayout()
        self.label_ori_image = QtWidgets.QLabel(self)
        self.label_treated_image = QtWidgets.QLabel(self)
        self.label_ori_image.setMinimumSize(520, 400)
        self.label_treated_image.setMinimumSize(520, 400)
        self.label_ori_image.setStyleSheet("border: 1px solid #D7E2F9;")
        self.label_treated_image.setStyleSheet("border: 1px solid #D7E2F9;")

        topLayout.addWidget(self.label_ori_image)
        topLayout.addWidget(self.label_treated_image)
        mainLayout.addLayout(topLayout)

        # UI Down Page
        groupBox = QtWidgets.QGroupBox(self)

        bottomLayout = QtWidgets.QHBoxLayout(groupBox)
        self.textLog = QtWidgets.QTextBrowser()
        self.textLog.setStyleSheet("border: 1px solid #D7E2F9;")
        bottomLayout.addWidget(self.textLog)

        mainLayout.addWidget(groupBox)

        # right button
        btnLayout = QtWidgets.QVBoxLayout()
        self.imageBtn = QtWidgets.QPushButton("🎞 图片")
        self.startBtn = QtWidgets.QPushButton("◀ 开始")
        btnLayout.addWidget(self.imageBtn)
        btnLayout.addWidget(self.startBtn)
        bottomLayout.addLayout(btnLayout)

        self.imageBtn.clicked.connect(self.openImage)
        self.startBtn.clicked.connect(self.recognition)

        # 获取剪贴板
        self.clipboard = QApplication.clipboard()

    def recognition_txt(self, data):
        import DafaIt
        # 文字识别
        # 识别范围 (起始x, 起始y, 识别宽, 识别高)
        a1 = DafaIt.zi((data[0], data[1], data[2], data[3]))
        print(self.all_screens)
        print(a1)
        self.textLog.append(a1)

    def keyPressEvent(self, event):
        """ 处理键盘事件,当按下 Ctrl+V 时粘贴图片 """
        if event.modifiers() == Qt.ControlModifier and event.key() == Qt.Key_V:
            self.paste_image_from_clipboard()

    def paste_image_from_clipboard(self):
        """ 从剪贴板获取图片并显示到 QLabel 上 """
        mime = self.clipboard.mimeData()

        # 确保剪贴板内容是图片
        if mime.hasImage():
            image = self.clipboard.image()
            pixmap = QPixmap.fromImage(image)
            self.label_treated_image.setPixmap(pixmap.scaled(self.label_treated_image.size(), Qt.KeepAspectRatio))
        else:
            self.label_treated_image.setText("No image found in clipboard.")

    def openImage(self):
        # 打开文件对话框让用户选择图片
        filePath, _ = QtWidgets.QFileDialog.getOpenFileName(self, "选择图片", "", "图片文件 (*.png *.jpg *.bmp *.jpeg)")

        if filePath:
            # 加载并显示图片
            self.pixmap = QPixmap(filePath)
            self.label_ori_image.setPixmap(self.pixmap.scaled(self.label_ori_image.size(), QtCore.Qt.KeepAspectRatio))
            label_pos = self.label_ori_image.mapToGlobal(QtCore.QPoint(0, 0))  # 获取 label 左上角的屏幕坐标
            label_x = label_pos.x()
            label_y = label_pos.y()


            # 获取 QLabel 的大小
            label_width = self.label_ori_image.width()
            label_height = self.label_ori_image.height()

            # 输出坐标和尺寸
            # self.textLog.append(f"Label 位置:({label_x}, {label_y})")
            # self.textLog.append(f"Label 尺寸:{label_width} x {label_height}")

            # 也可以将图片路径输出到日志
            self.textLog.append(f"选择的图片路径: {filePath}")

            self.filePath = filePath
            self.all_screens.append(label_x)
            self.all_screens.append(label_y)
            self.all_screens.append(label_width)
            self.all_screens.append(label_height)

        else:
            QMessageBox.warning(self, "Notice", "请先选择图片!")

    def recognition(self):

        if self.filePath != "":
            self.textLog.clear()
            if self.label_treated_image.pixmap() is not None:
                label_tre = self.label_treated_image.mapToGlobal(QtCore.QPoint(0, 0))  # 获取 label 左上角的屏幕坐标
                label_x = label_tre.x()
                label_y = label_tre.y()

                # 获取 QLabel 的大小
                label_width = self.label_treated_image.width()
                label_height = self.label_treated_image.height()

                # 输出坐标和尺寸
                self.textLog.append(f"Label 位置:({label_x}, {label_y})")
                self.textLog.append(f"Label 尺寸:{label_width} x {label_height}")

                self.shot_screens.append(label_x)
                self.shot_screens.append(label_y)
                self.shot_screens.append(label_width)
                self.shot_screens.append(label_height)

                # recognition txt
                self.recognition_txt(self.shot_screens)
            else:
                # recognition txt
                self.recognition_txt(self.all_screens)
        else:
            QMessageBox.warning(self, "Notice", "请先选择图片!")



app = QtWidgets.QApplication([])
window = ImageRecognition()
window.show()
app.exec_()

5. 总结

PaddleOCR 提供了多个预训练模型,例如:

PP-OCRv3:轻量级模型,适合移动端和嵌入式设备。
PP-OCRv3-server:高精度模型,适合服务器端使用。
PP-Structure:用于表格识别和文档结构分析。

这些模型的规模通常较小,但通过优化和蒸馏技术,能够在保持较高精度的同时减少计算资源需求。

PaddleOCR 专注于 OCR 任务的工具库。它提供了多种规模的模型,适合从移动端到服务器端的各种应用场景。虽然模型规模较小,但通过针对性的优化,PaddleOCR 在 OCR 任务中表现出色,是文本检测与识别领域的优秀工具。

成功解决-PaddleOCR打包exe--Pyinstaller 一、首先在虚拟环境中能够成功运行, 二、关闭 多进程,否则当运行exe时电脑会有10多个 main.exe 进程,电脑内存占用直接90%。 找到所在环境下的 image.py 文件 我的是 “D:\virtualenv\OCR\Lib\site-packages\paddle\dataset\image.py” 把这一部分代码 注释掉 ```python if six.PY3: import subprocess import sys import_cv2_proc = subpr 阅读详情

相关推荐

C#与Python无缝交互:pythonnet实战PaddleOCR-GUI开发(附避坑指南)

本文详细介绍了如何使用pythonnet实现C#与Python的无缝交互,以PaddleOCR-GUI开发为例,提供环境配置、PaddleOCR集成、异步调用、性能优化和部署实战的完整指南。特别强调版本匹配、内存管理和线程安全等关键点,帮助开发者避免常见陷阱,提升开发效率。

weixin_33712987的博客 333

Python 库pyautogui 0.9.52的下载、安装和使用

官方下载地址: https://pypi.org/project/PyAutoGUI/PyAutoGUI-0.9.52.tar.gz(55.9 kB) 当前最新版本0.9.52(Oct 7, 2020),下载、解压然后安装,如下: C:\Program Files\Python37\PyAutoGUI-0.9.52>..\python setup.py install C:\Program Files\Python37\lib\distutils\dist.py:274: UserWarn..

汉阳Hann's Home 2万+

PaddleOCR识别框架解读[09] 文本识别--从训练到部署全流程

PaddleOCR识别框架解读[09] 文本识别--从训练到部署全流程

我是天才很好 1736

PaddleOCR—图片文字识别提取—快速使用教程

Paddle-OCR 属于Paddle 框架其中的一个应用,Paddle 除了 OCR 之外还有许多其它好玩的模型,关键开发者提供有训练好的预权重文件、降低了使用门槛。

weixin_45897172的博客 2万+

STM32F030C8烧录实战:用J-Link Commander实现一键批量烧写(附完整脚本)

本文详细介绍了如何使用J-Link Commander工具链实现STM32F030C8的一键批量烧录,包括环境配置、批处理脚本设计、命令脚本解析以及生产环境实战技巧。通过自动化烧录流程,显著提升效率并降低人为错误,特别适合量产和频繁迭代的开发场景。

weixin_30505225的博客 462

ROS2节点通信实战:用C++手写一个‘智能小车’控制模型(附完整代码)

本文详细介绍了如何使用ROS2和C++构建一个智能小车控制模型,涵盖运动控制节点、电池管理服务、参数动态配置和Rviz可视化等核心功能。通过实战项目演示ROS2节点通信机制,帮助开发者快速掌握机器人开发的关键技术,并提供了完整的代码实现和系统集成方案。

weixin_30607029的博客 262

PaddleOCR文字识别实践(一)

1、PaddleOCR介绍 百度深度学习框架PaddlePaddle开源的OCR项目PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库,助力使用者训练出更好的模型,并应用落地。PaddleOCR包含丰富的文本检测、文本识别以及端到端算法。 PaddleOCR特性: 超轻量级中文OCR模型,总模型仅8.6M 单模型支持中英文数字组合识别、竖排文本识别、长文本识别 检测模型DB(4.1M)+识别模型CRNN(4.5M) 实用通用中文OCR模型 多种预测推理部署方案,包括服务部署和端侧部

fengyeer20120的博客 9649

深度学习论文: AnomalyDINO: Boosting Patch-based Few-shot Anomaly Detection with DINOv2

通过将DINOv2模型适应到一次性和少量异常检测中,并专注于工业应用少量异常检测。实验表明,这种方法不仅与现有技术相匹敌,甚至可以在许多设置中超越它们。我们提出的仅视觉方法AnomalyDINO基于补丁相似性,能够实现图像级别的异常预测和像素级别的异常分割。该方法在方法论上很简单,无需训练,因此不需要任何额外的数据进行微调或元学习。

mingo_敏 1904

使用paddleocr实现图片文字智能提取

PaddleOCR是由百度开发的一款开源光学字符识别(OCR)工具,基于PaddlePaddle深度学习框架。它专注于提供轻量级、灵活且高效的OCR解决方案,旨在帮助开发者和研究人员在各种应用场景中快速部署OCR功能。PaddleOCR涵盖了OCR的全流程,包括文本检测、文本识别和文本校正等环节。

十年以上架构设计经验,专注于软件架构和人工智能领域,对机器视觉、NLP、音视频等领域都有涉猎 8536

计算机专业保研攻略(一):个人定位与院校推荐(必看干货)

写在最前 又是一年保研季,作为过来人,我深知保研就是一场信息战。在保研过程中,需要注意的信息太多了,最初我也因为经验不足,走了不少弯路。我写下这篇博客,希望能帮助更多有需要的同学。 怎样做好保研信息分析 我想举几个发生在我身边真实的例子: A同学推免排名不如B同学,但A保研去向比B同学好很多; C同学在年级里成绩并不算突出,但他拿到了最好的offer; D、E同学纷纷圆梦北大、浙大等名校,但是他们的成绩似乎并不突出; F同学取得了目标院校夏令营offer,但没有拿到本校推免资格; G同学认为自己拿不到推免

乔卿的博客 8391

ConvNeXt 系列改进:二次创新 ConvNeXt:结合 RepVGG 结构重参数化,训练多分支、推理单路

2026年的视觉模型赛道呈现出一种有趣的“返璞归真”趋势——在Transformer狂飙数年之后,卷积网络正以全新的姿态回归。这其中,ConvNeXt无疑是纯卷积阵营中最耀眼的明星。从2022年Meta AI首次提出至今,ConvNeXt系列已经走过了近四年的演进之路,衍生出ConvNeXt V2、E-ConvNeXt等多个增强版本。ConvNeXt的7×7深度卷积带来了不错的感受野,却也埋下了推理效率的隐患。

ZXSXJ的博客 234

python+paddleocr 进行图像识别、找到文字在屏幕中的位置

最近在做自动化测试,因为是处理过的界面,所以使用pywinauto,LDTP获取控件进行操作的方法不可行,于是选择使用pyautogui进行图像识别与键盘鼠标控制。但是单独使用pyautogui测试效率很低,并且pyautogui图片识别并没有opencv识别率高,所以需要结合其他图像库使用。在使用的过程中发现,仅仅使用图像识别有时匹配度比较低,使用opencv进行图像识别定位,是图像像素太小查找成功的几率大大降低,于是想到使用OCR文本识别的方法对其进行查找,结合在一起使用,大大提高了工作效率。

啵啵啵啵博客 3万+

CKA-CN考试之路----16

所以结合本题,如果有多个文件中都存在同一个值,务必统一,或者修改最后一个次序的文件。中以不同的文件名来区分不同目的的配置会更有利于阅读.就像本题中的。但当有多个文件中存在同一个参数的不同值,最后会生效哪个值?中,但随着配置越来越多不怎么容易阅读.当多个文件同时存在一个参数,但值又不同。有时候我们会将所有内存参数全部写在。确认服务状态(2个红框中的内容)

Q先生 301

基于paddleocr制作的截图+文字识别程序,非接口,利用自身GPU计算

【代码】基于paddleocr制作的截图+文字识别程序,非接口,利用自身GPU计算。

2401_83227754的博客 2245

基于 STM32 的乒乓球发球机控制系统设计与实现

乒乓球发球机是一种能够按照预设参数自动、连续发出乒乓球的训练设备。本系统以 STM32F103C8T6 为主控核心,通过控制实现球速调节、实现落点与旋转方向控制、实现出球节奏控制,并配合 OLED 显示与按键人机交互,实现速度、频率、落点、旋转四大参数的可调发球训练。

weixin_42300449的博客 210

DFT笔记 DC/AC mode与Func

DFT scan可以分为DC和AC两种,区别如下图。

m0_61544122的博客 5729

C#调用Python脚本的方式(一),以PaddleOCR-GUI为例

每种语言都有每种语言的优势,Python由于其强大的生态,很多任务通过调用包就可以实现,那么学会从C#项目中调用Python脚本完成任务就很重要。C#调用Python代码有多种方式,如果Python那边内容比较多,可以考虑起一个Web Api进行调用,如果只是一个简单的脚本而且不需要频繁调用,那么可以考虑使用Process类创建一个进程来调用,如果有几个方法,并且需要进行数据交互,并可能会频繁调用,那么可以考虑使用pythonnet。

mingupup的博客 1366

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C#调用Python代码的方式(二),以PaddleOCR-GUI为例

C#调用Python代码的方式(二),以PaddleOCR-GUI为例

寒冰屋的专栏 192

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

AIGC(生成式AI)试用 40 -- 程序(Python + OCR)-1

AIGC(生成式AI)试用 39 -- 程序(Python + OCR)-1

Rolei的博客 6701

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 【java项目--校园疫情管理】
下一篇: 基于YOLOv8模型训练之图像特征标注程序
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值