MonogDB -索引(一)概述

SAP采购申请详述;以及采购计划协议/交货计划行 阅读详情
一 索引简介

       索引是一种特殊的数据结构,只保存一个集合的小部分数据,方便遍历,它保存了一个或者几个指定域的值,而且它们是排过序的。

       在MongoDB数据库中存储的索引数据信息基本上和其它的数据库系统是相同的。MongoDB 在集合层次上来定义索引,可以在集合的任意字段上建立索引,也可以在子文档字段上建立索引。

       需要注意的是为了提高查询效率,索引的建立应该是面向用户查询的,使用索引保证只需要查看少量的数据集。MongoDB使用ensureIndex()来建立索引。

       MongoDB中使用B-Tree类管理索引,可以有效的支持范围查询和匹配查询,在集合内部文档可以按照升序或者降序来排列文档,MongoDB可以改变排序的方式(升序或者降序),对于单字段的索引,索引的升序和降序是可以改变的,但是对于复合索引,如果改变升序或者降序将对结果产生很大的影响。     
     


    
    注:MongoDB使用索引返回的文档会自动按照主键进行排序,这样就不用再使用sort进行排序。

   

        如果 返回结果中只包含索引键的话, MongoDB会直接从索引中来返回结果,这样就不用再扫描所有文档 ,也就不用将文档加入内存中,这样只包含索引字段的查询是非常的高效的。索引也可适用于管道操作符。例如下图所示:


    

二 索引类型

   a.  _id字段  
      默认情况下,所有MongoDB集合都有一个以_id字段命名的索引,它是一个12个字节的唯一标识符。如果用户没有给_id字段指定值的话,MongoDB会使用自动创建一个ObjectID对象,作为_id的值。_id 索引必须是唯一的,用户不可以插入两条_id字段相同的文档。

注意: 1. _id字段是不能删除的
             2. 在分片集群中,如果你不选择_id作为片键的话,你的程序必须确保能够产生一个唯一的_id值,否则会产生错误。在大多数情况下,都会使用ObjectID作为_id的值。

   b.单个字段索引  
       可以在文档的任何一个字段上来建立索引,默认情况下_id字段会作为索引 

    

例如:下面是friends集合中的一个文档:
     {
        "_id" : ObjectID(...),
        "name" : "Alice"
        "age" : 27 
     }
   将普通字段作为索引
    db.friends.ensureIndex( { "name" : 1 } )


 将子文档的字段作为索引
     {
          "_id": ObjectId(…)
          "name": "John Doe”
          "address": {
               "street": “Main"
               "zipcode": 53511 
                "state": “WI”
           }
     }
 db.people.ensureIndex( { "address.zipcode": 1 } )


将子文档作为索引
     {
       _id: ObjectId("523cba3c73a8049bcdbf6007”),
        metro: { city: "New York", state: "NY”}, 
        name: "Giant Factory”
     }
   db.factories.ensureIndex( { metro: 1 } )


注意:1.在子文档的字段上创建索引和子文档索引是不一样的,例如:
                    下面的查询会用到metro索引
                     db.factories.find( { metro: { city: "New York", state: "NY" } } )
                 使用上面的查询会返回整个文档。
          2.在进行子文档查询的时候,字段顺序是比较重要的,例如,如果按照下面的方式来写查询语句是不会使用到先前创建的索引,因为它和我们文档中字段的顺序不一致。
          db.factories.find( { metro: { state: "NY", city: "New York" } } )


   c.复合索引
       MongoDB 允许在多个字段上建立索引。在创建复合索引中,字段出现的先后顺序会影响到查询。比如说如果有一个复合索引:{ userid: 1, score: -1 }  ,集合内的文档首先按照userid进行排序,对于每一个相同userid会按照score排序。
                 
   
     {
         "_id": ObjectId(...)
         "item": "Banana"
         "category": ["food", "produce", "grocery"]
         "location": "4th Street Store"
         "stock": 4
         "type": cases
         "arrival": Date(...) 
     }
    例如,我们可以在经常查询的item和stock字段上建立复合索引:
db.products.ensureIndex( { "item": 1, "stock": 1 } )

   注意: 1.复合字段最多只能包含31个字段
              2.复合索引的字段上是不能包含哈希索引字段
              3.在建立复合索引的时候,字段的顺序是很重要的,例如在上面的例子中,文档首先会按照第一个字段的值来进行排序,对于每一个相同的值,再按照第二个字段给定的值进行排序。

    对于复合索引,MongoDB支持前缀式的查询,例如:复合索引字段为 :{ a: 1, b: 1, c: 1 },当我们按照以下字段查询的时候,都会用到上面建立的索引:  { a: 1 }和 { a: 1, b: 1 } 

对于  { "item": 1, "location": 1, "stock": 1 } MongoDB 支持下面的查询方法
         {“item”:1}
         {“item”:1,”location”:1}
         {“item”:1,”location”:1,”stock”:1}

不支持下面的查询
         {“stock”:1}
         {“location”:1,”stock”:1}

索引顺序(升序降序索引)
      db.events.find().sort( { username: 1, date: -1 } )
      username将按照升序排序,而date将按照降序排序

   d.多重(多路径/点号索引)索引
       MongoDB 使用多重索引来对数组元素排序。如果我们在一个拥有数组值的字段上建立索引的话,MongoDB会独立的为数组内的元素创建索引,多重索引可以在数组中查询某个特定的元素的时候或者数组的子集的时候可以加快查询。
  

     {
        "_id" : ObjectId("..."),
       "name" : "Warm Weather",
       "author" : "Steve",
       "tags" : [ "weather", "hot", "record", "april" ]
      }
     在数组tags1上建立索引 { tags: 1}

   注意:  1.片键不能为多重索引
                2.你不需要显式的的创建索引,Mongodb 会根据需要自动的创建多重索引
                3.复合索引中可以包含多重路径索引,但是最多只能包含一个。比如我们可以在            
                     下面的文档上:
                               {a: [1, 2], b: 1}
                              {a: 1, b: [1, 2]}
                 创建复合索引{ a: 1, b: 1 }是允许的, 但是如果在  { a :  [ 1 ,  2 ],  b :  [ 1 ,  2 ]}这个文档上,是不能建立{a: 1, b: 1 }


  e.地理位置坐标
     地理位置坐标索引可以提高地理坐标信息的查询速度,MongoDB提供了两种索引类型:2d indexes和2sphere indexes。前者是基于平面几何来使用,后者使用的是WGS84地球坐标系,后者存储的数据需要是GeoJSON格式的对象。
      MongoDB目前支持三种类型的GeoJSON 对象:点  线  多变形
         点 :
page18image16272
page18image16432
{ loc : { type : "Point" , coordinates : [ 40, 5 ] }}
         线:{ loc : { type : "LineString" , coordinates : [ [ 40 , 5 ] , [ 41 , 6 ] ]}} 
         多边形:{ loc :  { type : "Polygon” ,    coordinates : [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ] }} 

     注:对于多边行来说,必须是闭合的,所有首尾两个点必须是相同的,这样的话一个多变形至少要有四个点。

       球面索引支持按照GeoJSON对象和传统的经纬度对的数据,而后者是通过将传统的经纬度对转化为GeoJSON对象
的Point类型来实现的,所以当我们 存储地理位置信息的时候,最好按照GeoJSON对象的格式来进行存储。
      MongoDB的二维球面索引支持所有的有关地理位置信息的查询:包含关系、相交关系、毗邻关系。
      一个复合球面坐标索引可以包含一个文档的一个多个位置和非位置字段,可以将其按任意的顺序安排。
      MongoDB 2.4版本使用的是WGS84坐标系来进行地理位置的相关计算,坐标轴的顺序为:<经度,纬度>。

  注意: 1.只能在一个集合上创建一类位置索引:要么是2dsphere 或者是2d
              2.不能将球面坐标索引作为片键  但是我们可以通过在一个分片集合上使用一个不同的字段作为片键,来使用球面坐标索引。

凹多边形的表示:
{ loc :
   { type : "Polygon" ,coordinates :
                [ 
                    [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ],
                    [[2,2],[3,3],[4,2],[2,2]]
                ]
   }
}

                                                   
 注:先写外层的多边形,后写内层多边形,内层多边形必须包含在外层多边形内,二者可以公用一条边。

   平面索引
       支持在欧几里德空间内计算位置关系,注意不能在包含GeoJSON对象的集合上使用2d索引。
      点的存储格式:loc : [ <longitude> , <latitude> ]


  f.哈希索引
     支持基于哈希的分片集群,MongoDB提供了一个哈希索引的类型,将某一个字段的哈希值作为索引。使用哈希索引可以将数据随机的分配到集群中,如果使用哈希索引,需要注意的是哈希索引只支持匹配查询,不能进行范围查询。对于拥有子文档和数组的字段,不能使用哈希值来获取子文档。

   可以使用下面的语句来建立一个哈希索引
    db.active.ensureIndex( { a: "hashed" } )

g.文本索引
    MongoDB提供了一个测试版的文本索引,用来快速查询一个集合中存储的字符串。
  

三 索引属性

   a.唯一索引  
      对于索引项不能有相同的值出现
      db.addresses.ensureIndex( { "user_id": 1 }, { unique: true } )
       如果在复合索引字段上建立唯一索引的话,MongoDB会强调复合字段内的值必须是唯一的,而不是单个字段唯一。
       如果插入一个文档,该文档的唯一索引字段没有值的话,MongoDb会给其赋null值。MongoDB只允许这样的文档出现一次,如果再插入一个空值文档的话,会产生错误(duplicate key error)。

   b.稀疏索引(Sparse Index)
      确保文档中包含有索引字段,即使给字段是一个null值也是可以的。Spare索引也可以看做是一个过滤器,如果我们在某个字段上建立spare索引, 当在稀疏索引字段上执行查询语句的时候,如果某条文档不存在Spare索引字段的话,将不会包含到结果中。

  例如:某个集合有以下三条文档:
     { "_id" : ObjectId("523b6e32fb408eea0eec2647"), "userid" : "newbie” }
     { "_id" : ObjectId("523b6e61fb408eea0eec2648"), "userid" : "abby", "score" : 82 }
     { "_id" : ObjectId("523b6e6ffb408eea0eec2649"), "userid" : "nina", "score" : 90 }
在 score字段上建立一个稀疏索引
     db.scores.ensureIndex( { score: 1 } , { sparse: true } )
然后我们执行查询:
   db.scores.find().sort( { score: -1 } ) 这样只有包含score字段的文档才会显示。

返回的结果将是:
 { "_id" : ObjectId("523b6e6ffb408eea0eec2649"), "userid" : "nina", "score" : 90 }
 { "_id" : ObjectId("523b6e61fb408eea0eec2648"), "userid" : "abby", "score" : 82 }

   C.唯一索引和稀疏索引的联合使用
     例如:某个集合有以下三条文档:
     { "_id" : ObjectId("523b6e32fb408eea0eec2647"), "userid" : "newbie” }
     { "_id" : ObjectId("523b6e61fb408eea0eec2648"), "userid" : "abby", "score" : 82 }
     { "_id" : ObjectId("523b6e6ffb408eea0eec2649"), "userid" : "nina", "score" : 90 }
 
在score字段上添加一个唯一索引和一个稀疏索引 
  db.scores.ensureIndex( { score: 1 } , { sparse: true, unique: true } )

建立上面的索引后,我们可以插入文档字socre字段上的值要么是唯一的,要么不存在score字段。
例如:db.scores.insert( { "userid": "PWWfO8lFs1", "score": 43 } )
            db.scores.insert( { "userid": "XlSOX66gEy", "score": 34 } )
            db.scores.insert( { "userid": "nuZHu2tcRm" } )
            db.scores.insert( { "userid": "HIGvEZfdc5” }
以上的文档都是允许插入的。下面的两条是不让插入的,因为集合中已经存在了score位82和90的两条文档。
           db.scores.insert( { "userid": "PWWfO8lFs1", "score": 82 } ) 
           db.scores.insert( { "userid": "XlSOX66gEy", "score": 90 } )

从数字后端角度谈谈occ电路(一) 摘要:本文介绍了芯片测试中OCC(On-Chip Clock Control)电路的设计与应用。随着工艺进步,芯片制造面临Stuck-at、Bridging和Delay等故障类型,需要不同时钟频率进行测试。OCC电路通过Clock Selection、Clock Chopping Control和Clock Gating三个模块,实现ATE时钟与PLL时钟的切换控制,支持慢速时钟检测Stuck-at故障和快速时钟检测Delay故障。文章详细解析了OCC电路结构及各模块功能,包括同步单元、移位寄存器等关键组件 阅读详情

相关推荐

抖音X-Medusa风控逆向:unidbg环境重建与魔改AES还原

X-Medusa并非传统加密算法,而是深度耦合运行时环境的动态混淆系统,其核心是硬件指纹感知、线程上下文绑定与非标AES变异。理解其原理需跳出‘找密钥’思维,转向对CPU型号、系统属性、微秒级时间及内存布局的综合建模。技术价值在于将不可控的客户端风控,转化为可复现、可配置、可运维的服务化能力;典型应用场景包括合规数据采集、API协议适配与移动安全研究。本文聚焦Android native层逆向实践,基于unidbg实现高保真环境模拟,并完整还原S-Box动态生成、MixColumns矩阵变异与轮密钥XOR扰

weixin_33783283的博客 686

mongo索引

不同于MySQL的索引,mongo的索引是有方向的,value代表了索引的方向,这个特性在排序的使用很好用。就能查看是否使用了索引,以及其他的一些详细信息,包括,使用的索引,扫描的文档数据,结果的数量,查询用时等等。如此我们就建立了一个唯一索引,当然类似MySQL的联合唯一索引mongo也是有的,只需要指定多个字段即可。索引好用,但是切记复合索引是有顺序排列的,如果将查询字段顺序写错,是不会使用索引的哈!需要注意的是,如果集合中包含多个待索引字段是数组,则无法创建复合多键索引。...

乾复道 4663

TI DSP从COFF切换到EABI输出格式的5个关键修改点(TMS320F280025实测)

本文基于TMS320F280025实测,详细解析了TI DSP从COFF切换到EABI输出格式的5个关键修改点。核心差异在于EABI遵循ELF标准,涉及链接器优化、RAM数据共享、工具链升级、double数据类型位宽变化及链接器命令文件重构。迁移时需使用.retain指令防止关键数据被优化,利用NOINIT段保护共享RAM,并更新hex2000等工具,以确保BootLoader与应用程序稳定运行。

weixin_29189381的博客 266

MongoDB详解,用心看这篇就够了【重点】

1.1 MongoDB概述 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 Mo

ᶻᶻᶻ 枕星河的博客 9万+

让 ABAP 复杂内表优雅“喂饱”:Complex Internal Table Filling 全面实战指南

本文为ABAP开发者系统梳理了复杂内表的填充与复制方法。重点介绍了work area的两种声明方式、APPEND操作的多形态用法及其初始值语义,以及VALUE #( )构造器的逐行与整表写法。同时讲解了CORRESPONDING的同名字段映射功能,帮助开发者在"航司与航线"等复杂业务场景中实现最佳实践。文章还涵盖内存优化、可读性建议和常见误区,提供可运行样例,适用于ABAP On-Premise和SAP BTP环境。

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

【A2DP】规范精讲[1]: 深入解析A2DP协议的核心架构

在蓝牙技术发展的早期阶段,音频传输主要通过SCO(同步面向连接)链路实现,这种设计主要针对语音通信,音质有限且功能单一。随着人们对无线高质量音频需求的增长,​​Advanced Audio Distribution Profile (A2DP)​​ 应运而生,成为蓝牙音频传输的技术基石。

byte轻骑兵的技术小窝 1万+

MongoDB 使用教程--基本增删改查语法

MongoDB文档的数据结构和JSON基本一样。 切换数据库,此处使用NoSQL Manager for MongoDB工具作为客户端,  命令 user test 查看所有数据库   show dbs 切换到数据库 runoob: use runoob 执行删除命令: db.dropDatabase() 删除集合 db.colle

IT少年 4万+

图解联合概率密度、边缘概率密度、条件概率密度之间的关系

简要图解联合概率密度、边缘概率密度、条件概率密度之间的关系

一个搬运知识的笨小孩 2万+

MongoDB从零开始详细教程(超详细讲解)

目录一、简介1. 简单介绍2. 业务应用场景3. 什么时候选择MongoDB4. 体系机构5. 数据类型6. 特点二、Windows安装&启动&连接1. 下载压缩包2. 解压3. 安装服务4. 启动服务5. shell连接登录&退出6. Compass图形化连接登录三、Linux安装&启动&连接1. 下载压缩包2. 上传到服务器&解压3. 创建数据/日志存放目录4. 启动服务5. 登录6. Compass图形化连接登录四、基本常用命令1. 数据库相关2. 集合

欢迎来到 Baret-H 的博客 5万+

Claude Code 官方文档+3 个高活跃社区+5 个可复用开源项目:14.4 节持续学习资源实测清单

揭示 Claude Code 的核心交互范式是「状态机驱动的对话式编程」,强调官方文档实为配置契约、社区是直觉验证场、开源项目是配置能力校准器;通过真实故障案例解析上下文丢失根源,提出以工程化方式管理 claude.config.json、CLAUDE.md 和技能配置。

weixin_28728443的博客 326

一步步带你用C#开发Modbus通信上位机(附完整代码与工程思路)

Modbus上位机开发指南(C#实现) 本文详细介绍使用C#开发Modbus上位机系统的全过程,覆盖RTU和TCP两种协议。内容包含:1)需求分析与技术选型(WinForms+NModbus4);2)分层架构设计(UI/业务/通信层);3)通信层核心代码实现(串口/以太网连接、数据读写);4)功能模块开发(设备管理、数据采集、远程控制)。提供可直接复用的Modbus RTU客户端代码示例,包含连接管理、线圈读写、寄存器操作等工业场景必备功能。通过系统化的开发流程,帮助开发者快速构建稳定可靠的Modbus监控

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 821

MongoDB详解(有这一篇就够了)

MongoDB 是由C++语言编写的,基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,是最接近于关系型数据库的NoSQL数据库。MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组类似于MongoDB优点:数据处理能力强,内存级数据库,查询速度快,扩展性强,只是不支持事务。

lfnew的博客 8710

gurobi最新下载安装教程 2023.11

我下载的最新版gurobi支持python3.7-python3.11,这个序号与计算机硬件捆绑,一旦激活就会失效。运行激活码之后,产生的。如果既放置在了上面的默认搜索目录,又设置了。系统环境变量(不是用户环境变量),指向保存的目录和文件名(例如。高版本产生的许可文件兼容低版本。验证不会成功,学术许可不会激活。之后cmd进入命令行,cd进入gurobi所在的。,实测不到一小时即可审核完毕,获得对应的许可。如果学校的网关没有将本校的。系统环境变量指向不同的目录和文件,原厂无关,是学校网络的设置问题。

Cachel Wood的博客 2万+

MonogDB:入门(一)

MongoDB是一款企业级NoSQL数据库管理系统,以其强大的性能和灵活的数据模型而闻名。与传统关系型数据库不同,MongoDB采用文档导向的数据存储方式,使用JSON/BSON格式。这种模型更贴近现代应用的数据结构,适应了快速发展和不断变化的业务需求。

qq_35763697的博客 1012

数学建模模型总结

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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

MonogDB -索引 (三) GIS

MongoDB 2d Index 和 2sphere Index 索引的使用。

zzbjut 3330

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

Monogdb查询分析

一、输出查询过程: db.getCollection('multobj').find({}).explain(&quot;executionStats&quot;) 二、对queryPlanner分析 2.1 queryPlanner: queryPlanner的返回 queryPlanner.namespace:该值返回的是该query所查询的表 queryPlanner.indexFilter...

my_momo_csdn的博客 646

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

MonogDB初探增加和删除

1.插入并保存文档   在插入数据之前,首先用mongodb Shell命令db.baseUser.find() 查找集合的数据。   想必大家能猜到结果,什么东西都没有,那接着来说说怎么向 baseUser 集合中插入数据。插入baseUser 的方法如下:  首先定义一个baseUser变量,用来...

dianchengsn076644的博客 157

MongoDB索引探究

索引通常能够极大的提高查询的效率。在系统中使用查询时,应该考虑建立相关的索引。在MongoDB中创建索引相对比较容易。MongoDB中的索引在概念上和大多数关系型数据库如MySQL是一样的;需要在MySQL中建立索引的情况, 一般同样适合于MongoDB。

王二的专栏 829

monogdb 使用简要说明

启动服务:mongod.exe --dbpath D:\data\db #后面为数据库路径,db是默认数据库,存在data中,可以自己新建。进入MongoDB后台shellmongo显示数据库列表show dbs连接到一个指定数据库,也相当于新建user zhang #后面的zhang是数据库名字,可以通过show dbs获得,如果zhang不存在,则会新建zhang,并且当你对zhang插入数据的

张帅的博客 1246

MonogDB学习——第一天

  介绍:MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 1、MongoDB特点 高性能、易部署、易使用,存储数据非常方便。 主要功能特性有:  面向集合存储,易存储对象类型的数据  模式自由  支持动态查询  支持完全索引,包含内部对象  支持查询  支持复制和故障恢复  使用高效的二进制数据存储,...

niweiwei 257

【MonogDB】The description of index(三) Compose and unique Index

This blog will go on talking about the index. In this blog the compose and unique Index will be mentioned.

夜深人静后的码农 1018

【Monogdb】MongoDB的介绍以及同类数据库的对比

前期已经写了大约50余篇关于Mongodb数据库学习的博客,现在重新其他数据,把不全面的地方补充一下;今天补充的内容是Mongodb数据库是神马东东以及同类数据库中为什么它能脱颖而出; 一、基本介绍 Mongodb是一个高性能、开源、无模式的文档型数据库,使用C++开发,是当前Nosql数据库产品中最热门的一种。这 里说到nosql数据库,就简单描述一下什么是nosql。 nosql(not

夜深人静后的码农 2878

【MonogDB】The description of index(二) Embedded and document Index

In this blog, we will talk about another the index which was called "The embedded ". First we init 1w the records as follows: 2.2 The embedded Index  The compare between the before and t

夜深人静后的码农 1488

MonogDB查询、修改等使用方法整理

db.collection.find({ "field" : { $gt: value } } )   // 大于  : field > value db.collection.find({ "field" : { $lt: value } } )   // 小于  :  field db.collection.find({ "field" : { $gte: value } } )  //

mmy1210的专栏 1086

c# 实现的 mongodb空间索引,空间查询(二)

using MongoDB.Bson; using MongoDB.Driver; using MongoDB.Driver.Builders; using MongoDB.Driver.GeoJsonObjectModel; using System; using System.Collections.Generic; using System.Diagnostics; using System...

ITMAN009的博客 363

MongoDB的GeoSpatial索引

最近一直在做基于LBS的项目,地标的坐标索引和基于坐标查询,一直没找到一种简单方便的方法,在做mongo索引优化的时发现竟然有Geo的索引 1. 创建字段 建议使用方式:{ loc : [ longitude , latitude] } 也可以:{ loc : { lon :longitude, lat:latitude } } Loc自己决定,我用poi的 2. 建立索引,注...

weixin_30760895的博客 147
上一篇: MonogDB -索引 (三) GIS
下一篇: 设计模式的定义
张哲BJUT
博客等级 码龄15年 151粉丝 111原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值