多线程的效率问题(论坛帖子)

抓取csdn的数据 代码质量不行,后面采集起来卡,原因是正则我太菜了,没有开多线程采集。下面我举例: 目标页面是http://bbs.youkuaiyun.com/recommend_tech_topics,有图有真相: 看看采集后的效果: 下面是采集到的每个帖子楼主的内容以及一些简单的显示。图片之所以没有显示出来,因为csdn是用的一个专门的图片服务器,设置了防盗链,这个自己捣鼓下应该也可以绕过去。 阅读详情
 
问题: 用 ADO 加多线程,为什么感觉和单线程是一样的 , 我加分! ( 积分: 100, 回复: 13, 阅读: 366 )
分类: 多线程 ( 版主: g622, wjiachun )
来自: wpyzywpy, 时间: 2005-8-7 19:42:00, ID : 3159239
[ 显示: 小字体 | 大字体]
我的线程类定义 ****************************
type
    TtestThread = class(TThread) //
自定义线程
    protected
        qry: TADOQuery;          
        Ado: TADOConnection;
        procedure   Execute; override;        
        procedure   CreateConnectAdoProc;        //
创建连接 ADO
        procedure   OpenSqlProc;                 //
打开数据集
end;

procedure TtestThread.CreateConnectAdoProc;
var
    constr : string;
begin
    Qry := TADOQuery.Create(nil);
    Ado := TADOConnection.Create(nil);
    constr := '........'  //
略
    Ado.ConnectionString := constr ;     //
连接 ADO 串
    Ado.LoginPrompt:= false;
    if not Ado.Connected then
        Ado.Connected := True;
end;

procedure TtestThread.OpenSqlProc;
begin
    if Qry.Connection = nil then  Qry.Connection := Ado;
    Qry.Close;
    Qry.SQL.Clear;
    Qry.SQL.Text := strSql;
    Qry.Prepared;
    Qry.Open;
end;

procedure TtestThread.Execute;
var
    strSql : string;
begin
     inherited;
    FreeOnTerminate := true;
    CoInitialize(nil);
    CreateConnectAdoProc;//
创建连接 ADO
    strSql := 'select............'; //
略
    OpenSqlProc;           //
打开数据集
end;
线程类声明实现结束 ***********************************

具体操作 *************************************
procedure form1.Button1Click(Sender: TObject);
begin
       TtestThread.create(false);
       TtestThread.create(false);
       ....
       ....
end;
**********************************
结束
问题:
如果我用 1 个线程的话,如果执行后时间是 10 秒的话,
用 2 个的话就是 19 秒,几乎用多少个执行时间和一个的倍数都是一样的,
并没有看出查询效率有多快,我用的是 informix 数据库。 
 
来自: wzwcn, 时间: 2005-8-7 20:36:20, ID : 3159267
delphi 自带的那个 NetChat 例子的多线程我觉得也有点。。。
好象所谓的多线程也是先持行一个线程完了再持行另一个的 ~~~ (或者是我不理解)

哪位高手回答一下 ~~  
 
来自: vvyang, 时间: 2005-8-7 21:49:21, ID : 3159275
1 、采用多线程不会提高单 CPU 的处理能力,它多大能耐在那摆着呢;
2
、但是多线程可以提高 CPU 的使用效率,当执行中的任务等待资源时,它就退出 CPU 的占用,让给那些满足运行条件的线程来运行;
3
、各个线程频繁连接、关闭、打开数据库,你这样的 “ 多线程 ” 与单线程相比得不偿失吧。 
 
来自: wpyzywpy, 时间: 2005-8-7 21:18:05, ID : 3159298
vvyang:
按你的意思理解,是否我这种情况跟用单线程循环是一样的啦,
不知道那位高手用过,
如真的是这样的话,我 ............................  
 
来自: twosunsun, 时间: 2005-8-13 17:09:29, ID : 3165741
我用过采用多线程来保存数据 , 使用 Sql server 数据库 ,ADO 连接方式 ,, 我测试的结果是 : 两个线程比一个线程和三个线程都要快一些 .
我觉得有可能是 :
你在线程中去连接数据库 , 之后仅执行一次查询数据库的操作 , 所以效果不是很明显 . 你如果改成每个线程查询 100 次 , 也许可以看出两个线程快一些 .  
 
来自: kinneng, 时间: 2005-8-13 17:52:03, ID : 3165795
总处理时间都是一样的,甚至因为要不断切换,更慢 
 
来自: wpyzywpy, 时间: 2005-8-14 20:36:56, ID : 3166747
注:为了做这个实验,我特意去掉要查询表的 INDEX 的。
to kinneng:
对于 PC 机的处理器、网络的切换时间就算是 1 秒的话,我的一个查询语句就要 10 秒的话,这样一来,我开 10 个线程去分别查这个 SQL 的话,时间上和串行行是没什么两样的都是约 100 秒。我试过开好多个数的线程,时间和串行都差不多。
to twosunsun
:
我的多个线程查询的 SQL 都是一样的。所以就出现了时间的累加,我用的是 UNIX 的 INFORMIX 数据库。我的这个多线程的程序开了 2 个,每个 10 个线程,结果还是 100 秒,说明和 informix 客户端没关系。但是每个线程的查询 SQL 不同的时候,就能看出多线程比较快了。真实奇怪。 
 
来自: kinneng, 时间: 2005-8-14 22:21:04, ID : 3166831
真正的多线程要两个 CPU 才能实现,单 CPU 是切换时间片来模拟。 
 
来自: 行到水穷处, 时间: 2005-9-8 11:13:16, ID : 3196249
看了楼主连接 ADO 的用法,我发现我的代码和你的不一样

    ConnStr:=inifile.ReadString('DataBase','ConnString','');
    _ADOConnection.LoginPrompt:=false;
    _ADOConnection.ConnectionString:=ConnStr;
    try
      _ADOConnection.Open;//
这里不一样,请问这样的用法好吗?

要不要改回来??:
    if not _ADOConnection.Connected then
        _ADOConnection.Connected := True;
   
 
来自: sunstone, 时间: 2005-9-10 20:21:36, ID : 3200488
ConnStr:=inifile.ReadString('DataBase','ConnString','');
_ADOConnection.Connected := false;
    _ADOConnection.LoginPrompt:=false;
    _ADOConnection.ConnectionString:=ConnStr;
    try
      _ADOConnection.Open;//
这样好 
 
来自: tbarcode, 时间: 2005-9-16 17:27:50, ID : 3208330
单 CPU ,用一个线程就好了。
2CPU
,用 2 个就够了。
真想提高速度,用并行计算机啊。 
 
来自: survival, 时间: 2005-9-19 0:20:35, ID : 3209861
  其实,在数据库操作中,单线程也好,多线程也好,决定性能的因素不是程序结构,
真正的瓶颈是数据库的性能:
 
理论上,如果数据库服务能够提供高性能的并行计算(拥有多个处理单元硬件),那么多线程肯定性能要高一些(这时候处理一个请求和处理多个请求所耗费的时间很接近,当然并行任务数量要小于数据库的处理器数量),否则不会有明显的差距。
 
实际上,数据库系统的实现是很复杂的,不同情况下会有不同的表现,要取决于数据库响应请求的方式,比如限制执行线程的 cpu 占用,从而影响不同线程模型的性能表现。
 
如何决定呢?
 
如果是本地数据库,单线程足够了(不要告诉我你用的是 8cpu 的超级机器)
 
如果是远程库,那么复杂操作(比如批量提交数据)可以多线程,而且尽量做到不同线程访问不同的库或者表。尽量避免线程之间的读写冲突。
 
总之,多线程一般不会用于大幅度提升数据库操作的性能(要提高性能,应该从数据库结构和操作方法上下手),尤其非独占的数据库,多线程数据库操作主要目的是避免程序界面失去响应。建议不要在同一时间启动多个数据库操作线程,而是在主线程之外,用一个线程完成数据库操作。
 
罗嗦了半天,不知大家明白了没,说的不对的地方请高手指正。 
 
来自: survival, 时间: 2005-9-19 0:30:36, ID : 3209864
实际上,我认为大多数数据库系统在写入同一个库表时,为了保持数据完整性避免产生脏数据,都会对写入操作顺序执行,所以即便有多线程执行的条件(比如多处理器),多线程调用这时候看上去与单线程的也没什么区别。 
 
来自: sxzcm, 时间: 2005-12-5 12:04:42, ID : 3285945
我在写数据库频繁的任务中做了测试,在我的本本上,单 CPU , SQL 2000
单线程不间歇的写数据,可以做到每秒 14 条的写入速度,此时 CPU 占有 100 %,但是其他操作感觉并不慢。
然后我用多线程写入测试, 5 个线程分别写入,每线程写入一条记录之后,停 20ms ,那么,得到的写入合计速度是每秒 30 条。我把暂停时间换到 10ms 也没有提高。但是 CPU 占有降低到 40 - 50 %。我的防火墙本身占了 10 %左右。
感觉:多线程还是有些好处。
 
 
Python-爬虫 下载天涯论坛帖子 书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。为了爬取的高效性,实现的过程中我利用了python的threading模块,下面是threads.py模块,定义了下载解析页面的线程,下载图片的线程以及线程池。 阅读详情

相关推荐

爬虫之天涯论坛

爬虫之天涯论坛需求获取天涯论坛上某个关键字搜索出来的所有页面里面的每个帖子的楼主ID和回帖者的ID解决方法Python+正则表达式re.findall(pattern, string[, flags]) 搜索string,以列表形式返回全部能匹配的子串。str.find(str, beg=0, end=len(string)) 如果包含子字符串返回开始的索引值,否则返回-1import requ

zeng_w_j123的博客 5524

同时对同一张表进行插入、查询和更新操作

mysql常规知识,避免踩坑

yu15338397549的博客 6004

游戏论坛数据爬虫:利用Python爬取并分析游戏论坛帖子和评论数据

网络爬虫(Web Crawler)是一种自动化的脚本程序,用于访问网站,抓取网页数据并进行存储、分析等操作。爬虫广泛应用于搜索引擎索引、网站数据抓取、内容监控等领域。本文详细介绍了如何使用Python爬虫技术从游戏论坛中爬取帖子和评论数据,并进行基础分析。我们学习了如何使用Requests和进行网页数据抓取和解析,如何使用Pandas进行数据存储和处理,并进一步探讨了如何优化爬虫效率,应用多线程技术和Selenium爬取动态网页数据。

2201_76125261的博客 327

多线程执行同一函数出现执行时间也不一样的现象

问题: 双线程乃至4线程执行比较耗时的操作时,线程同时开始,线程结束时间不一样。表现现象如下: 1、执行for循环。for循环执行次数越少,多线程结束的时间差越小。同时开始的多线程执行同循环次数的单层for循环耗时比双层for循环结束时间差小。 2、执行图像处理算子时,图像像素越小,执行图像处理算子越快。通一图像像素时,执行简单的图像算子,多线程能同时开始与结束;多线程执行复杂的图像算子能同时开始,结束时间有时间差。 尝试解决方案: 双线程测试图像处理算子XxwImgOp。通过比较线程的开始...

weixin_44840658的博客 3026

天涯帖子下载工具v4.4:详解与应用

实现保存格式的定制功能首先需要明确需求和目标。根据前面的分析,我们需要提供一个易于使用的界面,允许用户选择不同的保存格式。这通常涉及以下步骤:界面设计:创建一个选项按钮或下拉菜单让用户选择保存格式。后端处理逻辑:编写代码来处理不同格式的转换和保存逻辑。文件系统操作:将转换后的内容保存为用户所选的格式。错误处理:确保在保存过程中捕捉并处理任何可能的错误。例如,以下是一个简单的代码块,用于演示如何在Python中使用内置的open()函数和json。

weixin_35414484的博客 656

Polars简明基础教程一:Polars快速入门

在这个例子中,我们将添加一个列,其中包含每个舱位中乘客的最大年龄。在Python中(而不是特指Polars),当我们将代码包裹在括号中时,我们可以在新行上调用一个新方法——在这种情况下是select。在这里,我们看到一个使用表达式API的简单示例,其中我们在select语句中选择Pclass、Name和Age列(我们将在第3节中深入了解select语句)。表达式是一个函数,它接受一个Series(或DataFrame中的列)作为输入,并返回一个Series(或DataFrame中的列)。

sosogod的博客 3878

多线程性能及效率问题

一、[多线程概要]  随着计算机技术的发展,编程模型也越来越复杂多样化。但多线程编程模型是目前计算机系统架构的最终模型。随着CPU主频的不断攀升,X86架构的硬件已经成为瓶,在这种架构的CPU主频最高为4G。事实上目前3.6G主频的CPU已经接近了顶峰。  如果不能从根本上更新当前CPU的架构(在很长一段时间内还不太可能),那么继续提高CPU性能的方法就是超线程CPU模式。那么,作业系统、应用程序...

cczakai的专栏 1187

Mac无管理员权限安装NVM全攻略(附国内镜像加速)

本文详细介绍了在Mac电脑无管理员权限的情况下,如何通过Git克隆方式安装Node版本管理工具NVM,并配置国内镜像源以加速下载。攻略涵盖环境检查、安装步骤、Shell环境变量配置、镜像加速设置以及常用命令和常见问题解决方案,帮助开发者绕过权限限制,高效管理Node.js版本。

weixin_29296241的博客 489

Python多线程爬虫实战:爬取论坛帖子及评论

本文介绍了一个Python多线程爬虫项目,用于爬取麻辣社区论坛"群众呼声"板块的帖子和评论数据。该爬虫使用requests库发送请求,BeautifulSoup解析HTML,通过多线程技术提高效率,最终将数据保存为CSV文件。文章详细讲解了技术选型、设计思路、关键代码实现及注意事项,包括如何解析列表页和详情页、多线程并发处理、数据清洗和存储等核心环节。该项目涵盖了网页解析、正则匹配、多线程等爬虫开发常用技术,读者可根据实际需求修改代码结构,构建自己的数据采集工具。

weixin_55008828的博客 1627

保姆级教程:用ArcGIS Pro搞定云南30米分辨率DEM地形图(附数据下载与配色方案)

本文提供了一份详细的ArcGIS Pro教程,指导用户如何制作云南30米分辨率DEM地形图。从数据下载、预处理到镶嵌与质量控制,再到地形分析与可视化,全流程覆盖云南复杂地形的处理要点。特别包含数据下载链接、配色方案及常见问题解决方案,适合地理信息分析新手和专业人士。

weixin_30467199的博客 309

手把手教你用STM32硬件SPI驱动BMI088陀螺仪(附完整代码)

本文提供了一份详尽的STM32硬件SPI驱动BMI088陀螺仪的实战指南。内容涵盖从硬件连接、SPI底层配置、驱动层封装到设备初始化、数据读取与同步策略,并深入探讨了数据处理、滤波融合及温度补偿等核心技巧,旨在帮助开发者构建稳定高效的IMU驱动框架,解决BMI088应用中常见的挑战。

quiet的专栏 529

python实现网络爬虫下载天涯论坛帖子

最近发现天涯论坛是一个挺有意思的网站,有各种乱七八糟的帖子足以填补无聊时候的空虚感,但是相当不爽的一件事就是天涯的分页模式下想连贯的把楼主的内容看完实在是太心酸了,一个999页的帖子,百分之九十都是无聊网友的灌水,有时候连续翻几十页才能找到楼主的一条内容。所以无聊之下,就打算写一个简单的爬虫,能一次性把某一个帖子下楼主的所有内容一次性的下载下来。好吧,说了这么多废话,现在开始讲点正事。 ...

578

微带线,带状线和接地共面波导的区别

微带线,带状线和接地共面波导的区别

sky_ying的博客 3万+

python discuz 爬_python实现网络爬虫下载天涯论坛帖子

最近发现天涯论坛是一个挺有意思的网站,有各种乱七八糟的帖子足以填补无聊时候的空虚感,但是相当不爽的一件事就是天涯的分页模式下想连贯的把楼主的内容看完实在是太心酸了,一个999页的帖子,百分之九十都是无聊网友的灌水,有时候连续翻几十页才能找到楼主的一条内容。所以无聊之下,就打算写一个简单的爬虫,能一次性把某一个帖子下楼主的所有内容一次性的下载下来。好吧,说了这么多废话,现在开始讲点正事。网页的地址形...

weixin_39945871的博客 252

YOLO11实战优化:长尾分布解决 | 引入Seesaw Loss配合YOLO11分类头,完美应对类别极其不平衡的现实业务场景

摘要: YOLO11在工业缺陷检测等长尾分布场景中面临尾部类别检测失效的问题,根源在于头部类别样本的负样本梯度压制了尾部类别的学习。传统方法如重采样、Focal Loss等效果有限。Seesaw Loss通过动态调整缓解因子和补偿因子,平衡类别间的梯度分布,结合YOLO11的解耦分类头、Anchor-Free设计和C2PSA/C3K2模块,显著提升尾部类别识别能力。文章详细解析了Seesaw Loss的数学原理,并提供了可直接集成到YOLO11的PyTorch实现代码,为长尾分布下的目标检测提供了实用解决方

2601_95807009的博客 252

Python 对接钉钉获取员工上一篇日报或周报内容

摘要:本文介绍使用Python对接钉钉API获取员工日报/周报的方法。首先需创建钉钉应用并开通日志权限,获取员工UserID。通过获取AccessToken进行鉴权,调用topapi/report/list查询日志记录,筛选最新日报/周报后,使用topapi/report/details获取详细内容。需注意权限控制、时间范围筛选和模板匹配等问题。文末提供完整代码示例,并建议扩展自动化触发、数据存储等功能。该方法适用于企业自动化获取员工工作日志的场景。

从技术实践立足,从项目管理方法论延伸思考 807

爬虫入门实践之多线程爬虫

有的爬重只需要单线程就可以完成,而有的爬虫可以拆分成多线程实现,能够提高爬虫效率。比如爬虫入门实践之爬取虎扑论坛帖子一文中,介绍使用的是用单线程实现的,首先在首页找出所有的url,然后遍历url,找出相关信息。其实,仔细分析,可以发现,该例子可以使用多线程来实现,比如一个线程用于获取url,一个线程根据已有的url来爬取相关信息,这样一来,总的等待时间更短了。因此,本文针对改写该例...

carson0408的博客 2395

PostgreSQL 实战:行级安全策略(RLS)详解

PostgreSQL的行级安全(RLS)机制实现了细粒度的数据访问控制,通过动态过滤行数据满足多租户隔离、隐私保护等需求。本文系统介绍了RLS的核心原理、配置方法及实践建议:1) 启用RLS后需定义策略,通过USING和WITH CHECK条件控制访问;2) 适用于SaaS、医疗金融等场景,但需注意COPY命令、外键等特殊情况;3) 建议配合会话变量、索引优化和文档化策略使用。文章还提供了多租户隔离等实战案例,并分析了RLS对查询性能的影响及优化方案。RLS将安全控制下沉至数据库层,显著提升应用安全性和可维

数据知道的博客 3152

python3论坛_Python3 论坛图片采集脚本

#!/usr/bin/env python3import urllib.requestimport urllib.errorimport threadingimport reimport osimport hashlibimport timeimport sysroot_url = "{Your URL}" # 要访问的论坛的根地址,必须以斜杠结尾,如http://bbs.xx.com/root...

weixin_39589394的博客 214

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

7.论坛模块的具体实现

对于用户App端接口,我们的目标是提供一些常用的功能,例如创建帖子、评论,删除帖子、评论和查询帖子、评论等。这些接口将允许用户在论坛上发布内容、参与讨论和管理他们自己的帖子。我们还可以为用户提供其他附加功能,例如点赞、收藏等。 对于管理后台接口,我们的目标是提供一些管理功能,例如审核帖子、评论、置顶帖子和删除不当内容等。这些接口将使管理人员能够监控和管理论坛上的内容,确保论坛保持秩序和活跃。

weixin_65266380的博客 1251

深度学习工具包 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")

基于 SpringBoot+Vue 的校园论坛微信小程序的设计与实现 校园论坛、校园社区、校园社交、校园交流 信息发布、帖子管理、评论互动、用户系统 毕业设计、课程设计、系统设计与实现

【摘要】阿龙是一名拥有10万+粉丝的Java技术专家,在优快云、掘金等平台担任特邀作者和导师。本文详细介绍了他开发的校园论坛微信小程序的技术架构,采用SpringBoot+Vue框架组合,后端使用Java语言和MySQL数据库,前端基于微信小程序开发。文章系统阐述了SpringBoot的自动配置特性、Java的跨平台优势、小程序的社交功能整合,以及MySQL的高性能特点。项目实现了B/S结构,用户可通过浏览器直接访问,无需安装客户端。文末提供了项目源码获取方式,并附有测试用例和联系方式,确保代码质量和后期

程序员阿龙的博客 1497

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

论坛终结者3.2新服务器-自动注册发帖回帖软件

论坛终结者3.2新服务器-自动注册发帖回帖软件 去发现同类优质开源项目:https://gitcode.com/ 一款智能化的论坛管理工具,让你轻松掌控论坛动态,高效管理帖子——论坛终结者3.2新服务器,自动注册发帖回帖软件。 项目介绍 论坛终结者3.2新服务器是一款专为论坛管理设计的自动化工具,支持多种论坛平台,如discuz、phpwind、贴吧、某知名资讯平台等。它能够实现自动注册、发帖、回...

gitblog_06704的博客 405

基于springboot+Java餐品美食论坛系统

基于Spring Boot+Java的餐品美食论坛系统是一个集餐品分享、美食交流、用户互动等功能于一体的在线平台。

2201_75926662的博客 1076

使用 Python 多线程高并发快速爬取荣耀社区论坛评论及用户信息

通过这个项目,我们实现了从荣耀社区论坛爬取评论及用户信息的功能,并将数据保存到 CSV 文件中。这个项目展示了如何使用 Python 的requests和lxml进行网页数据抓取,以及如何使用csv模块保存数据。通过多线程加速了爬取过程,使得整个过程更加高效。最后,提醒大家在进行爬虫操作时要遵守目标网站的爬虫规则,并合理设置爬取频率以避免给服务器带来过大负载。

yaokk1的博客 5022
上一篇: 线程杂谈
下一篇: 自定义事件实现不同窗体间的通讯Delphi篇
Devillyd
博客等级 码龄23年 58粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值