一起学爬虫(Python) — 19 年轻人,进来学自动化

python爬虫系列二:爬取糗百成人的妹子图片(requests+正则) 在我的上篇文章:python爬虫系列一:爬取糗百成人的妹子图片中,体现的主要还是代码,这一次我用了更加流行的requests 和正则来改写代码,并且简单的说说思路爬取图片到底需要干什么1,定义要爬取的页面。 糗百官网:http://www.qiubaichengren.com,里面是不是有很多的妹子图片,我们就是要把这些妹子图片爬取下来。接着我们点击‘下一页’按钮,发现网址变成了http://www 阅读详情

前言

在这里插入图片描述

Hello,大家好,今天是早起的小泽!

在这里插入图片描述

早上10点相信对大家来说都还没有起来吧,当然有工作的除外,要上学的除外,相信还是有很多可以天天在家里待着的富婆鸭,会来这里偷偷地学习。

那么今天咱们是要搞什么呢?

相信通过标题你也是知道了,自动化!

在这里插入图片描述

那么话不多说,直接带大家起飞,好好学,好好问,你也可以成为大神!

什么是自动化

今天我们说到的自动化,不是你们可能听过很多的无人驾驶,机器人鸭什么的,就是没有那么高级哈。

这个自动化呢,在python里面用一个模块来实现:selenium

在这里插入图片描述

如果缺少这个东西呢,大家是有可能得抑郁症的,所以也可以看出来自动化对大家来说是多么的重要,还不赶紧学起来!

什么,你老抑郁了?
在这里插入图片描述
还没12点呢。

当然想只通过上面毫无关联的翻译来了解自动化,不太现实。

所以再给大家科普一下:

Selenium
是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9,10, 11),Mozilla Firefox,Safari,Google,Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成
.Net、Java、Perl等不同语言的测试脚本。

如果你还是看的不太明白,就可以这么理解:

selenium就是能帮我们自动浏览网页,自动获取那些我们能看到的数据。

总之呢,requests是属于黑暗里的一道光,而selenium就是光明正大的搞你,就是要搞你。

虽然上面说支持的浏览器有很多,但是还是推荐大家统一使用谷歌浏览器哈。

怎么安装selenium

又到了熟悉的教小白环节,小泽发现有很多人是直接学爬虫的诶,然后很多基础方面的,或者前端方面的知识鸭,就不太懂,这里可以花点时间把需要掌握的知识,系统的学一遍,毕竟不能急嘛,比的就是基本功。

在这里插入图片描述
直接开始教程,很快啊。

在这里插入图片描述
上面那个Project:1有的人可能找不到哦,因为你的项目名字不是1,找你的项目名字就好了,项目名字是最外层那个文件夹的名字哦。

在这里插入图片描述
找加号,有的人的加号可能在下面。

在这里插入图片描述
搜索selenium,然后点击左下方的下载,等你变绿了,就说明没毛病了嗷。

当然有的小伙伴可能会出现红色,下载失败,解决方法呢,在 一起学爬虫(Python) — 07 里面是有介绍的,在中间往下的部分,可以去找一找。

在这里插入图片描述
神奇の传送门1号

然后,模块我们就安装完成啦!

接下来就是重头戏了,要一起安装谷歌浏览器的引擎!

神奇の传送门2号

打开这个网址之前呢,大家先跟着小泽一起看一下自己谷歌浏览器的版本:

在这里插入图片描述
在帮助里面呢,有个关于Google Chrome,点进去。

在这里插入图片描述
你就能看到你的版本啦。

然后打开上面的传送门2号:

在这里插入图片描述
找到你对应的版本号的文件,然后点进去:

在这里插入图片描述
再根据自己的系统进行下载哈。

下载完了把里面的:

在这里插入图片描述
放在你能找得到的地方。

如果这些你都准备好了,那我们就可以开始了!

开冲!

最近小泽看到淘宝上有代冲的哦,10块钱一次,能让老板代替我们冲,如果大家实在忍不住可以去光顾一下,关爱自己,人人有责。

在这里插入图片描述

# 导入模块
from selenium import webdriver

第一步当然不用说啦,导入模块。对了,上面那个引擎,可以放在py文件的当前目录下哦,用的时候也方便!

# 这里指定自己的谷歌引擎目录
driver = webdriver.Chrome(executable_path='./chromedriver.exe')

今天,我们都是老司机!

上面那句是每次都要这样写的,所以不用纠结是为什么哦,Chrome就是谷歌的意思嘛~

from time import sleep
# 打开csdn的登录界面
driver.get('https://passport.youkuaiyun.com/login?code=public')
print('正在打开指定网页…')
sleep(1)

这里sleep1秒呢,是因为怕还没加载出来就继续下一步了,就有问题了。

先不要问代码为什么这么写,试试效果鸭!

# 找到那个输入账号密码的按钮
dl = driver.find_element_by_xpath('//*[@id="app"]
一起学爬虫(Python) — 01 首先要了解爬虫1.什么是爬虫1.自言自语2.为什么要学爬虫1.为了赚钱2.为了私欲3.爬虫违法吗?如何避免踩坑爬虫的分类爬与反爬robots.txt协议http协议和https协议常用请求头信息(先知道有这个东西)常用响应头信息(同上,都要通过抓包工具查看)加密方式(大致知道就好)结尾 1.什么是爬虫 1.自言自语 深思良久… 所以为什么要问这个问题呢? 传统! 每学一门技术之前都要了解我学的是什么,为什么要学,好学吗…… 但是小泽不要这么学,为什么呢? 如果跟别人一样的话,那有那么多优质的文章摆在前面,像 阅读详情

相关推荐

一起学爬虫(Python) — 05

今天我们爬图片开始分析实践 开始 大家好鸭,又是新的一天! 无论做什么事情,都要恪守初心,要知道我们是为了什么才学爬虫的,比如我,就是为了爬取一些好看的图片…… 所以,今天带大家一起爬一些好看的,图片~ 话不多说,直接高速! http://www.win4000.com/zt/dongman.html 作为一个老二刺猿,当然是直接找动漫图片~ 分析 打开页面后往下拉,发现图片是真滴好看…… 里面还有我的02老婆~ 认真分析,看到这一张张的图片,我们是不是可以认为这些图片是放在一个列表里的,所以一会我们爬取

小泽 1万+

一起学爬虫(Python) — 03

今天要爬我们想要的东西爬─=≡Σ(((つ•̀ω•́)つ抢银行o(▼皿▼メ;)o怎么抢∑(´△`)?!总结 爬─=≡Σ(((つ•̀ω•́)つ 先表示一下我很开心啊,为什么开心呢,因为有几个小伙伴给咱留言了,哈哈哈。 还是蛮有成就感的,在这里点名几位小伙伴,谢谢你们对我的支持哦~ 当然也会听取各位的建议,少用点表情包,多一点有用的东西! 昨天我们学会了把一整个网页给爬下来,但是这还只是最基础的东西。 举个例子:我们去抢劫的话,是不是要抢到钱才肯罢休啊,同样的我们去爬东西肯定要爬到有用的才肯罢休嘛,但是有的人

小泽 6721

一起学爬虫(Python) — 02

今天要学会爬requests模块什么是requests模块如何安装requests模块怎么用requests模块实战! requests模块 什么是requests模块 大家好鸭,今天是写博客的第二天,昨天写的结果只有不几个人看了呢,不过还有两个小伙伴点赞了,真的是万分感谢!!! 希望各位看客能多多提意见还有提问题哦,小泽都会努力解答的~ 咳咳,开始今天的正题:requests模块。 如果学过python基础的话就会知道模块是个什么东西,没有学过直接来这里看的呢,也应该大致知道模块是个什么东东,就是类似于

小泽 9207

一起学爬虫(Python) — 04

今天要学会实战爬个难的爬个大的step1step2 爬个难的 哈喽大家好,这里是小泽的一起学爬虫(Python)系列的第四天!!! 如果你是新来的,没关系,点个赞收藏一下最好是可以关注一下,然后看一看前面的基础,相信你很快也能跟得上我们的步伐! 虽然点赞还有收藏对我没有什么收益吧,但是能让我知道有人在看,就充满了一直把这个系列写下去的动力! 爬个大的 如果这个时候让你去把某个翻译界面爬下来,对学过之前的知识点的你应该是很轻松的,但是借用一下昨天的比喻,我们还是只能扒下来衣服,不能实现我们要的那个功能。 那

小泽 4245

一起学爬虫(Python) — 22 自动化详解

一起学爬虫(Python) — 19 年轻人,进来学自动化 自从这个一起学自动化发布之后,也是有很多小粉丝就偷偷跟我说看不懂,不明白,求求你教教我之类的(自我想象),所以今天就来详细的教大家什么是selenium! 深入Selenium前言回顾真·回顾干饭去了 前言 又是一大早就来给大家伙更新啦,昨天好像是发烧了…有些小粉丝问的问题没有及时回答到,偷懒了一天。 不过昨天有看到某个大佬写的2020年总结,其中看到他一开始是每天更新三篇,然后每天访问量5000左右。 那么我也要每天… 怎么可能。 每天三篇也

小泽 3508

一起学爬虫(Python) — 07

今天要偷懒前言填坑get()post()总结不知道起什么名字干干什么怎么干 前言 没想到点赞这么快就到100了…… 那就说到做到,说更就更! 今天就来把之前写的时候的一些坑,给大家填喽~ 填坑 不知道大家有没有注意到啊,我们之前使用requests模块的时候,后面有时候跟的是get(),有时候跟的是post(),各位细心的小伙伴不会没注意到吧,不会吧不会吧,竟然没有一个人问这个问题,难道你们都懂了吗…… 呐,看上面的三幅图,都是我们之前敲过的代码,聪明的你一定发现了requests.get()和req

小泽 7660

一起学爬虫(Python) — 09

今天划划水从零开始的爬虫生活梦回s4明确思路 从零开始的爬虫生活 标题为什么要这么写呢,因为我发现啊,有很多跟着一起学习的小伙伴,对于基础并不是掌握的很牢固,或者说很充实,所以小泽准备讲的慢一点,在讲爬虫的同时,把基础也给好好地讲一讲! 对了,400赞更新下一期哦!!!400赞400赞,大家一起努力鸭 (`・ω・´) 梦回s4 今天,就让我们一起重新完善一下,昔日我们写下的,翻译器! 这里跟大家说一个需要注意的点,如果我们要在原本可以运行的代码上做出修改或者添加功能,最好最好最好是重新建立一个py文件,然

小泽 3332

一起学爬虫(Python) — 21 蝉妈妈,嘿嘿

一起学爬虫(Python) — 19 年轻人,进来学自动化 这里呢,还是宣传一下这个跟自动调试有关系的一篇博客,为什么呢,因为她能帮你们自动给我的博客点赞!!! 诶嘿嘿,各位一定不会想白嫖吧。 蝉妈妈,嘿嘿前言蝉妈妈何为蝉妈妈今天的目标了解一下cookies了解一下蝉妈妈开冲全部代码结尾 前言 经过两到三天的咕咕咕,小泽发现这个浏览量是蹭蹭蹭的往上涨,顿时变得无比纳闷,为什么我不勤奋更新了反而看的人变多了呢… 难道… 这是大家在用事实告诉我,更新是错误的,咕咕咕才是我应该做的吗! 带师,我悟了。 当然,

小泽 8768

一起学爬虫(Python) — 11

今天我们学异步协程概念第一个案例第二个案例实现异步下载图片整体的思路流程很黄很暴力 概念 event_loop:事件循环,也就是通过不断的循环获取任务的状态(完成/未完成)来分配任务。 coroutine:协程对象,python中万物皆对象,不多说,懂的都懂。 task:任务对象,对协程对象进行包装,加上了状态,完成和未完成。 future:和task一样,只不过可以提前包装。 async:定义一个协程,定义! await:挂起阻塞的操作,还记得之前说的IO等待吗,在那前面就要用到这个。 第一个案例 第

小泽 2270

一起学爬虫(Python) — 15 进攻,有道翻译!

Hello,大家好,这里是超级勤奋的小泽亲~ 因为不会用目录所以直接不用目录… 那么今天要干什么呢? 标题不都说了嘛,进攻,有道翻译! 虽然说我们昨天已经试图进攻过有道翻译了,而且也貌似实现了效果,但是那只是一种错觉,其实昨天可以借鉴的主要是思路,总体来说是比较不合格的,鉴于让大家都能学会的原则呢,今天要再一次向有道翻译发起进攻! 首先,打开我们的有道翻译: 神奇的传送门 在当前页面呢,按下F12,或者右键,然后找到检查或者开发者工具,这里用谷歌浏览器或者360极速浏览器都是可以的哈。 然后打开我们的N

小泽 5014

用Python手把手教你实现一个爬虫(含前端界面)

随着互联网的飞速发展,再加上科技圈的技术翻天覆地的革新,互联网上每天都会产生海量的数据,这些数据对于企业和个人都具有重要的价值。作为开发者对数据处理并不陌生,关于使用python应该也不会陌生,因为现在python语言已经在初中阶段就开始普及了,关于python的主要功能之一的爬虫想必也不陌生,其实爬虫(也称网络蜘蛛)是一种能够自动抓取网络数据的工具,它可以帮助我们从网络上获取所需的信息。

全沾软贱开发攻城狮 1万+

空间节省算法在Rowhammer防御中的应用与优化

空间节省算法(Space-Saving)是一种高效的流式数据处理算法,主要用于在有限内存条件下实时识别数据流中的高频项。其核心原理是通过维护固定大小的计数器表,动态跟踪最活跃的元素,适用于处理无限数据流场景。该算法在内存安全领域具有重要价值,特别是在Rowhammer攻击防御中,能够有效检测异常高频访问的DRAM行地址。通过结合计数器衰减策略(如DSAC)和混合架构设计,空间节省算法可以在保证低硬件开销的同时,提供高精度的攻击检测能力。这些技术已成功应用于现代DDR5内存控制器,展现出优异的工程实践价值。

weixin_31139479的博客 606

HIC测序数据生信分析——第三节,HIC数据挂载

(取决于是否运行①prune模块,若①运行,则③运行;#HIC预处理后的比对文件Unknown_BM942-001H0001_1_val_1.Unknown_BM942-001H0001_2_val_2.hicup.bam 和contig基因组序列文件genome.fa。#HIC预处理后的比对文件Unknown_BM942-001H0001_1_val_1.Unknown_BM942-001H0001_2_val_2.hicup.bam 和contig基因组序列文件genome.fa。#这个方法简单一点。

weixin_44616693的博客 3597

OpenClaw实操:给网站装上“智能眼睛”?手把手教你用OpenClaw实时监控网站

本文介绍如何在Windows系统使用OpenClaw构建智能网站监控助手。手把手教你通过配置本地AI模型,让openclaw构建的ai助手自动检测指定网页的内容变化,理解更新重要性,并及时通过邮件、微信、Telegram等渠道发出预警,让你第一时间掌握关键信息,彻底告别手动刷新。

plawuyue的博客 2163

Mamba实战:如何用Samba框架轻松搞定RGB-D显著性检测(附避坑指南)

本文提供了基于Samba框架进行RGB-D显著性目标检测的实战指南。详细解析了从环境配置、数据预处理到模型推理与可视化的全流程,并重点剖析了多模态数据融合中的常见陷阱与调试技巧,旨在帮助开发者高效部署这一基于Mamba的先进视觉模型,规避工程实践中的典型问题。

dapp9builder的博客 615

littlefs系列:wear leveling

wear leveling的功能是通过block alloctor实现的。littlefs通过两个方法实现磨损均衡: 1) 检测和恢复bad blocks 2)通过dynamic blocks均衡磨损 检测和恢复bad blocks和block alloctor的关系并不紧密,主要依靠文件系统本身来检测坏块并标记。在littlefs中,检测坏块主要是通过写后回读并比较的方式实现的,如果数据不一致则说明是一个坏块。一旦检测到了坏块就要进行恢复。 如果是写入错误,因为数据才RAM中还有备份,因此需.

nstcl的博客 2570

IBM System x3650 M5 IMM配置

1、IMM基本介绍 IMM,全称是Intel Mobile Module是IBM服务器上的集成管理模块,该模块是独立于服务器系统,可以通过一个单独的IP地址,使用Web和虚拟端口方式直接启动、停止和管理远程服务器,即使主板、处理器或者内存故障导致主机无法启动,也依然可以远程管理服务器,可以远程直接操作启动画面和服务器工作界面。 2、IP地址配置 2.1 通过Web方式修改IP地址 IBM服...

血饮渊虹的博客 4万+

Ubuntu下Charm-Crypto安装

经过一下午的努力终于是把Charm-Crypto给安上了,经过查询资料,大致有三种方案(两坑一可行)。 适用于我的电脑的是Ubuntu 18.04版本。 第一种方案是根据连接https://pypi.org/project/charm-crypto/的教程进行安装,但是该方案的优势在于下载快速,缺陷在于Ubuntu系统仅仅更新到13+版本。 第二种就是网络博客上的介绍,内容与第一种较类似,但是有16+,18+成功的例子,缺点就是bug太多,我大部分时间都耗在了这上边,而且还没有成功。 第三中是github上

Mr.Yi的博客 2284

把 ABAP ALE Change Pointers 讲透:从 CDHDR/CDPOS 到 BDCP2,再到 RBDMIDOC 的自动分发链路

摘要:SAP ALE Change Pointers机制在系统集成中实现业务变更与数据分发的解耦。它记录业务对象变更(如SAP主数据修改),但不立即发送,而是由后续分发逻辑决定发送时机和方式。该机制包含两层:Change Documents记录审计级变更明细,Change Pointers标记需分发的关键变更。配置核心包括全局开关、消息类型激活和字段选择。典型应用如零售价格条件变更自动推送至POS系统,通过BDCP2表存储待处理队列,由RBDMIDOC程序定时评估生成IDoc。运维需关注定期清理和性能优化,

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 209

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...

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

上一篇: 一起学爬虫(Python) — 18 一生之敌查帕斯
下一篇: 博客索引
「已注销」
博客等级 码龄6年 1406粉丝 35原创
评论 88
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值