CoreData 深入理解1

【优矿】多因子策略 登录优矿注册账号 注册完成之后,点击开始研究。 新建策略,自动生成策略回测模板 示例代码: 1.2 回测参数 具体参数的api文档请关注官方,你可以永远相信它。 start、end 回测开始和结束时间,日线数据只能回测到2007年1月1日,分钟级别数据只能回测到2009年1月1日。值得注意的是,参数格式必须是“YYYY-MM-DD”和”YYYYMMDD“,并且在设置start和end的时候需要考虑到max_history_window引入的提前量,例如max_history_window=30时,sta 阅读详情
Core Data是苹果针对Mac和iOS平台开发的一个框架,主要用来储存数据。对很多开发者来说,Core Data比较容易入手,但很难精通,如果没有正确的学习方法,你将很难真正理解它,更不用说精通了。很多开发者常常在这方面犯一些错误,而这篇文章列出了开发者在iOS开发过程中使用Core Data常见的一些错误,并对如何避免这些错误进行了分析。
 
1.不了解关键术语
对于iOS开发者来说,会使用Core Data是一项必备技能。 没有它,很多app都不会存在。当在互联网上四处搜索Core Data学习教程,你很容易被各种各样的术语吓倒。事实上大部分学习教程都首先假定你已经知道了这些术语,而如果你不了解这些术语,那将会陷入困惑中。所以首先要知道关键的术语。这里有一个备忘单,可以用在学习Core Data的过程中,这份备忘单展示了关键的词组:
在以后的学习过程中,你会遇到更多的术语,但这些是初学者需要了解的最基本的部分。
 
2.完全忽视Core Data
当一项技术以难学“闻名”时,你可能会忽略它,特别是当你时间不够,急着把app做出来的时候。
 
Core Data储存app数据的一个常见替代选择是使用XML属性列表,虽然属性列表可以让你今天的工作变得轻松,但它们也会随后回过头来咬你一口。无论何时你编辑属性列表,发生的变化都是原子性的。这意味着即便是很小的更改要求,整个文件都会被加载到内存中,然后在保存的时候,整个文件都会被写回到硬盘。 
 
随着数据量的增长,app也会变得越来越慢。但是如果你基于SQLite数据库使用Core Data时,这些性能问题就不会困扰你 。这样可以保持低内存占用,以保证app快速响应,并防止app因内存压力过大而崩溃。本质上说,Core Data之所以比属性类表更有扩展性的原因是它支持使用数据库进行持久性储存。可扩展性并不是Core Data的唯一优势,使用关系把数据组织进实体结构才是其强大之处。比如,考虑使用以下实体来代表一个任务 :
 
该任务实体包含一个名称和subtask_name属性。当从任务实体中创建管理对象时,它将会有一个名称和subtask_name属性。
 
不依赖关系,这个数据模型仅支持一个subtask,现在考虑以下实体:
带有双箭头的线表明Task entity可以对应多个Subtask entity关系,这意味着一个任务可以有多个子任务,更不必说涉及到的父任务也能通过逆关系被包含进来。这个灵活性不仅方便,更节省了数据库的空间,因为父任务名称仅仅只需储存一次。如果你想要更进一步,让任务有子任务的子任务,下一步该怎么办?思考下重新构建以下任务实体:
模型现在支持无线深度的子任务,因为任务实体关联的是其本身!Core Data的可扩展性和灵活性还只是其优势中很少的一部分。Core Data并不仅仅利用关系数据库的优势,而且你不必写任何SQL语句来使用它。Core Data替你承担了责任,并且为你自动优化了生成的SQL语句。
 
我还没有深入研究Core Data的其他价值方面,比如模型版本控制、迁移、验证以及变更管理和iCloud同步等等。如果有任何值得你投入时间的iOS框架,那就是Core Data。
 
3. 不使用模型版本控制和迁移
如果你已经编辑了一个管理对象模型,你可能已经犯了以下错误:
 
“此前用来打开store的模型不兼容以前用来创建store的模型”
 
当你创建数据持久化存储,它是基于一个特定的管理对象模型的。如果模型的结构发生了变化,那么持久化存储就必须更新以匹配。如果不这么做,store将会是不兼容的,并且不能打开。如果用户正使用的存储是基于你的没有使用版本控制的模型,那么app注定会崩溃。
 
为了确保模型迁移过程正常进行,你需要确保你在编辑模型前非常小心地添加了模型版本。
 
附注:一些变化,比如属性默认、有效性规则以及获取请求模板都可以被简化。
 
4.过多使用版本控制和迁移
一旦开发者了解到维持管理对象模型版本的简易,一些开发者不免会过分使用。这会产生一个过分复杂化的版本历史记录,如果每次更改都添加版本,这只会减缓模型的迁移。
 
在你发布Core Data app到App Store之前,你可以忽略版本控制,并按你喜欢的那样编辑模型。为避免“the store is incompatible”错误,可以简单地从开发设备上删除app,并再次在Xcode中运行。使用更新的模型部署一个新的持久化储存,就可以解决崩溃问题。一旦你把model version 1发布到App Store,你所有的用户将会有version 1的持久化存储。从这一点上来说,如果更新模型则必须添加一个新版本。我们假定你的用户正使用model version 1。当开发一个更新版的app,你已经添加了model versions 2, 3和4。使用以下小技巧可以减少版本历史,而不用发布model versions 2, 3,4...
删除model 2的内容
复制model 4内容至model 2
设置model 2为当前model
删除model 4
 
当然,你需要考虑model 1中的实体如何映射到更重要的model 2中,尤其在你没有使用轻量级迁移时。更加详细的关于model版本控制和迁移,可查看“Learning Core Data for iOS”这一个完整章节。
 
5.把一切留在内存中
你主要关注功能和特性,所以你很容易忘记那些不那么迷人的主题,比如保持低内存占用。有些开发者会在进行性能测试前急匆匆地发布应用,尤其是截止期限所迫的情况下。不过还好我们仍有一些措施帮你保持低内存占用。
 
当你管理对象时,在内存方面可使用管理对象context。一旦你完成了管理对象,你应该通过调用以下NSManagedObjectContext实例方法之一来移除它们。
通过重置来从context中移除所有管理对象。
使用refreshObject:mergeChanges并传入参数NO 从context中移除特定的对象。
 
使用以上任意一个方法可以确保未使用的对象没有浪费空间。为了在context中提高对象数目的可见性,可记录[[context registeredObjects] count]结果以方便在控制台中调试。 
 
6.设计一个低质量的Managed Object Model
如果你储存照片、音频或者视频,你在模型设计上要十分小心。记住关键的一点是当你把managed object带入context时,你正把所有数据一并带入内存中。例如,如果一个managed object带有一个图像属性,该属性存储了一张很大的图片,同时一个表格视图使用它来创建众多实体对象并填充单元格, 那么app性能就会受到影响。即时你使用一个获得结果的控制器,你仍需要一次加载很多高分率的图片,这个操作不会立刻执行。为了解决这一问题,持有大量对象的属性应该被分裂进一个关联实体。按照这个方法,大量对象可以被持久化存储。如果你需要在table view中展示照片,你应该使用自动生成缩略图代替。
 
7.不提前加载数据 
当你把模型加载进一个更新的app时,要注意不要意外地加载一个基于旧模型的默认数据存储。如果你这么做了,那么对一些用户来说,可能会在运行应用的时候导致崩溃。这个威胁可以从根本上阻止开发者加载一个默认的数据存储。
 
如果有默认数据包含在app中,那app就更容易学习和使用了。一个程序越容易使用,那么用户就越有可能继续使用它。用户使用一款应用的时间越长,那么用户传播它的机会就越大,最后也会提升应用潜在的销售情况。为了避免在提供默认数据的情况下出现的更新时崩溃现象,你需要一个好的测试策略。
 
另外,你也需要深刻、准确地理解你想把什么样的模型版本和存储发布到App Store。你应该部署一个未改变的App Store应用版本到你的设备上,添加数据,然后彻底测试升级进程。
 
8.只使用单一的Contexts 
Core Data的实现至少需要一个context 在主线程上操作。用户接口也需运行在主线程,因此任何减缓主线程的行为都会降低程序的响应能力。虽然使用一个context非常容易,但是性能问题会悄然出现,除非你的数据设置非常小。比如,如果你想要生成数据缩略图,或者导入一些数据,app就会这些过程中出现阻塞现象。
 
自从iOS 5以后,管理多个context已经变得非常容易了。现在你可以配置一个context 层级,并在前台和后台运行一些contexts。通过配置后台context作为前台 context的父类,你就可以实现后台保存。通过配置后台context作为前台context的子类,你就可以像导入对象一样导入context来自动更新用户接口.
 
9.不理解iCloud Integration的局限性
iOS 7发布以后 ,Core Data集成iCloud的实现变得更加简单。iCloud一个关键性的限制是它的数据被约束在一个iCloud账户中。由于iCloud账户是与用户设备的方方面面交错在一起,所以分享iCloud账户是不切实际的,不推荐的。这意味着iCloud 不能被用来共享。比如,假定一位丈夫和妻子想要在同一个购物列表上列出物品,这一点当前对iCloud来说也是不可能的。
 
除了账号限制,iCloud也不支持ordered relationships,也限制你的轻量级的model迁移。跳出这个圈子思考,如果你对app使用的收集分析统计比较感兴趣,你可以考虑使用Backend-as-a-Service (BaaS)。
 
10.不考虑现有的客户数据集成iCloud
在iOS 7中,iCloud集成Core Data已经容易了很多,很多开发者有信心在应用中支持它,此前用它来托管珍贵的用户数据并不稳定。这导致了很多现有的app仅有本地储存,比如我自己的‘Teamwork’ app。
 
iOS 7中iCloud重要的简化之一是fallback store的引入,它允许在iCloud accounts和iCloud Documents和Data之间无缝过渡。用户可以使用支持iCloud的app,即便他们没有任何网络连接,并在有可用网络时把数据集成到iCloud中。
 
虽然这有点不可思议,基于iOS 7之前版本开发的 应用中,用于储存用户数据的本地存储方案都应该被遗忘。
 
如果你仅打开iCloud,那你将使用一个不同的储存,并且你将需要把用户的本地数据合并到iCloud。在你尝试把用户数据集成到iCloud之前,你需要检查以下几点:
用户注册了iCloud吗?
用户想要在app中使用iCloud吗?
用户希望把本地数据合并到iCloud吗?
 
如果以上的答案中有一个“no”,那么这个app应该能在未来处理不同的答案。如果你的答案是“yes”,那么你需要管理用户本地数据迁移到iCloud的进程。当用户的多个设备上存有本地数据时,事情就变得有趣了。如果是这样,那你将需要考虑重复数据删除策略了。
 
from :(http://www.cocoachina.com/applenews/devnews/2014/0219/7851.html)
iOS CoreData详解(六)深入理解数据模型 原创Blog,转载请注明出处 blog.youkuaiyun.com/hello_hwc 之前的五篇文章 1. 堆栈与基本概念 2. 基本操作 3. 与Tableview协作-NSFetchedResultController 4. CoreData原理Faulting and Uniquing 5. CoreData与多线程前言:Coredata是一个良好的对象图管理工具。那么对象图 阅读详情

相关推荐

真机执行CoreData查询Fetch请求时App发生崩溃(模拟器中正常)的原因及解决

在本篇博文里,我们介绍了CoreData查询请求在真机中导致App崩溃(模拟器中一切正常)的原因和解决办法。

享受开发,颠倒银河 633

使用Core Data时需要避免的三个常犯错误

原文:Three Common Core Data Mistakes to Avoid 作者: Bart Jacobs 译者: CocoaChina-ydatong(简书) 熟悉 Core Data 的开发者并不认为这个框架用起来很难。如果你遵循这个框架的规则,Core Data 不会让你感到困惑。但通常这也是个问题,开发者犯错往往是因为违反了某条他们并不

dingyawei123的专栏 408

深入理解CoreData:iOS应用数据管理实战示例

本文还有配套的精品资源,点击获取 简介:本项目是一个关于使用Apple的CoreData框架在iOS平台上管理应用数据的示例。CoreData是一个功能强大的对象图形管理系统,负责存储、检索和管理模型层对象。开发者可以通过创建数据模型、设置实体关系、执行查询及更新数据库来详细了解其工作原理。本示例详细展示了如何在Xcode项目中实现这些操作,包括数据模型设计、实体关系配置、...

weixin_36019375的博客 1146

使用Core Data应避免的十个错误

Core Data是苹果针对Mac和iOS平台开发的一个框架,主要用来储存数据。对很多开发者来说,Core Data比较容易入手,但很难精通,如果没有正确的学习方法,你将很难真正理解它,更不用说精通了。 “” 阅读器 iOS开发iOSCore Data 原文:Avoiding Ten Big Mistakes iOS De

hong1595的专栏 944

优矿数据获取.nb

主要是用于如何在优矿这个金融交易平台上获取数据,特别适合做多条件多因子选股值利器

信捷XD/XL系列PLC与C#通信实战:Modbus-RTU协议详解(附完整代码)

本文详细介绍了信捷XD/XL系列PLC与C#通过Modbus-RTU协议实现高效通信的实战指南。从硬件连接到软件配置,再到核心通信功能的实现与优化,提供了完整的代码示例和工业级应用建议,帮助开发者快速构建稳定的自动化通信系统。

weixin_28292761的博客 511

优矿量化实验室———转自知乎

出处:https://www.zhihu.com/question/20874888 https://www.zhihu.com/question/20874888/answer/87738147?utm_source=wechat_session&utm_medium=social#showWechatShareTip 对是优矿的总结和汇总,蛮不错的。分享一下。作者是:Tommy老...

weixin_34354173的博客 3165

工业自动化中气动夹爪选型、调试与维护全流程实战解析

在工业自动化领域,气动执行元件是实现精准抓取与搬运的基础。其工作原理是通过压缩空气驱动气缸,转化为直线或旋转运动,从而控制夹爪的开合。这类技术因其结构简单、响应快速、成本低廉及维护方便,在自动化产线中具有极高的技术价值,是实现高效、可靠物料搬运的核心单元。其典型应用场景涵盖电子装配、汽车制造、食品包装等行业的上下料、分拣与定位工序。本文以工业自动化中常见的二指平行气动夹爪(常被工程师代号化为“Gripper-A”)为例,深入剖析其从硬件选型、气动系统集成到程序逻辑联锁的完整工程实践。内容聚焦于夹持力计算中惯

weixin_42629671的博客 366

金融数据获取系列之一(优矿)

1. 优矿平台简要介绍 2. 基于优矿平台的示例 获取中国大陆股票市场:(18指数) 上证指数:上证综指、上证A指、上证B指、上证50、上证180、上证380; 深证指数:深证成指、深证综指、深证A指、深证B指; 中证指数:沪深300、中证100、中证500、中证800、中证1000; 中小板指数:中小板指、中小板综、中小300。 剔除日成交量数据为零的初期数据,选取自日成交量数据存在至 201...

爱数据爱统计 1万+

保姆级教程:不用看古早代码,5分钟搞懂泛微ecology9附件存储与接口调用

本文详细解析了泛微ecology9附件存储与接口调用的核心原理,提供从基础概念到实战操作的完整指南。通过拆解文档化附件设计理念、解析RESTful接口参数,并给出Python代码示例,帮助开发者快速掌握附件上传与业务集成的关键技巧,提升二次开发效率。

weixin_28688385的博客 351

setoolkit克隆网站获取用户信息

一、环境 kali、DVWA 二、步骤 首先打开kali,输入setoolkit 依次选择选项1-选项2-选项3-选项2 输入钓鱼网站的网址(默认为本地网址) 输入要克隆的网址URL 这里我的网址如图,将网址复制 然后模拟攻击场景,攻击者向受害者发送了一条钓鱼链接,此链接与DVWA的登陆页面完全一样,受害者点击之后并进行登陆信息 点击login之后,用户信息就被setool...

BeatRex的博客 2997

php接口 ios 网络错误代码,php - iOS8 HTTP Post网络连接丢失错误 - 堆栈内存溢出

我在iPhone 6上使用Xcode 6.1.1,iOS8.1进行测试。基本上,我使用Core Data来存储数据, NSMutableURLRequest将HTTP Post请求发送到服务器上的PHP ,然后插入MySQL 。NSMutableURLRequest *newRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLW...

weixin_39525617的博客 208

Zemax非序列模式实战:手把手教你设计光纤耦合圆光斑整形系统(附Thorlabs透镜选型)

本文提供了一份基于Zemax非序列模式的光纤耦合圆光斑整形系统实战设计指南。文章详细讲解了从圆柱体光源建模、Thorlabs商业透镜库选型调用,到系统搭建、光线追迹与优化的完整流程,旨在帮助工程师高效完成从仿真到落地的光束整形系统设计。

weixin_28335283的博客 632

iOS CoreData的使用

CoreData是一个专门管理数据服务的框架,把OC对象和存储在SQLite文件中的数据进行互相转换,极大地方便了开发者在数据服务方面的开发。 1. 创建CoreData 在文件创建区下,选择【Core Data】下的【Data Model】 输入CoreData的文件名Model.xcdatamodel Model.xcdatamodeld文件默认是Swift的,如果想要改成oc,可以在打开Model.xcdatamodeld文件,在右侧工具栏中修改。 2. 创建Entity CoreData文件下

假装你是大灰狼的专栏 6722

DataGridView 右键菜单复制(公共)

dataGridView1.CellMouseClick += new DataGridViewCellMouseEventHandler( (sender1, e1) => { if (e1.Button == MouseButtons.Right) {

沁心渃水 2832

ROS 之 使用yocs_velocity_smoother对机器人速度进行限制

yocs_velocity_smoother是一个速度、加速度限制器,用来防止robot navigation的速度/转速过快,加速度/快减速过大。Bound incoming velocity messages according to robot velocity and acceleration limits. The velocity smoother nodelet runs together with the kobuki_node to apply robot’s velocity and .

https://shixuebin.gitee.io/hexo-blog/ 2622

CoreData 深入理解6 Mapping Model

通常,我们都会尽量使数据模型的变化尽量简单。但有些情况下,不得不进行大的改动,甚至是重新设计数据模型。在这种情况下,之前提过的简单数据迁移已经无法适应了,需要引入Mapping Model这个中间层。 这时,又想起之前提过的一句话: There is no problem in computer science that can’t be solved by adding

yangtongwang123456的专栏 726

从 AI 助手到 ADT 自动化桥梁:全面解析 Vibing Steampunk 的定位、能力边界与典型使用场合

Vibing Steampunk是一个面向SAP ABAP开发的AI自动化工具集,它通过ADT API将SAP开发能力系统化地暴露给AI助手和命令行工作流。该工具支持ECC、S/4HANA等所有启用ADT的系统,提供代码读取、修改、测试、调试等全流程自动化能力。核心功能包括AI调试、上下文压缩、ABAP语言服务、Lua脚本自动化等,并内置多重安全控制。其分层架构兼容标准ADT和WebSocket扩展,既适合AI驱动开发,也支持传统DevOps自动化,特别适用于老系统代码考古、知识接力和复杂问题诊断场景。

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

CoreData实例分析学习(1)

Core Data是个好东西,在数据储存操作上速度快,容易操作,是一种类似关系数据库的东西。但是有些不那么好学,那到底Core Data是怎么操作的呢?怎么用呢?怎么来编程呢?我们一起来学习吧,接下来使用苹果提供的实例程序Locations来作分析: >程序介绍: 右侧是改程序的截图,基本上来说就是通过使用Core Location来得到当时的位置,然后在点击“+”的时候记录下当时的经纬度。通

silva_831的专栏 666

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

CoreData 深入理解5 Mapping Model

通常,我们都会尽量使数据模型的变化尽量简单。但有些情况下,不得不进行大的改动,甚至是重新设计数据模型。在这种情况下,之前提过的简单数据迁移已经无法适应了,需要引入Mapping Model这个中间层。 这时,又想起之前提过的一句话: There is no problem in computer science that can’t be solved by adding

fhbystudy的专栏 2676

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

swift3.0:CoreData的使用

一、介绍 CoreData不像slqite3那样编写代码繁琐,同时避免了使用了SQL语句的麻烦,也可以回避使用C语言的语法,降低了iOS开发的技术门槛。 CoreData可降低开发成本,提高代码质量。它是一个完全面向对象的API,能够合理管理内存,负责在数据库中存储数据,底层也是由类似 于SQL的技术实现的。CoreData是持久化存储的最佳方式,数据最终的存储类型可以是SQLit...

dienangpiao2051的博客 185

数学建模模型总结

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

iOS CoreData技术学习资源汇总

一、CoreData学习指引 1. 苹果官方:Core Data Programming Guide   什么是CoreData?   创建托管对象模型   初始化Core Data堆栈   提取对象   创建和修改自定义托管对象 2.Core Data在 macOS 10.12 , iOS 10.0, tvOS 10.0和watchOS 3.0中的新特性   国内比较好的Cor...

weixin_34014277的博客 125

coreData 深入理解4 --总结 (线程安全与同步--iOS5 前后对比)

目录(?)[+] Core Data是iOS中很重要的一个部分,可以理解为基于SQLite(当然也可以是其他的Storage,如In-memory,只是SQLite比较常见)的一个ORM实现,所以有关系数据库的特性,又不用写SQL。顺便吐一下槽,官方说法是使用Core Data能减少50%-70%的代码量,但相信用过的人应该都心里明白,Core Data使用起来还是比较麻烦的

yangtongwang123456的专栏 640

IOS学习——数据持久化(二):初识CoreData

请配合 姊妹篇 食用效果更佳!!! 昨天被问到 SQLite3与Core Data有什么区别,当时只是想到了一个是充分利用了传统的SQL语句,另一个是充分利用了面向对象的编程方法,今天早上想了一会,决定以后再有人问我这个问题我就这么回答: 两个方法都可以完成IOS中数据持久化的任务,都是ORM(object-relational mapping)关系-对象映射的解决方案,SQLIte3本身是一

锰酸钾拌饭的博客 556
上一篇: Fragment 构建程序的框架
下一篇: Objective-C 基本类的Category (全而强大)
皓浩
博客等级 码龄18年 157粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值