Redis 学习——入门篇

基于深度学习YOLOv5的草莓成熟度检测系统详解(深度学习模型+UI界面+Python代码+训练数据集) 数据采集与预处理模块:负责收集草莓图像,并进行数据增强和标注。深度学习模型训练模块:使用YOLOv5模型进行草莓成熟度检测模型的训练。模型推理模块:加载训练好的模型,对输入图像或视频进行草莓成熟度检测。UI界面模块:提供用户交互界面,方便用户上传图像或视频进行成熟度检测。本文详细介绍了基于YOLOv5的草莓成熟度检测系统的构建过程,包括数据集的构建、模型的训练与推理、以及UI界面的设计。通过本文的指导,读者可以快速搭建一个高效的草莓成熟度检测系统,并应用于实际场景中。 阅读详情

一、Redis 简介

Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库,类似于 Java 中的 Map<key, value>。

Redis 与其他 key - value 缓存产品有以下特点:

(1)Redis 数据库中所有数据都存储在内存中,由于内存的读写速度远快于硬盘,因此 Redis 在性能上对比其他基于硬盘存储的数据库有非常明显的优势。
(2)Redis 支持数据的持久化,可以将内存中的数据异步写入到磁盘中,重启的时候可以再次加载进行使用。
(3)Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
(4)Redis 支持数据的备份,即 master-slave 模式的数据备份。

Redis 的特点:

(1)速度快

1)纯内存操作
2)单线程操作,避免了频繁的上下文切换
3) 采用了非阻塞 I/O 多路复用机制

(2)原子性

Redis 的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过 MULTI 和 EXEC 指令包起来。

(3)键值对的数据结构服务器

5种常用数据结构:String、hash、 list、 set、 zSet

(4)简单稳定

单线程,协议简单

(5)持久化

将内存数据写入磁盘

(6)主从复制

实现多个相同数据的 redis 副本

(7)高可用和分布式集群

哨兵机制实现高可用,保证 redis 节点故障发现和自动转移

(8)客户端语言多

java、php、python、c、c++、node.js等

使用 Redis 的缺点

(1)缓存和数据库双写一致性问题
(2)缓存雪崩问题
(3)缓存击穿问题
(4)缓存的并发竞争问题

Redis 应用场景

1、缓存数据库

合理使用缓存加快数据访问速度,降低关系型数据库压力

2、排行榜

按照热度排名,按照发布时间排行,主要用到列表和有序集合

3、计数器应用

视频网站播放数,网站浏览数

4、社交网络

赞、踩、粉丝、下拉刷新

5、消息队列

发布和订阅

6、其他场景。。

二、redis 配置、启动、操作、关闭

在这里插入图片描述
停止 redis 服务:redis-cli shutdown

注意:

a、 关闭时,断开连接,持久化文件生成,相对安全。
b、 使用 kill 方式关闭进程时,不会做持久化,还会造成缓冲区非法关闭,会导致数据丢失。
c、 关闭前持久化文件,登录 redis-cli 客户端,再 shutdown nosave|save 。

三、Redis 的数据结构

1、String

字符串类型:实际上可以是字符串(包括 XML JSON),还有数字(整形 浮点数),二进制(图片 音频 视频),最大不能超过 512MB 。

示例

// 1、设值指令
set age 22 ex 10 // 10秒后过期, ttl age 查询剩余时间
setnx name test // 不存在键name时,返回1设置为成功,返回0失败

// 2、获取指令
get age // 存在返回age的值

// 3、删除指令
del age // 删除age,返回1

// 4、批量操作
mset name wanglei age 22 // 批量set
mget name age // 批量get

// 5、计数
incr age // 必须为证书自加1,非整数返回错误,无age键从0开始自增返回1
decr age // 整数age减1
incrby age 2 // 整数age + 2
decrby age 2 // 整数age - 2
incrbyfloat score 1.1 // 浮点型 score + 1.1

// 5、追加、长度、截取字符串
set name hello;
append name zhangsan; // 追加字符串,变成 hellozhangsan
set zhangsan "张三";
strlen zhangsan // 字符串长度,结果为6,每个中文占3个字节
set name helloworld;
getrange name 0 2 // 截取字符串,返回hel

补充

1)EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value 。
2)PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key milliseconds value 。
3)NX : 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX 的效果等同于执行 SETNX key value 。
4)XX : 只在键已经存在时, 才对键进行设置操作。

2、Hash

Redis hash 是一个键值对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象,类似 Java 里面的 Map<String,Object>,最大存储 512M。
在这里插入图片描述

示例:

hset user:1 name wanglei	// 设置指令,成功返回1,失败返回0
hget user:1 name 	// 读取指令,返回wanglei
hlen user:1 	// 计算field个数,返回2
hdel user:1 name 	// 删除field,返回删除个数
hmset user:2 name wanglei age 23 sex boy 	// 批量设置,返回OK
hmget user:2 name age sex    	// 批量读取,返回三行:wanglei 23 boy

// 判断field是否存在:
hexists user:2 name // 若存在返回1,不存在返回0

// 获取所有field: 
hkeys user:2 // 返回name age sex三个field

// 获取user:2所有value:
hvals user:2 // wanglei 23 boy

// 获取user:2所有field与value:
hgetall user:2

// 整型增加1:
hincrby user:2 age 1 // age+1

// 浮点型增加2:
hincrbyfloat user:2 age 2 // 浮点型加2

三种方式存储user信息比较

1)原生

set user:1:name wanglei;
set user:1:age 22;
set user:1:sex boy;

优点:简单直观,每个键对应一个值。
缺点:键数过多,占用内存多,用户信息过于分散,不用于生产环境。

2)将对象序列化存入 redis。

set user:1 serialize(userInfo);

优点:编程简单,若使用序列化合理内存使用率高。
缺点:序列化与反序列化有一定开销,更新属性时需要把 userInfo 全取出来进行反序列化,更新后再序列化到 redis。

3)使用 hash 类型。

hmset user:1 name wanglei age 23 sex boy

优点:简单直观,使用合理可减少内存空间消耗。
缺点:要控制 ziplist 与 hashtable 两种编码转换,且 hashtable 会消耗更多内存 serialize(userInfo)。

3、List

用来存储多个有序的字符串,一个列表可以存的最大元素:2的23次方减1 。

因为有序,可以通过索引下标获取元素或某个范围内的元素列表,列表元素可以重复。

特点

单键多值,底层实际是个双向链表,对两端的操作性能很高,通过索引下标操作中间的节点性能会较差。
在这里插入图片描述

示例

rpush testlist c b a // 从右向左插入c b a, 返回3
lrange testlist 0 -1 // 从左往右获取列表元素,返回c b a,0 -1为索引下标
lpush testlist 1 2 3 // 从左向右插入1 2 3, 返回6
linsert testlist before 1 0 // 在1之前插入0,返回7,after为之后,使用lrange testlist 0 -1 查看,返回结果为3 2 0 1 c b a

lindex testlist -1 // 返回最右末尾a,-2返回b
llen testlist // 当前列表长度,返回7
lpop testlist // 把最左边的第一个元素删除,返回3
rpop testlist // 把最右边的第一个元素删除,返回a

4、 Set

用户标签,社交,查询有共同兴趣爱好的人,智能推荐。

保存多元素,与列表不一样的是不允许有重复元素,且集合是无序,一个集合最多可存2的32次方减1个元素,除了支持增删改查,还支持集合交集、并集、差集。
底层其实是一个 value 为 null 的哈希表。
在这里插入图片描述

示例

exists user // 检查user键值是否存在,存在返回1,不存在返回0
sadd user a b c // 向user插入3个元素,返回3
sadd user a b // 若再加入相同的元素,则重复无效,返回0
smembers user // 获取user的所有元素,返回结果无序
srem user a // 返回1,删除a元素
scard user // 返回2,计算元素个数

// 场景,求共同爱好语言
// 使用方式,给用户添加标签,或者给标签添加用户。

// 给用户添加标签
sadd user:1:fav java js vue python
sadd user:2:fav vue python node.js
sadd user:3:fav c c++ c#

// 求共同爱好,即求交集
sinter user:1:fav user:2:fav // 返回vue、python
sinter user:1:fav user:2:fav user:3:fav // 返回(empty list or set)

5、zSet

Redis 有序集合 zset 与普通集合 set 非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复的。
zset 底层使用了两个数据结构:

1)hash:hash 的作用就是关联元素 value 和权重 score,保障元素 value 的唯一性,可以通过元素 value 找到相应的 score 值。
2)跳跃表:跳跃表的目的在于给元素 value 排序,根据 score 的范围获取元素列表。
在这里插入图片描述

常用于排行榜,如视频网站需要对用户上传视频做排行榜,或点赞数与集合有联系,不能有重复的成员。

示例

zadd user:zan 200 wanglei 120 zhangsan 140 lisi // 增加元素,返回3
zrange user:zan 0 -1 withscores // 查询元素,返回点赞数和成员名称,返回张三 120 lisi 140 wanglei 200
zrank user:zan lisi // 返回名次,返回1,排名为0,1,2
zrevrank user:zan wanglei // 反向排名,点赞越多排名越前,返回0

zadd test:1 nx 100 wanglei // 键test:1必须不存在,主要用于添加
zadd test:1 xx incr 200 wanglei // 键test:1必须存在,主要用于修改,此时300
zadd test:1 xx ch incr -299 wanglei // 返回操作结果1,300-29=1

zcard test:1 // 计算成员个数,返回1

list、set、zSet 比较

在这里插入图片描述

Redis6 的新数据类型

(1)Bitmaps

Redis提供了Bitmaps这个“数据类型”可以实现对位的操作:

(1)Bitmaps 本身不是一种数据类型, 实际上它就是字符串(key-value) , 但是它可以对字符串的位进行操作。

(2)Bitmaps 单独提供了一套命令, 所以在 Redis 中使用 Bitmaps 和使用字符串的方法不太相同。 可以把 Bitmaps 想象成一个以位为单位的数组, 数组的每个单元只能存储 0 和 1, 数组的下标在 Bitmaps 中叫做偏移量。
在这里插入图片描述

(2)HyperLogLog

Redis HyperLogLog 是用来做基数统计的算法。
HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数,这与元素越多耗费内存就越多的集合形成鲜明对比。

(3)Geospatial

redis 基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度 Hash 等常见操作。

四、redis 数据库管理

在这里插入图片描述
默认支持16个数据库;可以理解为一个命名空间。跟关系型数据库不一样的点:

redis 不支持自定义数据库名词。
每个数据库不能单独设置授权。
每个数据库之间并不是完全隔离的。 可以通过 flushall 命令清空 redis 实例面的所有数据库中的数据。
通过 select dbid 去选择不同的数据库命名空间,dbid 的取值范围默认是 0 -15。

全局命令

(1)查看所有键: keys * (可以查询所有key,也可以模糊搜索,如 keys user* ,但是线上不推荐使用。)
(2)键总数:dbsize (如果存在大量键,线上不建议使用。)
(3)检查键是否存在:exists key (存在返回 1,不存在返回 0。)
(4) 设置键过期时间: expire username 20 (设置 username 20秒过期,ttl username 查看剩余时间。)
(5)查看数据类型:type username (返回string,不存在返回none。)

五、Redis 持久化机制

redis 是一个支持持久化的内存数据库,也就是说 redis 需要经常将内存中的数据同步到磁盘来保证持久化,持久化可以避免因进程退出而造成数据丢失。

1、RDB 持久化方式

RDB 持久化把当前进程数据生成快照(.rdb)文件保存到硬盘的过程,有手动触发和自动触发。

手动触发有 save 和 bgsave 两命令 :

1) save命令:阻塞当前redis,直到RDB持久化过程完成为止,若内存实例比较大会造成长时间阻塞,线上环境不建议用它。
2)bgsave命令:redis 进程执行 fork 操作创建子进程,由子线程完成持久化,阻塞时间很短(微秒级),是 save 的优化,在执行 redis-cli shutdown 关闭 redis 服务时,如果没有开启 AOF 持久化,自动执行 bgsave。
在这里插入图片描述

RDB 如何恢复

redis.conf 文件配置了指定目录,重启 redis 恢复数据。

RDB 持久化优缺点

优点:

压缩后的二进制文,适用于备份、全量复制,用于灾难恢复。
加载 RDB 恢复数据远快于 AOF 方式。

缺点:

无法做到实时持久化,每次都要创建子进程,频繁操作成本过高。
保存后的二进制文件,存在老版本不兼容新版本 rdb 文件的问题。

2、AOF 持久化

针对 RDB 不适合实时持久化,redis 提供了 AOF 持久化方式来解决。

开启:redis.conf 设置:appendonly yes (默认不开启,为no)
默认文件名:appendfilename “appendonly.aof”

AOF 持久化流程

1)所有的写入命令(set hset)会 append 追加到 aof_buf 缓冲区中。
2)AOF 缓冲区向硬盘做 sync 同步。
3)随着 AOF 文件越来越大,需定期对 AOF 文件 rewrite 重写,达到压缩。
4)当 redis 服务重启,可 load 加载 AOF 文件进行恢复。
在这里插入图片描述

AOP如何恢复

redis.conf 文件配置了指定目录,重启 redis 恢复数据。

AOP 配置详解

appendonly yes           // 启用aof持久化方式
# appendfsync always // 每收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
appendfsync everysec // 每秒强制写入磁盘一次,性能和持久化方面做了折中,推荐
no-appendfsync-on-rewrite  yes  // 正在导出rdb快照的过程中,要不要停止同步aof
auto-aof-rewrite-percentage 100  // aof文件大小比起上次重写时的大小,增长率100%时,重写
auto-aof-rewrite-min-size 64mb   // aof文件,至少超过64M时,重写

Redis 重启时加载 AOF 和 RDB 的顺序

(1)当 AOF 和 RDB 文件同时存在时,优先加载 AOF。
(2)若关闭了 AOF,加载 RDB 文件。
(3)加载 AOF/RDB 成功,redis 重启成功。
(4)AOF/RDB 存在错误,启动失败打印错误信息。
在这里插入图片描述

一文让你轻松理解Wi-Fi理论速率计算方式 如上所示,在使用FDM的802.11协议上,最小子载波带宽为312.5KHz,那一个信道频宽为20MHz的信道可以分成64个子载波,但是由于技术原因,有效使用的是52个子载波,实际用于数据传输的只有48个,有4个子载波充当导频载波。载波:交流信号或者直流信号本身不具备数据传输能力,但是如果信号发生很小的波动或者变化,从而实现数据的收发。所谓子载波,就是将信号划为为很多的小信道,这些小信道可以实现数据的并发传输,子载波我们英文称为subcarrier,也称为音调(tone)。Symbol time如下所示。 阅读详情

相关推荐

Ansys Zemax|无焦系统设计中的角度单位优化技巧

本文详细介绍了在Ansys Zemax OpticStudio中进行无焦系统设计的核心技巧。重点阐述了从聚焦思维到角度思维的转换,并演示了如何通过开启‘无焦像空间’模式、构建以波前和光束尺寸为目标的评价函数来优化激光扩束镜等系统。文章还分享了使用IMSF操作数处理混合系统以及常见误区避坑的实用指南,旨在帮助光学设计者高效完成无焦系统的设计与分析。

weixin_29231027的博客 357

Redis最全详细学习

1. redis介绍 1.1. 什么是redis Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求 Redis支持的键值数据类型 字符串类型 散列类型 (对应Java中的Object,它主要用来存储对象) 列表类型 (List) 集合类型 (Set) 有序集合类型。 (TreeSet) 1.2. red...

Chen_neal_Java的博客 3909

Xilinx的DDR4 IP

Xilinx的DDR4 IP

weixin_39896700的博客 4456

Redis的简单学习(一文学会Redis!)

页内目录 一,Redis的介绍 二,Redis的基本使用 三,Redis的基本配置 四,Redis的持久化 五,Redis中的事务 六,Redis中的锁 七,Redis整合IDEA的使用 八,Redis整合springboot的使用 一,Redis的介绍 二,Redis的基本使用 三,Redis的基本配置 新建服务器 Redis的基础配置 打开服务器:C:\Redis>redis-server conf/redis.service-6380.conf C:\Redis>:是文件位置 redi.

an_gentle_killer的博客 721

ArcGIS新手必看:5分钟搞定等高线转DEM栅格(附完整操作截图)

本文详细介绍了在ArcGIS中将等高线转换为DEM栅格的完整流程,包括CAD数据预处理、TIN转栅格和直接插值法两种核心方法,以及常见问题排查与优化技巧。通过实战案例和操作截图,帮助GIS新手快速掌握这一测绘数据处理的核心技能,提升地形分析和三维可视化效率。

dapp9builder的博客 285

Profinet从站开发初体验:用p-net开源库和树莓派快速搭建一个IO设备模拟器

本文详细介绍了如何使用p-net开源库和树莓派快速搭建Profinet从站IO设备模拟器。从开发环境准备、p-net源码编译到设备模拟器功能实现,提供了全流程实战指南,帮助开发者快速掌握工业通信协议开发技巧,适用于工业自动化领域的设备互联测试与验证。

weixin_30384217的博客 383

Redis基础学习

Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种。

m0_69114709的博客 852

ATAC-seq数据分析流程

Outline0. ATAC-seq原理0.1 染色体结构0.2 原理0.3 结果0.4 意义1. ATAC-seq数据分析流程1.1 上游分析(1)序列质控和比对(2)序列筛选1.2 下游分析1.3 进阶分析 0. ATAC-seq原理 0.1 染色体结构 0.2 原理 0.3 结果 0.4 意义 1. ATAC-seq数据分析流程 1.1 上游分析 (1)序列质控和比对 fastqc trim_golare bowtie2 mapping时要加上参数 --very-sensitive -X 2000

weixin_57830892的博客 1万+

超全、超详细的Redis学习笔记总结

键值型NoSql其中键值型,是指Redis中存储的数据都是以key.value对的形式存储,而value的形式多种多样,可以是字符串.数值.甚至json:而NoSql则是相对于传统关系型数据库而言,有很大差异的一种数据库。对于存储的数据,没有类似Mysql那么严格的约束,比如唯一性,是否可以为null等等,所以我们把这种松散结构的数据库,称之为NoSQL数据库。存储方式关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响。

Java技术一点通 3569

23 RAG 为什么答不准:召回、分块、排序的常见坑

RAG 答不准时,不要先怪模型。本文把常见失败拆成召回不到、召回不准、分块不完整、排序靠后、上下文污染和生成不忠实六类,并给出从 Top-K 检查到评估集的排查流程。

老于的笔记的专栏 244

学Simulink——基于Simulink的AUTOSAR架构下电机控制软件组件建模

本文详细介绍了在Simulink中基于AUTOSAR架构开发电机控制软件组件(SWC)的全流程。主要内容包括:首先阐述了AUTOSAR架构对汽车电子系统开发的价值,包括提高软件复用率、降低集成成本和改善验证环境。然后重点讲解了在Simulink中构建电机控制SWC的具体步骤:从创建AUTOSAR组件模型、定义数据端口和服务端口,到搭建FOC控制算法、配置运行实体,最后生成AUTOSAR描述文件和验证RTE接口。文章还提供了与基础软件(BSW)的集成方案、工程实践要点和常见问题解决方案,并以大众MEB平台等实

amy_mhd的博客 66

Redis——Redis简介

Redis简介、Reids5新特性、基本数据类型:String、Hash、List、Set、Sorted Set、Redis HyperLogLog

码说芯语的博客 5571

手把手教你从入门到精通C# MES通信

本文是C#与MES通信通信的目录,使用C#与各种MES系统通信的方法我都会在专栏中讲到,比如WebService、Http、Ftp、共享文件夹、串口通信等,绝对是上位机软件工程师实现与MES系统通信的必备教程!

qq_34059233的博客 8737

Redis学习——入门篇①

Redis学习——入门篇①

这里有一只小马吖 1648

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

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Redis学习——入门篇②

Redis学习——入门篇②

这里有一只小马吖 1472

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Redis学习——入门篇③

Redis学习——入门篇③

这里有一只小马吖 1396

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Redis学习——入门篇⑤

Redis学习——入门篇⑤

这里有一只小马吖 1172

Redis学习——入门篇④

Redis学习——入门篇④

这里有一只小马吖 1241

Redis学习笔记( 入门篇)

基于内存的 K / V 存储中间件NoSQL 键值对数据库Redis 不仅仅是数据库,它还能作为消息队列等等。关系型 SQL 和 NoSQL 的对⽐。

退役复学在校大学生,目光所至,皆为华夏 5万+

redis 学习入门篇

基本概念 redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库(非关系性数据库)。 redis的特点 速度快,因为数据存在内存中,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度极快。 支持丰富数据类型,支持string,list,set,sorted set,hash 支持事务,操作都是原子性,所谓的原子性就是对数...

awz34479的博客 153

Redis学习-入门篇

本文涵盖:1. 什么是RedisRedis 是一个支持网络交互的、可基于内存也可持久化的Key-Value数据库(非关系性数据库),它不仅性能强劲,而且还具有复制特性; ...

程序员成长指北 192

Redis学习入门篇

概述 Linux安装 1、下载安装包redis-6.0.5.tar.gz 官网:https://redis.io/ 2、上传解压缩 3、检查安装环境 #安装gcc-c++库 yum install gcc-c++ #查看gcc库信息 gcc -v 4、安装redis make make install #redis默认安装再/usr/local/bin目录下 5、配置redis 将re...

芋头 186

Redis学习-前端入门篇

redis锁可以处理并发问题,redis数据类型中有一个set类型,set类型在存储数据的时候是无序的,而且每个值是不一样的,不能重复,这样就可以快速的查找元素中某个值是否存在,精确的进行增加删除操作。set类型中提供了无序的方式来存储多个不同的元素,set类型中每个元素的值都不一样,用户可以快速对元素中的值添加删除,检查某些值是否存在,重复的元素是无法继续插入集合的。从链表的两端推入或者弹出元素;list类型是一个有序的列表,有序表示的是从左到右还是从右到左,而且数据内容是可以重复的。

frontend_frank的博客 88

Redis学习笔记——快速入门篇

redis快速入门1.redis概述2.redis常识问题3.五大数据类型3.1String类型3.2列表list3.3无序集合Set3.4有序集合Zset3.5哈希表Hash4.读懂redis的配置文件redis.conf 1.redis概述 Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(Key/Value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一,

qq_41343930的博客 560

redis入门篇学习笔记二

redis12. 三种特殊的数据类型12.1 GEO地理位置简介:命令:命令演示12.2 HyperLogLog简介基本命令12.3 BitMap简介基本命令13. redis事务理论实践14. springboot整合redis步骤:redis要做的配置推荐一个好用的redis客户端工具redis的序列化配置redis的工具类测试代码15. conf配置文件分析熟悉基本配置常见的配置介绍 12. 三种特殊的数据类型 12.1 GEO地理位置 简介: redis的GEO特性在redis3.2版本中推出,这个

weixin_44226752的博客 708

Redis入门篇学习笔记一

redis1.官方中文文档2.linux下安装3.安装出现的问题4. 压力测试工具5. 基本的数据库命令6. redis单线程快?key值加引号和不加的区别?7.字符串String(单值单value)常用命令说明:应用8. 列表List(单值多value)常用命令说明性能总结应用9. 集合Set(单值多value)常用命令说明应用10. 哈希Hash(单值多value,v是一个键值对)常用命令应用11. 有序集合Zset常用命令应用 1.官方中文文档 http://www.redis.cn/ 2.linux

weixin_44226752的博客 720
上一篇: Java基础——泛型
下一篇: Linux上使用docker启动redis并远程访问
IT__learning
博客等级 码龄7年 1107粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值