iOS程序猿之iOS动画基础

iOS开发 ----- UIViewController转场动画 UIViewController的转场动画1. 自从开始看UI,就一直有个问题,就是类似微信的那个页面切换的效果怎么实现,也就是这个效果想过ScrollerView,但这样的话,会增大VC之间的耦合度,导致管理起来很混乱,在加上tableView的话,分分钟不想写的节奏啊,于是乎开始爬各种博客,终于,找到了目前认为最完美的解决方案,这样写的话,可以完美的实现这样的效果,且VC之间的耦合度时最低的 D 阅读详情
iOS 中的动画是指一些视图上的过渡效果,合理利用动画能提高用户体验!

第一类: UIView 动画

UIView动画影响的属性有:
  • frame: 视图框架
  • center: 视图的位置
  • alpha: 视图的透明度
  • bounds: 视图的大小
  • transform: 视图的装换
  • backgroundColor: 背景色
UIView动画块的用法:(特点:全是类方法调用,结构上类似与自动释放池,开始与结束之间的部分是动画改变的部分)
UIView动画的几种设置方法:
  • 动画的开始
    // 参数1:标识符(名字)
    // 参数2:携带的参数
    [UIView beginAnimations:@"UIView" context:nil];
  • 动画持续时间:
    // 设置时间, 在多少秒钟完结动画
    [UIView setAnimationDuration:3];
  • 动画开始前延时:
    // 设置动画延迟, 延迟多少秒开始
    [UIView setAnimationDelay:0];
  • 动画的速度曲线
    // 设置速度曲线
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn]
  • 动画的反转
    // 设置反转
    [UIView setAnimationRepeatAutoreverses:YES];
  • 动画的循环次数
    // 设置循环执行
    [UIView setAnimationRepeatCount:1];
  • 设置动画的代理
    // 设置代理
    [UIView setAnimationDelegate:self];
  • 动画开始的代理方法
    [UIView setAnimationWillStartSelector:@selector(willStart)];
  • 动画结束的代理方法
    [UIView setAnimationWillStartSelector:@selector(willStart)];
  • 动画从当前状态继续执行
    // 设置持续执行动画
    [UIView setAnimationBeginsFromCurrentState:YES];
  • 动画提交
    // 3.动画提交
    [UIView commitAnimations];
UIView 动画的两种 block方法:
  • 普通的 block 方法
    [UIView animateWithDuration:1 animations:^{
        // 执行的动画
        _imageView.center = CGPointMake(200, 400);
    }];
  • 较常用的 block 方法(该 block 写动画结束后改做的事)
    // 参数3:该 block 写动画结束后改做的事
    [UIView animateWithDuration:1 animations:^{
        // 如果设置了反转属性,那么在动画结束后不用在另行添加动画效果了
        [UIView setAnimationRepeatAutoreverses:YES];
        // 这里写执行的动画
        
    } completion:^(BOOL finished) {
        // 上面动画结束触发(相当于 代理方法中的完成动画的方法)
        // 还可以继续添加其他的动画
        [UIView animateWithDuration:1 animations:^{
        } completion:^(BOOL finished) {

        }];

    }]; 

几种CGAffineTransform2D仿射变换

  • 平移
#pragma mark - 平移(2D仿射变换方法)
     
    // 参数3:该 block 写动画结束后改做的事
    [UIView animateWithDuration:1 animations:^{
        // 如果设置了反转属性,那么在动画结束后不用在另行添加动画效果了
        [UIView setAnimationRepeatAutoreverses:YES];
        // 执行的动画
        
        // 平移(2D仿射变换方法)
        // transform 形变属性
        // 参数1:填要形变的 View
        self.imageView.transform = CGAffineTransformTranslate(self.imageView.transform, 100, 0);
        
    } completion:^(BOOL finished) {
        // 上面动画结束触发(相当于 代理方法中的完成动画的方法)
        // 复原位置
        self.imageView.transform = CGAffineTransformTranslate(self.imageView.transform, -100, 0);

        
    }];

  • 缩放
#pragma mark - 缩放(2D仿射变换方法)

    [UIView animateWithDuration:1 animations:^{
        
        // 反转
        [UIView setAnimationRepeatAutoreverses:YES];
        
        // 缩放(2D仿射变换方法)
        // 参数2/3 是缩放的比例
        self.imageView.transform = CGAffineTransformScale(self.imageView.transform, 2, 2);
        
    } completion:^(BOOL finished) {
        self.imageView.transform = _transform;
    }];
  • 旋转
#pragma mark - 旋转(2D仿射变换方法)
    
    // 需求:
    // 点击按钮,开始旋转,再点停止转动
    
    [UIView animateWithDuration:0.1 animations:^{
        // 旋转
        // 参数二:旋转角度
        self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, M_PI_2);
    } completion:^(BOOL finished) {
        // 结束时调用旋转方法
        [self rotateAnimation];
    }];
    
  
    _isRuning = !_isRuning;
}

// 循环转
- (void)rotateAnimation
{
    if (_isRuning == YES) {
        [UIView animateWithDuration:0.1 animations:^{
            // 旋转
            // 参数二:旋转角度
            self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, M_PI_2);
            // 给旋转的初值
            self.isRuning = YES;
        } completion:^(BOOL finished) {
            // 结束时调用旋转方法
            [self rotateAnimation];
        }];
    }
}

实现两个视图控制器的界面动画跳转

需要创建一个控制器,把要实现跳转的两个控制器的 self.view 添加到这个控制器上

#import "RootViewController.h"
#import "SecondViewController.h"
#import "ThirdViewController.h"

@interface RootViewController ()

// 声明两个控制器
@property (nonatomic, retain) SecondViewController *secondVC;
@property (nonatomic, retain) ThirdViewController *thirdVC;
// 声明一个状态标识,标识显示哪个 View
@property (nonatomic, assign) BOOL isShowSecondVC;

@end

@implementation RootViewController

- (void)dealloc
{
    [_secondVC release];
    [_thirdVC release];
    [super dealloc];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor yellowColor];
    
    [self addChildViews];
    [self addButtonItem];
}

// 添加控制器并显示视图
- (void)addChildViews
{
    // 创建 thirdVC
    self.thirdVC = [[ThirdViewController alloc] init];
    // 把该控制器添加到 rootVC的子控制器
    <span style="color:#FF0000;">[self addChildViewController:self.thirdVC];</span>
    // 把 secondVC.view 显示出来
    <span style="color:#FF0000;">[self.view addSubview:self.thirdVC.view];</span>
    [_thirdVC release];
    
    // 创建控制器
    self.secondVC = [[SecondViewController alloc] init];
    // 把该控制器添加到 rootVC的子控制器
    <span style="color:#FF0000;">[self addChildViewController:self.secondVC];</span>
    // 把 secondVC.view 显示出来
    <span style="color:#FF0000;">[self.view addSubview:self.secondVC.view];</span>
    [_secondVC release];
    
    // 给标识一个初值
    self.isShowSecondVC = YES;
}

// 添加按钮
- (void)addButtonItem
{
    UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithTitle:@"跳转" style:UIBarButtonItemStylePlain target:self action:@selector(actionButton:)];
    self.navigationItem.leftBarButtonItem = button;
    [button release];
}

// 实现视图切换
- (void)actionButton:(UIBarButtonItem *)button
{
    if (_isShowSecondVC == YES) {
        
        <span style="color:#FF0000;">[UIView transitionFromView:self.secondVC.view toView:self.thirdVC.view duration:1 options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {
        }];</span>
    } else {
        // 切换过来
        // UIView 切换动画
        <span style="color:#FF0000;">[UIView transitionFromView:self.thirdVC.view toView:self.secondVC.view duration:1 options:UIViewAnimationOptionTransitionFlipFromRight completion:^(BOOL finished) {
        }];</span>
    }
    
    // 更改标识符状态
    _isShowSecondVC = !_isShowSecondVC;
    
}

CALayer 的基本属性

// 创建视图
- (void)addSubViews
{
    self.myView = [[UIView alloc] initWithFrame:CGRectMake(100, 150, 100, 100)];
    self.myView.backgroundColor = [UIColor orangeColor];
    [self.view addSubview:self.myView];
    [_myView release];
    
    
    // layer 是负责显示图层的
    // 要更改看到的形状,需要更改 layer
    
    // 设置圆角
    // 变圆的先决条件必须是长宽相同
    self.myView.layer.cornerRadius = self.myView.frame.size.width / 2;
    // 设置阴影的颜色
    // CGColorRef 是涂层绘制的颜色
    self.myView.layer.shadowColor = [UIColor yellowColor].CGColor;
    // 设置阴影的显示范围
    self.myView.layer.shadowOffset = CGSizeMake(10, 10);
    // 阴影透明度
    self.myView.layer.shadowOpacity = 1;
    // 模糊程度
    self.myView.layer.shadowRadius = 50;
    // 设置边框
    self.myView.layer.borderWidth = 5;
    // 设置边框的颜色
    self.myView.layer.borderColor = [UIColor redColor].CGColor;

layer 层动画

CAPropertyAnimation 是一个抽象类
CABasicAnimation 基础动画, 能实现类似:更改大小,旋转等动画
CAKeyframeAnimation 主要能实现类似按轨迹移动, 位置, 执行一组动画(背景颜色)

几种常用的 layer 层动画

  • 旋转
// 旋转
- (void)xyAnimation
{
    // 创建一个基础动画
    // 注意: KeyPath 一定不要拼错
    // 要更改的是 transform.rotation.x
    // 形变属性下 弧度的点 X 轴
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
    // 设置属性变化 到什么值
    // toValue 需要一个对象类型,即 NSNumber 或 NSValue
    animation.toValue = [NSNumber numberWithFloat:M_PI];
    // 设置动画时间
    animation.duration = 1;
    // 设置动画重复
    animation.repeatCount = 2;
    
    // 把设置好的动画添加到 layer上
    // 参数2:添加的动画标识
    [self.myView.layer addAnimation:animation forKey:@"transform.rotation.x"];
    
}
  • 改变 size
// 改变 size
- (void)sizeAnimation
{
    // 更改大小的话,需要更改 bounds.size
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"bounds.size"];
    // 设置改变的值
    // fromValue 初始值
    animation.fromValue = [NSValue valueWithCGSize:CGSizeMake(10, 10)];
    // toValue 结束值
    animation.toValue = [NSValue valueWithCGSize:CGSizeMake(100, 100)];
    // 设置时间
    animation.duration = 1;
    // 添加到 layer 上
    [self.myView.layer addAnimation:animation forKey:@"bounds.size"];
}
  • 改变颜色
// 改变颜色
- (void)changeBackGroundColor
{
    // 可以执行一组动画
    CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"backgroundColor"];
    
    // 创建绘制颜色
    CGColorRef color1 = [UIColor orangeColor].CGColor;
    CGColorRef color2 = [UIColor lightGrayColor].CGColor;
    CGColorRef color3 = [UIColor greenColor].CGColor;
    CGColorRef color4 = [UIColor blueColor].CGColor;

    // 改变一组颜色
    animation.values = @[(id)color1, (id)color2, (id)color3, (id)color4];
    
    // 设置时间
    animation.duration = 2;
    // 添加到 layer 上
    [self.myView.layer addAnimation:animation forKey:@"backgroundColor"];
    
}
  • 轨迹移动
// 轨迹移动
- (void)positionPoint
{
//    NSLog(@"%@", NSStringFromCGPoint(self.myView.layer.position));
    CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    // 创建一堆点
    NSValue *point1 = [NSValue valueWithCGPoint:CGPointMake(100, 200)];
    NSValue *point2 = [NSValue valueWithCGPoint:CGPointMake(200, 200)];
    NSValue *point3 = [NSValue valueWithCGPoint:CGPointMake(100, 300)];
    NSValue *point4 = [NSValue valueWithCGPoint:CGPointMake(200, 300)];
    NSValue *point5 = [NSValue valueWithCGPoint:CGPointMake(100, 400)];

    // 添加点进数组
    animation.values = @[point1, point2, point3, point4, point5];
    
    // 设置时间
    animation.duration = 1;
    // 添加到 layer上
    [self.myView.layer addAnimation:animation forKey:@"position"];
}
  • 左右晃动
// 左右晃动
- (void)positionX
{
    CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position.x"];
    
    CGFloat center = self.myView.layer.position.x;
    CGFloat left = center - 100;
    CGFloat right = center + 100;
    
    NSNumber *r = [NSNumber numberWithFloat:right];
    NSNumber *c = [NSNumber numberWithFloat:center];
    NSNumber *l = [NSNumber numberWithFloat:left];
    animation.values = @[r, c, l, c];
    // 设置时间
    animation.duration = 0.5;
    // 设置重复次数
    animation.repeatCount = 1000;
    // 添加到 layer上
    [self.myView.layer addAnimation:animation forKey:@"position.x"];
}
  • 3D 旋转
#pragma mark - 3D旋转
- (void)transform3D
{
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
    
    // 结束值
    animation.toValue = [NSValue valueWithCATransform3D:CATransform3DRotate(self.myView.layer.transform, M_PI, 10, 20, 20)];
    
    animation.duration = 1;
    
    [self.myView.layer addAnimation:animation forKey:@"transform"];
}
  • 组动画
#pragma mark - 组动画
- (void)groupAnimation
{
    // 创建组动画
    CAAnimationGroup *group = [CAAnimationGroup animation];
    
//////////////////////////////////////改变颜色/////////////////////////////////////////
    // 改变颜色
    // 可以执行一组动画
    CAKeyframeAnimation *animation1 = [CAKeyframeAnimation animationWithKeyPath:@"backgroundColor"];
    // 创建绘制颜色
    CGColorRef color1 = [UIColor orangeColor].CGColor;
    CGColorRef color2 = [UIColor lightGrayColor].CGColor;
    CGColorRef color3 = [UIColor greenColor].CGColor;
    CGColorRef color4 = [UIColor blueColor].CGColor;
    // 改变一组颜色
    animation1.values = @[(id)color1, (id)color2, (id)color3, (id)color4];
    
    
    
    
//////////////////////////////////////改变大小/////////////////////////////////////////
    
    
    // 更改大小的话,需要更改 bounds.size
    CABasicAnimation *animation2 = [CABasicAnimation animationWithKeyPath:@"bounds.size"];
    // 设置改变的值
    // fromValue 初始值
    animation2.fromValue = [NSValue valueWithCGSize:CGSizeMake(10, 10)];
    // toValue 结束值
    animation2.toValue = [NSValue valueWithCGSize:CGSizeMake(100, 100)];
    
    // 设置组动画时间
    group.duration = 3;
    // 设置组动画执行的动画数组
    group.animations = @[animation1, animation2];
    // 添加到 layer 上
    [self.myView.layer addAnimation:group forKey:@"group"];
    
}





iOS的几种动画 都是用animation写的几种动画效果,比如淡入淡出,延时滑动,点击颤抖等,所有动画写在一个登陆页面上.简单,实用 立即下载

相关推荐

IOS 基本动画(旋转、移动、闪烁、缩放等)

IOS 基本动画(旋转、移动、闪烁、缩放等)

iOS开发详解之几种基础动画篇

iOS 中的动画是指一些视图上的过渡效果,合理利用动画能提高用户体验! 第一类: UIView 动画 几种CGAffineTransform2D仿射变换 实现两个视图控制器的界面动画跳转 CALayer 的基本属性 layer 层动画 CAPropertyAnimation 是一个抽象类 CABasicAnimation 基础动画, 能实现类似:更改大小,旋转等动画 CAKeyframeAnimation 主要能实现类似按轨迹移动, 位置, 执行一组动画(背景颜色)

w_qiang75的博客 726

无感无刷电机控制进阶:反电动势过零检测的5种实现方案对比

本文深入探讨无感无刷电机控制中反电动势过零检测的5种实现方案,包括电阻分压虚拟中性点法、专用BEMF检测IC方案、基于ADC采样的数字锁相环、无传感器观测器技术及混合方案创新实践。通过对比分析各方案的优劣及适用场景,为电机控制工程师提供实用的技术选型指南,助力提升系统性能与成本效益。

weixin_28691741的博客 845

iOS开发(OC)——常用动画

iOS开发交流群:301058503 1、 旋转的加载动画,效果图如下 代码实现 /*慢慢消失的动画*/ CABasicAnimation *animation1 = [CABasicAnimation animationWithKeyPath:@"opacity"]; //动画完成后保持原状 animation1.fillMode = kCAFillMode...

菜鸟历程 4130

Cadence ADE实战:1GHz VCO相位噪声仿真全流程(附PSS/Pnoise避坑指南)

本文详细介绍了在Cadence ADE环境中对1GHz VCO进行相位噪声仿真的完整流程。重点剖析了PSS(周期性稳态分析)和Pnoise(周期性噪声分析)两大核心引擎的关键参数设置与避坑指南,帮助射频与模拟IC设计者准确评估VCO性能,解决仿真不收敛、结果异常等常见问题。

rock5的博客 671

Excel也能玩转K-means聚类?手把手教你用表格搞定用户分群(附完整公式)

本文详细介绍了如何在Excel中实现K-means聚类算法,无需编程即可完成用户分群。通过SUMIF、SQRT等基础函数,从数据预处理到最终分群全流程手把手教学,特别强调数据标准化和迭代优化的关键步骤,帮助运营团队低成本高效分析用户行为数据。

weixin_30555125的博客 181

Animation

一、iOS动画 iOS中实现一个动画十分简单,在view层面上通过调用 [UIView animateWithDuration:duration animations:^{ //执行动画 }] 但是它不能控制动画的暂停和组合,所以就需要用到CoreAnimation了。 iOS中的动画主要分为:基础动画(CABasicAnimation)、关键帧动画(CA

张梦磊 2058

Mixer-First Receiver适用于宽带阵列应用的接收机技术1

Mixer-First Receiver适用于宽带阵列应用的接收机技术1技术的背景单元级数字化阵列传统链路到Mixer-First链路的逻辑考虑三种场景小结 技术的背景 在文章《吊打全球的顶级毫米波数字阵列项目-MIDAS》中提到了DARPA在MIDAS项目中在毫米波实现宽带单元级数字化阵列用到了一个关键的叫做N-Path filter的技术,而这个技术同样出现在了《让微波射频工程师颤抖的芯片-MATRICs》的MATRICs芯片中。 为什么DARPA的各个合作研究机构选择这种技术?这篇来自Universi

ICONO的博客 2167

iOS的三种动画

iOS有三种动画.1.头尾式动画(不重要)基本上这些动画都是调用的UIView的方法.[UIView beginAnimations:nil context:nil];//准备开始动画[UIView setAnimationDuration:5];//设置时间[UIView commitAnimations];//提交动画(真正开始做动画)alpha = 0; // 透明度 取值范围 0 - 1(...

MeteoriteMan的博客 546

Shopee动态参数x-sap-Ri与x-sap-Sec逆向解析实战

现代电商前端反爬普遍采用动态参数校验机制,其核心是将设备指纹、DOM状态与时间上下文耦合生成不可复用的请求凭证。x-sap-Ri本质是渲染上下文唯一标识,依赖真实浏览器环境中的DOM树结构、Canvas像素指纹及毫秒级时间扰动;x-sap-Sec则是基于该标识与服务端同步密钥生成的HMAC-SHA256签名,具备强时效性与密钥轮换特性。这类机制显著提升了自动化采集门槛,广泛应用于Shopee商品详情页等高价值数据接口。本文聚焦于从Chrome DevTools调试出发,系统还原参数生成逻辑,覆盖DOM一致性

weixin_30603633的博客 896

手把手教你用TL431设计反激电源补偿器(附波特图调试技巧)

本文详细介绍了如何使用TL431设计反激电源补偿器,并提供了波特图调试技巧。通过实战经验分享,帮助工程师快速掌握补偿网络设计、分压电阻计算和稳定性判据,避免常见设计误区,提升电源稳定性与效率。

weixin_29201859的博客 378

【动画消消乐 】仿ios、android中常见的一个loading动画 074

前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~   自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,有幸拿过国奖、省奖等,已保研。目前正在学习C++/Linux(真的真的太难了~) 学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!   【动画消消乐】 平时学习生活比较枯燥,无意之间对一些网页、应用程序的过渡/加载动画产生了浓厚的兴趣,想知道具体是如何实

海到无边天作岸 山登绝顶我为峰 3751

智能车八邻域图像算法_二

智能车八邻域图像算法 文章目录智能车八邻域图像算法前言一、一些想法二、生长方向的使用1.点的生长方向的表示2. 用点的生长方向来做初步判断1.引入库2.读入数据总结 前言 上一篇里面讲过用八邻域来获得赛道边界:智能车八邻域图像算法 当已经能稳定获得赛道边界时,就可以进行元素识别,获得偏差了。 这里就介绍一下我的一些思路。 早在前两年,优快云上就有一篇关于八邻域如何处理元素的文章第十五届全国大学生智能汽车竞赛-双车组三轮图像处理总结,写得很好,我当时也参考了这篇文章,但是我觉得不是很详细,所以我这里想写得

技术缝合怪的博客 1万+

iOS程序猿之iOS绘图基础(draw)

iOS绘图基础(draw) 先说几个基本概念: context:上下文,ios绘图的方法都需要传一个上下文context,这个context在重写uiview的drawRect的方法里调用UIGraphicsGetCurrentContext()获取 path:路径,ios绘图可以想象为你拿着一支笔去画图,画几条线或几个点从而形成一个路径,之后可以利用理解去填色或者描边 stroke,

iOS_wq的博客 1565

26版SPSS操作教程(高级教程第二十一章)

#专注方能成事 #本期内容:信度分析 #由于导师最近布置了学习SPSS这款软件的任务,因此想来平台和大家一起交流下学习经验,这期推送内容接上一次高级教程第二十章的学习笔记,希望能得到一些指正和帮助~

你好! 1710

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

iOS程序猿之CAShapeLayer类(动画)

CAShapeLayer 指定形状路径 @property CGPathRef path; // 动画路径,默认为NULL /** * 不像大多数动画的性能,path(与所有CGPathRef动画属性)不支持隐动画。 * 路径对象可以使用任何的具体子类的动画CAPropertyAnimation * 如果此属性的值是不为NULL,则path使用指定的路径,而不是创建该层的合成后

iOS_wq的博客 894

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

程序猿从入门到放弃

成为一名程序猿的方法是多样的,路途是坎坷的,方向是繁多的,前途是光明的。哇咔咔,我竟然会排比,看来写一篇高中作文能拿个高分。

槑头脑的博客 6428

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

老版QQ原生表情gif动态

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

程序猿媳妇儿注意事项

[转载]http://www.admin10000.com/document/4861.html     一年前我和程序猿第一次见面,还是大一军训期间。我甚至不确定程序猿是否记得那是第一次见面。当时不小心装伪文艺参加了吉他社,想借一本吉他入门书,然后同在吉他社热心的海哥说他一同学有,就带着我去拿书了。于是我们第一次“见面”了,我只看见一个对着电脑,佝偻着背的背影......严重怀疑程序...

awp7451的博客 546

做程序猿的老婆应该注意的一些事情

来源:https://www.jianshu.com/p/fa00d09908ff今天来说说一位女青年的老公以及他们的事儿。如有雷同,纯属巧合。十一年前我和程序猿第一次见...

哲洛不闹的专栏 213

iOS APP体验设计 :程序猿 vs 设计湿

iOS APP体验设计不像互联网的体验设计那样,有一堆的方法论和可以“借鉴”的案例。 目前除了苹果的和前Palm的外,没有找到更好的设计哲学和方法论。        事实上,即便认真地研读了HIG和Zen of Palm,甚至是Oolon Colluphid的哲学巨作你也无法严格按照Guideline设计出一款出色的APP。其原因,我得从程序猿和设计湿说起。        程序猿 vs

精彩人生 586

iOS程序猿之毛玻璃效果

毛玻璃效果 在iOS开发中有时会遇到给视图或图片设置模糊,来提升用户体验,iOS7之后半透明模糊效果得到大范围的应用,下面整理几种毛玻璃效果的代码 1.UIToolbar 苹果在iOS7.0之后,很多系统界面都使用了毛玻璃效果,增加了界面的美观性,比如通知中心界面;其实在iOS7.0(包括)之前还是有系统的类可以实现毛玻璃效果的, 就是 UIToolbar这个类 iOS7.0 毛玻璃

iOS_wq的博客 1198

最值得程序猿学习的几个iOS 开源项目

相信从事软件开发的童鞋应该都有这样的感触,不管怎么学,知识总是学不完的,而且入门一门技术不难,要深入学习一门技术才是真的难。          任何计算机技术,如果不努力学习、进步,就会感觉自己停步不前,没成就赶不说,还会对自己的自信心也是一个严重的打击。对于从事iOS应用开发的童鞋来说呢,入门后到进阶是一个阶段、进阶到高级开发是一个阶段、高级开发到精通又是一个阶段,那每个阶段我们应

qwemaizi的博客 1383

iOS程序猿的flutter学习之路

日常学习Flutter开发的积累 推荐一些平时自己学习Flutter开发当中接触到的优秀文章 -------------------------基础知识 ------------------------- 基础知识 学习内容 网址 系列 Flutter中文网 官方学习网址,入门学习 点击前往 flutter环境搭建mac版 1.系统环境要求 2.下载flutter ...

Alvenhao的博客 1465
上一篇: iOS程序猿之keyChain保存登录名和密码
下一篇: iOS程序猿之linux的cp/scp命令+scp命令详解
iOS_wq
博客等级 码龄11年 10粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值