Android 基础概述(二)

安卓入门二 Kotlin基础 但大佬们的思维就比较活跃,因为开发过程中关注的一个 DOM/ View 的属性是很少的,所以就创造了一个轻量级的数据结构来表示一个 DOM/View 节点,由于数据结构比较轻量,那么销毁创建就可以随意点。如果我们频繁的变更状态,那就会频繁的触发 Recomposition,如果每次还是重新生成一个巨大的 Virtual DOM 树,那框架内部的 diff 就会非常耗时,那么性能问题随之就来了,这是很多同学用 Compose 写出的代码卡顿的原因。选择任意一个日期,可以发现弹出的toast是! 阅读详情

1、ProgressDialog的使用

ProgressDialog继承自AlertDialog,AlertDialog继承自Dialog,实现DialogInterface的接口。

ProgressDialog的创建方式有两种:new Dialog和调用 Dialog的静态方法Dialog.show()

//方式一:new Dialog
final ProgressDialog dialog=new ProgressDialog(this);
dialog.show();



// 方式二:使用静态方式创建并显示,这种进度条只能是圆形条,设置title和Message提示内容
ProgressDialog dialog2 = ProgressDialog.show(this, "提示", "正在登陆中");

// 方式三 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数boolean indeterminate设置是否是不明确的状态
ProgressDialog dialog3 = ProgressDialog.show(this, "提示", "正在登陆中", false);

// 方式四 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数boolean cancelable 设置是否进度条是可以取消的
ProgressDialog dialog4 = ProgressDialog.show(this, "提示", "正在登陆中",false, true);

例子:

private void progressDialogShow() {
   progressDialog = ProgressDialog .show(activity, activity.getResources().getText(R.string.dialog_message_title), activity.getResources().getText(R.string.dialog_text_wait), true, false);
    }


// 方式五 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数 DialogInterface.OnCancelListener
// cancelListener用于监听进度条被取消
ProgressDialog dialog5 = ProgressDialog.show(this, "提示", "正在登陆中", true,true, cancelListener);


方式五中需要一个cancelListener,代码如下:

private OnCancelListener cancelListener = new OnCancelListener() {

  @Override
  public void onCancel(DialogInterface dialog) {
  // TODO Auto-generated method stub
  Toast.makeText(MainActivity.this, "进度条被取消", Toast.LENGTH_LONG).show();

  }
};


ProgressDialog的样式有两种,一种是圆形不明确状态,一种是水平进度条状态

第一种方式:圆形进度条

final ProgressDialog dialog = new ProgressDialog(this);
		dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);// 设置进度条的形式为圆形转动的进度条
		dialog.setCancelable(true);// 设置是否可以通过点击Back键取消
		dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条
		dialog.setIcon(R.drawable.ic_launcher);//
		// 设置提示的title的图标,默认是没有的,如果没有设置title的话只设置Icon是不会显示图标的
		dialog.setTitle("提示");
		// dismiss监听
		dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {

			@Override
			public void onDismiss(DialogInterface dialog) {
				// TODO Auto-generated method stub

			}
		});
		// 监听Key事件被传递给dialog
		dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {

			@Override
			public boolean onKey(DialogInterface dialog, int keyCode,
					KeyEvent event) {
				// TODO Auto-generated method stub
				return false;
			}
		});
		// 监听cancel事件
		dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {

			@Override
			public void onCancel(DialogInterface dialog) {
				// TODO Auto-generated method stub

			}
		});
		//设置可点击的按钮,最多有三个(默认情况下)
		dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定",
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub

					}
				});
		dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub

					}
				});
		dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "中立",
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub

					}
				});
		dialog.setMessage("这是一个圆形进度条");
		dialog.show();
		new Thread(new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				try {
					Thread.sleep(5000);
					// cancel和dismiss方法本质都是一样的,都是从屏幕中删除Dialog,唯一的区别是
					// 调用cancel方法会回调DialogInterface.OnCancelListener如果注册的话,dismiss方法不会回掉
					dialog.cancel();
					// dialog.dismiss();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}
		}).start();

其中通过Thread.sleep(5000)模拟后台操作。

cancel和dismiss方法本质都是一样的,都是从屏幕中删除Dialog,唯一的区别是:调用cancel方法会回调DialogInterface.OnCancelListener如果注册的话,dismiss方法不会回掉。


 第二种方式:水平进度条


	// 进度条还有二级进度条的那种形式,这里就不演示了
		final ProgressDialog dialog = new ProgressDialog(this);
		dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置水平进度条
		dialog.setCancelable(true);// 设置是否可以通过点击Back键取消
		dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条
		dialog.setIcon(R.drawable.ic_launcher);// 设置提示的title的图标,默认是没有的
		dialog.setTitle("提示");
		dialog.setMax(100);
		dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定",
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub

					}
				});
		dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub

					}
				});
		dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "中立",
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub

					}
				});
		dialog.setMessage("这是一个水平进度条");
		dialog.show();
		new Thread(new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				int i = 0;
				while (i < 100) {
					try {
						Thread.sleep(200);
						// 更新进度条的进度,可以在子线程中更新进度条进度
						dialog.incrementProgressBy(1);
						// dialog.incrementSecondaryProgressBy(10)//二级进度条更新方式
						i++;

					} catch (Exception e) {
						// TODO: handle exception
					}
				}
				// 在进度条走完时删除Dialog
				dialog.dismiss();

			}
		}).start();


2、AlertDialog详解

什么是Dialog
Dialog类,是一切对话框的基类,需要注意的是,Dialog类虽然可以在界面上显示,但是并非继承于View类,而是直接从java.lang.Object开始构造出的。类似于Activity,Dialog也是有生命周期的,它的生命周期由Activity来维护。Activity负责生成、保存、恢复它。在生命周期的每一个阶段都有一些回调函数供系统反向调用。

ShowDialog(int id)://负责显示标示为id的Dialog,这个函数如果调用后,系统将反向调用Dialog的回调函数onCreateDialog(int id);
dismissDialog(int id)://使标示为id的Dialog在界面当中消。

什么是AlertDialog?什么是AlertDialog.Builder?
        AlertDialog是Dialog的一个直接子类,一个AlertDialog可以有两个Button或者3个Button,可以对一个AlertDialog设置title、message。不能直接通过AlertDialog的构造函数来生成一个AlertDialog,一般生成的时候都是通过它的的一个内部静态类AlertDialog.Builder来构造的


进度条Dialog:ProgressDialog
        顾名思义,这个Dialog负责给用户显示进度的相关情况,它是AlertDialog的一个子类,在我的示例代码中,我是实现默认的进度显示。当然可以配置自己的进度条。同时有一点,提醒大家要注意,ProgressDialog不需要Builder这个内部静态类进行构造,而是直接使用构造函数进行构造。


首先是一个最简单的应用,就是弹出一个消息框,在android中可以这样实现:

new AlertDialog.Builder(self)
 .setTitle("标题") 
 .setMessage("简单消息框")
 .setPositiveButton("确定", null) 
 .show(); 


上面的代码中我们新建了一个AlertDialog,并用Builder方法形成了一个对象链,通过一系列的设置方法,构造出我们需要的对话框,然 后调用show方法显示出来,注意到Builder方法的参数 self,这个其实是Activity对象的引用,根据你所处的上下文来传入相应的引用就可以了。例如在onCreate方法中调用,只需传入this即 可。

下面是带确认和取消按钮的对话框:

new AlertDialog.Builder(self)  
  .setTitle("确认") 
  .setMessage("确定吗?") 
  .setPositiveButton("是", null) 
  .setNegativeButton("否", null) 
  .show(); 


可以用一个方法来创建一个对话框:

  private void showRegisterSuccess(){
        new AlertDialog.Builder(activity)
                .setTitle(activity.getResources().getString(R.string.dialog_message_title))
                .setMessage(activity.getResources().getString(R.string.success_register_success))
                .setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                }).show();

    }

注意到,这里有两个null参数,这里要放的其实是这两个按钮点击的监听程序,由于我们这里不需要监听这些动作,所以传入null值简单忽略掉,但是实际开发的时候一般都是需要传入监听器的,用来响应用户的操作。


下面是一个可以输入文本的对话框:

new AlertDialog.Builder(self) 
  .setTitle("请输入") 
  .setIcon(android.R.drawable.ic_dialog_info) 
  .setView(new EditText(self)) 
  .setPositiveButton("确定", null) 
  .setNegativeButton("取消", null) 
  .show(); 


如上代码,我们用setView方法,为我们的对话框传入了一个文本编辑框,当然,你可以传入任何的视图对象,比如图片框,WebView等。。尽情发挥你的想象力吧~

下面是单选框与多选框,也是非常有用的两种对话框:
new AlertDialog.Builder(self) 
  .setTitle("请选择") 
  .setIcon(android.R.drawable.ic_dialog_info)                 
  .setSingleChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, 0,  
    new DialogInterface.OnClickListener() {                            
       public void onClick(DialogInterface dialog, int which) { 
          dialog.dismiss(); 
       } 

    } 

  ) 
  .setNegativeButton("取消", null) 
  .show(); 


new AlertDialog.Builder(self) 
 .setTitle("多选框") 
 .setMultiChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, null, null) 
 .setPositiveButton("确定", null)                 
 .setNegativeButton("取消", null) 
 .show(); 


单选和多选对话框应该是我们平时用的非常多的,代码应该很好理解,下面再最后介绍两个列表对话框:

new AlertDialog.Builder(self) 
.setTitle("列表框") 
.setItems(new String[] {"列表项1","列表项2","列表项3"}, null) 
.setNegativeButton("确定", null) 
.show(); 

最后,在对话框中显示图片:

ImageView img = new ImageView(self); 
img.setImageResource(R.drawable.icon); 
new AlertDialog.Builder(self) 
 .setTitle("图片框") 
 .setView(img) 
 .setPositiveButton("确定", null) 
 .show(); 


其它更为详尽的解说地址:http://blog.youkuaiyun.com/woaieillen/article/details/7378324

安卓内存基础教程 声明:下面的教程是本人用于安卓内存数据技术分析和逆向安全研究,禁止非法用途。同意声明才往下看。 本教程是我利用业余时间出的。应该是早期极为罕见的第一套完整体系的安卓网游内存分析的教程。教程简单、粗暴、直接有效,实用性很强的。现在公开给大家,希望对各位手机安全程序员的朋友有一定帮助。后面的帖子我也会跟大家讲价下安卓内存定位、安卓内存基地址+偏移+偏移、安卓内存管理等原理。 链接: https://p... 阅读详情

相关推荐

14天精通安卓开发基础

本文还有配套的精品资源,点击获取 简介:在14天内,本课程计划帮助具备Java基础的学习者高效掌握安卓开发。学习者将了解Android SDK、Android Studio IDE、安卓四大组件(Activity、Service、BroadcastReceiver、ContentProvider)、界面布局设计、应用生命周期管理、Intent通信机制、SQLite数据库应用...

weixin_36204513的博客 851

Android基础概述(二)

1. Callback 把耗时操作放到子线程运行, 在耗时操作完成后将结果返回到主线程来呈现或再处理时,子线程主动地调用主线程中处理结果的方法, 这种回调式的机制就是Callback。(Java中常用interface进行处理) 作用: >1.可以节省时间,不用长久的等待,充分利用了资源; >2.把接口方法的定义和调用给封装起来,方便使用。                 使用场景:

u014252442的专栏 257

出个AI8051U的PWM例程 | 3相互补SPWM变频驱动,PWMA-3个相位差120度的PWM互补输出

通道2输出: P2.2, PWMA2P输出, P2.3, PWMA2N输出, PWMA2相对PWMA1滞后120度相位.通道3输出: P2.4, PWMA3P输出, P2.5, PWMA3N输出, PWMA3相对PWMA1滞后240度相位.先别修改程序, 直接下载"Objects"里的"pwm.hex"测试, 下载时选择主频24MHz.主频32.768MHz, PWM周期1422, 刷新频率23040Hz,死区0.5us,通道1输出: P2.0, PWMA1P输出, P2.1, PWMA1N输出。

USB_CAN_8051的博客 690

二、Android基础系列学习-概述

AndroidStudio 的安装以及环境部署。

weixin_42944922的博客 190

PCIe设备内存访问实战:从ioremap到DMA映射的完整流程解析

本文深入解析了PCIe设备内存访问的完整流程,涵盖从CPU通过ioremap访问设备寄存器,到设备通过DMA映射高效读写主机内存的核心机制。详细探讨了虚拟地址、物理地址与总线地址的转换关系,对比了一致性与流式DMA映射的适用场景及同步要点,并阐述了IOMMU在安全与效率中的作用,为驱动开发者提供了实战代码与关键陷阱分析。

weixin_29201933的博客 505

基于 国产USRP B210 的通信+侦测+干扰三合一实验平台,解锁无线攻防全场景!

在当代复杂电磁环境与多样化通信需求并存的背景下,软件定义无线电(SDR)技术正展现出前所未有的系统灵活性与功能可重构性。由两台USRP-LW B210软件无线电设备模拟无线链路通信过程,能够模拟多种无线通信信号传输及图像传输场景,适用于通信协议验证、抗干扰测试及教学实验。,支持"通信-侦测-干扰-优化"的闭环实验流程,为无线通信领域的教学科研与工程应用提供了一套经济高效、功能完备的解决方案。系统可对通信链路信号进行快速、自动化侦测、识别、告警,并支持多种干扰信号生成、模式切换及效果评估功能。

luowave2012的博客 832

安卓开发—Android基础

安卓开发—Android基础 移动开发 移动开发也叫做移动互联网开发。是指以手机、PDA、UMPC等便携终端为基础,进行相应的开发工作,由于这些随身设备基本都采用无线上网的方式,业内也称作为无线开发。 移动应用包括早期的WM掌上助理设备,Web os设备、java设备、塞班设备,以及现在现在火热的安卓和苹果设备等移动应用的开发。 谷歌提供安卓平台,要开发,只需要掌握java语言,就可以在安卓平台上进行开发。 三大主流移动开发平台 以下是Android、IOS、Windows phone三大主流移

cs_loser的博客 1万+

3.5.3以太网ETH TC8-PMA物理层测试

英文原版-OA_Automotive_Ethernet_ECU_TestSpecification_Layer_1_100BASE-T1_v3.0.pdf。PMA测试时各个测试项目所进入的测试模式不同,如TX_01对应测试模式1;TX_04对应测试模式5;例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。TX_07对应测试模式5;物理层测试主要分为两部分:IOP测试(包括链接时间,信号质量,线路诊断),PMA测试。

qq_28664971的博客 7692

Android - 安卓概述

Android 是一种基于 Linux 的开源操作系统,适用于智能手机和平板电脑等移动设备。Android 是由 Google 和其他公司领导的开发的。Android 为移动设备的应用程序开发提供了统一的方法,这意味着开发人员只需为 Android 开发,他们的应用程序应该能够在由 Android 驱动的不同设备上运行。第一个测试版 Android 软件开发工具包 (SDK) 由 Google 于 2007 年发布,而第一个商业版本 Android 1.0 于 2008 年 9 月发布。

小屁孩大帅-保密的博客 1434

基于STM32+华为云IOT设计的云平台监控系统_102

本次设计结合现代生活的具体需求,设计出一套基于华为云IOT设计的云平台监控系统,可以远程实时查看家里光照强度、温湿度等信息,支持在云端控制家里的电器设备,实现远程控制。

7643

WiFi基本概念(六)(L-STF,L-LTF)

L-STF它由10个OFDM symbol(1,0,1,0,1,0,1,0,1,0)构成,每个symbol是0.8us,GI是0.2us,总计10us。Symbol的长度是正常长度的1/4,因此称为Short training field,主要用于快速进行信号检测,信号同步,自动增益控制,接收天线选择(Diversity Selection)。 由于symbol长度是正常的1/4,子载波的宽度是正常的4倍,能进行初略的信道估计,其使用了-24, -20, -16, -12, -8, -4, 4, 8, 1

reekyli的专栏 6861

配置Android Studio安卓模拟器

以上是创建AVD的两个方法,希望能对你有所帮助。

2301_81385743的博客 2万+

水与光的奇妙“切割之舞”:水导激光切割技术探秘

水导激光切割技术的诞生,是材料加工领域不断追求高精度、高质量加工的成果。传统激光切割技术在加工过程中,材料会因瞬间高温而产生热变形、热影响区大以及切割面粗糙等问题,这些弊端在对一些高精度、热敏性材料的加工中尤为突出 ,迫切需要一种新的技术来克服这些难题。水导激光切割技术的起源可以追溯到 20 世纪 80 年代。1986 年,德国公司 Aesculap-Werke AG 首次提出了将水流引入激光切割过程的创新想法,并制造出首代水导激光设备。不过,当时的技术尚处于雏形阶段,仅仅是在光纤出口添加了一小柱水流,激光

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1673

学 android需要什么基础,学习安卓开发需要什么基础?

学习程序开发一般都需要懂一些一定的C语言,现在大学里面和计算机相关的专业甚至理工类专业一般都会开设C语言课程。当然学习安卓程序开发除了懂C语言之外,还需要掌握一定的Java基础知识、Linux基础知识、数据库基础知识、网络协议、安卓基础知识、服务器端开发知识。①Java基础知识安卓应用程序开发是以Java语言为基础的,没有扎实的Java基础知识,只是机械的照抄别人的代码,是没有任何意义的。很多朋友...

weixin_33046983的博客 2616

Cadence OrCAD Capture CIS元器件管理时ERROR(ORCIS-6454): Temporary part number tracking is turned on报错的解决方法

使用Part manager对工程的元器件进行批量管理时,出现如下图所示的ERROR(ORCIS-6454): Temporary part number tracking is turned on报错其解决方法如下。

fydar的博客 3499

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

安卓基础概述

安卓基础知识学习(内容太多只阐述知识点基础部分三部分:配置文件,布局,java代码前期主要学习一下布局,以及基本的控件使用 配置文件 AndroidManifest.xml 包名 SDK依赖信息 <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="23" /> 权限依赖 application 基本 <appli

胡小远的专栏 493

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

(二)安卓基础布局

在安卓应用开发中,布局(Layout)是用户界面的基础结构。理解和使用不同的布局类型对于创建响应式和用户友好的界面至关重要。本文将介绍安卓开发中常用的布局类型、布局属性以及一些实践示例,帮助你掌握安卓基础布局。布局是用于定义用户界面结构的XML文件或代码。它决定了应用界面中各个组件(如按钮、文本框、图像等)的排列方式和位置。布局文件通常位于目录下,并以.xml为扩展名。安卓布局是构建用户界面的基础,掌握不同的布局类型和属性对于开发优秀的安卓应用至关重要。

小新的博客 1020

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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Android 安卓DataBinding(一)·基础

文章目录前言DataBinding介绍开始准备快捷按键实例代码(基本用法)运行效果 前言 今天2019年9月29日,本人优快云博客 称号 博客专家 审核通过了,为了庆祝,特此今天写一篇博客作为纪念! 欢迎扫描左方二维码(群号码:697614838),加入我的优快云粉丝群(请备注好你的专业)! DataBinding介绍 DataBinding 是谷歌官方发布的一个框架,其作用是实现数据绑定(...

两行代码 踏踏实实de工作 1万+

Android Framework概述

转发请注明转自:http://blog.youkuaiyun.com/zcxwww/article/category/6139115             这里写一些关于Android Framework比较重要的知识点,这些东西对于之后理解和研究Android Framework有很大好处,就是让我们脑子里先有一个大概的模型,以及认识一点之后经常会碰见的角色。       首先贴一张图,刚

南朝烟雨的博客 1万+

Android开发-创建安卓工程项目+安卓程序的运行

文章目录前言一、为什么学习Android1.1、什么是Android1.2、Android的特点1.3、Android开发的前景二、Android studio三、创建安卓工程项目四、第一个安卓程序的运行总结 前言 Android是基于linux平台的开源手机操作系统,该平台由操作系统,中间件,用户界面和应用软件组成。Android用户量巨大,且开发android应用程序免费,在有JAVA开发基础的情况下上手比较容易。 一、为什么学习Android 1.1、什么是Android 1.Android是基于

qq_52173163的博客 8757

安卓android记单词软件

基于安卓的记单词软件,用户在第一次使用的时候,需要点击注册登录,在登录成功后会有引导页面,引导页面可以简单介绍软件使用,用户可以跳过。引导页面后,会跳转到选择词汇本页面,选择完词汇本后,跳转至设置计划页面,设置完学习计划后,会跳转至首页面,在首页可以查看单词的学习进度等信息,有三个学习单词的按钮,分别是“开始记单词”,“单词回顾”,“单词测试”用于不同的学习功能,可以搭配学习使用。在“我的”里面。具有查看收藏信息,更换单词本、等其他功能。 开发环境: 前端:android studio 后端:jdk1.8

执笔浮云的博客 5659

Android核心基础——概述、布局、单击事件

1.1,安卓的体系结构1.2,Dalvik VM 和传统JVM 的区别 1,传统JVM 编写.java文件  编译为.class文件 打包成.jar文件,将java源码编译为class文件,然后将一组class打包成jar。 基于栈结构,栈存储于内存中,所以需要用到内存空间 2,Dalvik VM 编写.java文件  编译为.class文件  打包成.dex文件 打包成.a

a378983320的博客 661

Android(一) 安卓概述

一、Android简单介绍: Android是基于Linux内核的软件平台和操作系统; 它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分: 1) 底层以Linux核心为基础,由c语言开发,只提供基本功能。 2) 中间层包括函数库Library和虚拟机Virtual Machine,由C+开发。 3) 最上层是各种应用软件,包括通...

单胜凌的博客 3396

安卓Android入门

Android基于Linux内核,这使得它具有强大的硬件兼容性和稳定性。

m0_74154295的博客 2275

安卓基础学习 Day03 |常用布局-相对布局

目录写在前面的话一、相对布局(一)概述(二)注意事项(三)常用属性(四)测试二、补充内容 写在前面的话 1、内容参考自B站以及网络 2、内容如果有不对的,希望可以指出或补充。 3、巩固内容 一、相对布局 (一)概述 相对布局(RelativeLayout):也是常用布局之一,可以设置某一个控件相对于包裹它的(父容器)或者是和它一起被包裹的另一个控件(兄弟组件)的位置。 适用于较复杂的布局,主要针对的是线性布局嵌入多层的问题。一般采用 RelativeLayout + LinearLayout的layou

luck_ch09的博客 6051
上一篇: Android 基础概述(一)
下一篇: Android 调试之 Log和LogCat的详解
顺心是好
博客等级 码龄15年 2粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值