JavaSE(3)_运算符及运算符优先级

RK3588部署YOLO模型 包含模型量化+npu轻量化+ubuntu+RGA图像加速和多线程模型加速 包源码 本专栏为深度学习部署全栈学习体系,包含68篇由浅入深的教程,专为零基础学习者设计。内容涵盖TensorRT与RK3588平台部署技术,包含Jetson系列和RK系列硬件部署实战,采用"理论+源码+实战"三位一体的教学模式。学习路径从基础环境搭建到模型优化、容器化部署、多硬件平台适配,最终掌握工业级AI部署能力。特色包括C++基础教学、Docker容器化、INT8量化、多线程优化等核心技术,并附带YOLOv5、人脸检测、车牌识别等多个实战项目源码。适合算法工程师转部署方向、嵌入式开发者及对 阅读详情

目录

运算符

分类:

算术运算符

代码总结注意点:

赋值运算符

比较运算符

 注意:

逻辑运算符

 注意:

位运算符

 <<:举例如果问你写一条2*8最快的算数方式,答:(2<<3) ,这样的算法实际等于2*2^3        2<<3实际上就是"2"的二进制"10"向左移动了三位"10000"

>>:左移同理,只不过是除2ⁿ,二进制数向右移

>>>无符号右移动:

如何使用位运算异或^来交换两个数的值 

三元运算符

(了解即可)关于表达式同种类型问题,要求 表达式1 和 表达式2 类型一致,期间会自动类型转换提升再比较,或者不提升但容易接参数出现问题,后面接触包装类详细说明

三元运算符演示 

运算符的优先级(了解作为参考)


运算符

说明:是一种具有特殊功能的符号,用于表示数据的运算、赋值和比较等

分类:

  • 算术运算符
  • 赋值运算符
  • 比较运算符(关系运算符)
  • 逻辑运算符
  • 位运算符
  • 三元运算符

算术运算符

package javase3;

public class Operator1 {
    public static void main(String[] args) {
        //简单的加减乘不演示

        //除号  "/"
        int num1 = 12;
        int num2 = 5;
        int result1 = num1/num2;//2 整数相除结果为整数,后面小数会舍弃小数
        double result2 = num1/num2;//2.0 与上同理

        double result4 = (num1+0.0)/num2;//2.4 此时是double类型的num1除于num2,最终结果就是double类型
        double result5 = (double)num1/num2;//2.4 遇上同理

        //求余数 "%",结果的符号与被模数的符号相同.也就是结果的正负值取决于%前面的值
        int result6 = num1%num2;//2

        int result7 = -num1%num2;//-2
        int result8 = -num1%-num2;//-2
        int result9 = num1%-num2;//2

        double result10 = 2.1/1.1;//1.8181818181818181  取模运算的结果不一定总是整数。


        //值++或者值-- 先运算,后自增
        //++值或者--值 先自增,后运算
        int i1 = 10;
        int i2 = i1++;
        System.out.println("i1:"+i1+",i2:"+i2);//i1:11,i2:10

        int i3 = 10;
        int i4 = ++i3;
        System.out.println("i3:"+i3+",i4:"+i4);//i3:11,i4:11


        short s1  = 10;
//        s1 = s1 + 1;//编译错误,因为1默认是int类型,运算结果参考大类型也就是int类型
        s1 = (short)(s1+1);//11
        ++s1;//12,自增并不会改变数据类型,后面学的"+="也不会改变数据类型

        byte b1 = 127;
        ++b1;//-128


        /*取一个数随机数的每个位数上的熟*/
        int i5 = 123;//随机数
        int i6 = i5/100;//取百位数 1
        int i7 = i5%100/10;//取十位数 2
        int i8 = i5%10;//取个位数 3
    }
}

代码总结注意点:

  • 如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。
  • 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如:intx=3510;x=x/1000*1000;
  • “+”除字符串相加功能外,还能把非字符串转换成字符串.例如:System.out.println(“5+5=”+5+5); //打印结果是5+5=55 

赋值运算符

说明:

  • 符号:=,+=, -=, *=, /=, %=
  • 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理
package javase3;

public class Operator2 {
    public static void main(String[] args) {

        /*记住一个特点,使用赋值运算符运算并不会改变赋值运算符左边原有的数据类型及其最后赋值运算过程中其原有的值,
        这点很重要!!!!!!还有运算符优先级问题,后面拓展练习和图片解析会有解释*/
        int num1 = 10;
        num1 += 2; //12 这个操作就好比num1=num1+2; 但又不完全是,但可以这样理解

        int num2 = 12;
        num2 %= 5;//2 这个操作就好比num2 = num2 % 5; 但又不完全是,但可以这样理解

        /*在开发中,如果要使得变量实现+2的操作,最好使用"+="这种方式,因为不会改变原有的数据类型*/
        short s1 = 10;
        s1 += 2;//12
        Short s2 = Short.valueOf(s1);//转换成Short包装类型,后面会学习每个基本数据类型对应的包装类型
        System.out.println(s2 instanceof Short);//true 转换成Short包装类型判断是short类型


        /*拓展练习*/
        //连续赋值,这里编译却并没有提示错误,可能是BUG,但是在使用的时java会报提示这几个局部变量并没有被初始化
        int i1;
        int i2,i3;
        i1=i2=i3=10;//先将10赋予给i1,再将i1的值赋予给i2,再将i2的值赋予给i3
        int i4=10,i5=10;

        int sd = 0;
        /*先从左往右看,看看那个变量用了拓展运算方式,这个赋值运算符左边的变量只会到最终赋值才会发生变化,然后从右往左开始计算,
        sd=1 但是sd+=这种运算方式没到最后赋值是不会改变自己本身的值,也就是sd+=sd=1本质还是sd+=1*/
        sd+=sd=1;
        System.out.println("sd:"+sd);//sd:1
        int a=0,b=0,c=0;

        /*与上面同理,先从左往右看,从右往左开始计算,b+=这种运算方式没到最后是不会改变自己本身的值,也就是还是0,
        但是a的值没有被赋值运算符控制可以改变,因此a的值受到a=1影响,计算流程也就是b+=(a=1)/1*/
        b+=(a=1)/(b=1);
        System.out.println("a:"+a);//a:1
        System.out.println("b:"+b);//b:1

        /*与上同理,c+=限制了c变量没到最后赋值运算是不会改变自身的值,c的本质还是0,++c只是获得一个1的结果,简化后运算还是c+=1*/
        c += (++c);
        System.out.println("c:"+c);//c:1
        int a1,b1;
        a1=b1=0;

        /*与上面同理,a1和b1都被运算符限制了,本质上只是a1和b1还是为0,也就是b1+=1/1-->a1*=1-->b1+=0,最终a1和b1都是0*/
        b1+=a1*=b1+=(a1=1)/(b1=1);
        System.out.println("a1:"+a1);//a1:0
        System.out.println("b1:"+b1);//b1:0

        /*a1=b1=0*/
        b1+=b1+=a1+1;//与上同理,b1+=1
        System.out.println("a1:"+a1);//a1:0
        System.out.println("b1:"+b1);//b1:1

        /*a1=0,b1=1
        * 与上面同理,但有那么一点不同,这里b1被赋值运算符限制,而a1没有.也就是a1不仅能得出值,还能改变自身的值,而b1能得出值,
        * 但本质上还是自己本身也就是1,计算流程:b1+=1+2+1+2-->b1+=6-->b1=1+6*/
        b1+=++a1+(++a1+b1+++b1++);
        System.out.println("a1:"+a1);//a1:2
        System.out.println("b1:"+b1);//b1:7
    }
}

比较运算符

 注意:

  • 比较运算符的结果都是boolean型,也就是要么是true,要么是false。
  • 比较运算符“==”不能误写成“=” 
package javase3;

public class Operator3 {
    /*
    运算符之三:比较运算符
    ==  !=  > < >= <= instanceof

    结论:
    1.比较运算符的结果是boolean类型
    2.区分 == 和 =

    */
    public static void main(String[] args) {
        int i1 = 10;
        int i2 = 20;
        System.out.println(i1==i2);//false
        boolean b1 = true;
        boolean b2 = false;
        System.out.println(b1==b2);//false
    }
    /*这里不做引用类型的数据类型比较,因为会有一些规则,例如Integer,String常量池问题,涉及到JVM内存问题*/
}

逻辑运算符

  • &—逻辑与
  • |—逻辑或
  • !—逻辑非(反义词的意思)
  • && —短路与
  • ||—短路或
  • ^ —逻辑异或(相同则为false,不同则为false)

 注意:

  • 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
  • “&”和“&&”的区别:
  • 单&时,左边无论真假,右边都进行运算;
  • 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
  • “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
  • 异或(^)与或( | )的不同之处是:当左右都为true时,结果为false。理解:异或,追求的是“异”!
package javase3;

/*
运算符之四:逻辑运算符
& && | || ! ^

说明:
1. 逻辑与运算符操作的都是boolean类型的变量

*/
public class Operator4 {
    public static void main(String[] args) {
        //区分& 与 &&
        //相同点1:& 与 && 的运算结果都相同
        //相同点2:当符号左边是true时,二者都会执行符号右边的运算
        //不同点:当符号左边是false时,&继续执行符号
        //开发中,推荐使用&&,效率更高

        //区分:| 与 ||
        //相同点1:| 与 || 的运算结果都相同
        //相同点2:当符号左边是false时,二者都会执行符号右边的运算
        //不同点3:当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算
        //开发中,推荐使用||,效率更高

        /*这里只演示&和&&,|和||与其相反*/
        //&
        boolean b1 = false;
        int num1 =10;
        if (b1 & num1++>0){//两个条件都判断
            System.out.println("都为true,判断结果为true");
        }else{
            System.out.println("一个为false或者都为false,因此判断结果都为false");//打印这句
        }
        System.out.println("num1 = "+num1);//num1 = 11 ,验证了&两个条件都进行执行判断

        //&&
        boolean b2 = false;
        int num2 = 10;
        if(b2 && num2++>0){//两个条件都判断
            System.out.println("都为true,判断结果为true");
        }else{
            System.out.println("一个为false或者都为false,因此判断结果都为false");//打印这句
        }
        System.out.println("num:"+num2);//num2 = 10 验证了&&运算符号左边为false时就会短路,不再执行右边判断,直接得出false结果

        //!
        boolean b3=false;
        boolean b4=!b3;//true
        boolean b5=!b4;//false
        System.out.println("b4:"+b4);//b4:true
        System.out.println("b5:"+b5);//b5:false

        //^,这里顺便也演示if()函数的另外写法
        if(true^false) System.out.println("两个boolean值不一样,结果为true,执行这条代码");//代码被执行
        if(true^true) System.out.println("如果两个boolean值不一样,结果为true,执行这条代码");//代码未被执行,直接下一条代码
        System.out.println("否则就是两个boolean值一样,结果为flase,执行这条代码");//代码被执行

        /*拓展练习,这里可以用debug进行调试来看值的变化*/
        boolean b6 =true;
        boolean b7 =false;
        short z = 42;
        if((z++==42) && (b7=true)) z++;//if(true && true) z++;z=44 b7=true b6=false
        if((b6=false) || (++z==45)) z++;//if(false || true) z++;z=46 b6=false b7==true
        System.out.println("b6:"+b6);//b6:false
        System.out.println("b7:"+b7);//b7:true
        System.out.println("z:"+z);//z:46
    }
}

位运算符

说明:

        位运算就是将java中十进制的数转换成二进制进行运算

 <<:举例如果问你写一条2*8最快的算数方式,答:(2<<3) ,这样的算法实际等于2*2^3
        2<<3实际上就是"2"的二进制"10"向左移动了三位"10000"

>>:左移同理,只不过是除2ⁿ,二进制数向右移

&、|、^:
~:

>>>无符号右移动:

无符号右移运算符的使用
(以32位为例)
1.为正的十进制整数
如:64 >>> 5

①第一步:操作数的绝对值,转化为二进制
100 0000

②第二步:补码(操作数为正数)
0000 0000 0000 0000 0000 0000 0100 0000

③第三步:右移5位
0000 0000 0000 0000 0000 0000 0000 0010

结果为:2 (实际上缩小了5倍)

2.为负的十进制整数
如:-64 >>> 5

①第一步:操作数的绝对值,转化为二进制
100 0000

②第二步:补码(操作数为负数)
1000 0000 0000 0000 0000 0000 0100 0000

③第三步:取反(符号位不变,其他位1、0相互转换),在第一位加上1
1111 1111 1111 1111 1111 1111 1100 0000

④第四步:右移5位
0000 0111 1111 1111 1111 1111 1111 1110

结果为:134217726 (实际上放大了$&@倍)

如何使用位运算异或^来交换两个数的值 

说明:记住下面这个规则即可

int num1 = 1;
int num2 = 2;   
     
num1 = num1 ^ num2;
num2 = num3 ^ num2;
num1 = num3 ^ num1;

System.out.println("num1 = " + num1 + ",num2 = " + num2);//num1=2,num2=1;

三元运算符

(了解即可)关于表达式同种类型问题,要求 表达式1 和 表达式2 类型一致,期间会自动类型转换提升再比较,或者不提升但容易接参数出现问题,后面接触包装类详细说明

 /*三目运算符要求表达式要相同类型,因此int提升变成了大类型double,对比完成后重新装箱成Double类型,用Object类型接受,变成了多态*/
        Object o1= true? new Integer(1) : new Double(2.0);
        /*运行时先是用了Double类型的toString方法,因为编译看左边,运行看右边,因此是变成1.0字符串类型后再打印到控制台*/
        System.out.println(o1/*.toString()*/);//1

        Object o2 = true ? new String("1") : new Double(2.0);
        System.out.println(o2);//1

        Object o4 = true ? new Boolean(true) : new Double(2.0);
        System.out.println(o4);//true

三元运算符演示 

package javase3;

public class Operator5 {
/*
运算符之六:三元运算符
1.结构:(条件表达式)?表达式1 : 表达式2
2. 说明
① 条件表达式的结果为boolean类型
② 根据条件表达式真或假,决定执行表达式1,还是表达式2.
  如果表达式为true,则执行表达式1
  如果表达式为false,则执行表达式2
③ 表达式1 和表达式2要求是一致的。
④ 三元运算符是可以嵌套的
3. 凡是可以使用三元运算的地方,都是可以改写if-else。
   反之,则不一定成立!!!
*/
    public static void main(String[] args) {
        int i1 = 12;
        int i2 = 5;
        String s1 = (i1>i2)? "左边大":"右边大";//左边大   结果为"true",选择左边的表达式
        System.out.println(s1);

        /*表达式1和表达式2要为同种类型,java有两种不同类型,并且一定要有能够同时存的下两个类型的数据类型接受必须返回的结果*/
        double d1 = (i1>i2)? 2:1.0;//表达式1和表达式2都是基本数据类型,double变量能够能存下int类型和double类型
//        float f1 = (i1>i2)? 2:1.0;//编译错误,java: 不兼容的类型: 从double转换到float可能会有损失
        Object s2 = (i1>i2)? Integer.valueOf(2):"你好啊";//2,Object是任何类的父类

        /*拓展练习,获取三个数最大的值*/
        int n1 = 12;
        int n2 = 30;
        int n3 = -43;
        int max1 = (((n1>n2)?n1:n2)>n3)?((n1>n2)?n1:n2):n3;//30
        System.out.println("max1:"+max1);//max1:30

        //将上面改写成if
        int max2 = n2;
        if(n1>n2) max2=n1;
        if(n3>max2) max2=n3;
        System.out.println("max2:"+max2);//max2:30

    }
}

运算符的优先级(了解作为参考)

  • 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如下表,上一行运算符总优先于下一行。
  • 只有单目运算符、三元运算符、赋值运算符是从右向左运算的。

英飞凌TC3xx--深度手撕HSM安全启动(三)--TC3xx HSM系统架构 TC3xx的HSM内核是一颗32位的ARM Cortex M3,主频可达100MHz,支持对称算法AES128、非对称算法PKC(Public Key Crypto) ECC256、Hash SHA2,以及TRNG(真随机数生成)。 阅读详情

相关推荐

合宙ESP32C3实战:MPU6500六轴传感器数据读取与校准全解析

本文详细解析了如何使用合宙ESP32C3开发板读取和校准MPU6500六轴姿态传感器数据。从硬件接线、开发环境搭建到核心代码解析,提供了全面的实战指南,帮助开发者快速掌握传感器配置与数据处理技巧,适用于姿态控制、运动检测等应用场景。

weixin_27066963的博客 404

重学JavaSE 第3章 : 运算符、逻辑运算符、位运算符、三元运算符、运算符优先级

介绍Java的运算符、比较运算符, 三目运算法, 逻辑运算符等

Guizy 1148

机械臂的运动学分析-工业机器人

机械臂的运动学是研究机械臂各连杆坐标系之间的运动关系,是对机械臂进行运动控制的基础。本章分析了所设计的六自由度机械臂的运动学。理论上六自由度机械臂的工作空间是一个近似球形区域,能够覆盖机械臂所在的位置,但由于机械臂关节的运动范围受到限制,机械臂末端会存在一些不能到达的工作死区,使得机械臂的工作范围和灵活性受到限制。理论上六自由度机械臂的工作空间是一个近似球形区域,能够覆盖机械臂所在的位置,但由于机械臂关节的运动范围受到限制,机械臂末端会存在一些不能到达的工作死区,使得机械臂的工作范围和灵活性受到限制。

qq_59137727的博客 6647

2019-9-3【Javase】 算数、关系、逻辑、扩展复制、三元、位运算符,运算符优先级,控制台输入

文章目录一、算术运算符加+,减-,乘*,除 /,余%练习:自增自减运算符后缀i++:前缀++i:2、关系运算符3、逻辑运算符4、扩展赋值运算符5、条件运算符(可以嵌套)三元运算符:练习两个数字比较大小·三个数取最大值6、位运算符位运算:& :| :^ 异或:~ :非 (取反)左移:右移:>>> 无符号右移:7、运算符优先级8、控制台输入语法:示例 一、算术运算符...

木羽的博客 533

hi3516cv610在PQStream上实现拉出图像,windows和板端操作记录

PQStream拉出图像

weixin_51838255的博客 728

XIAO ESP32S3 Sense摄像头与麦克风实战:从硬件连接到AI语音视觉项目

本文详细介绍了如何使用Seeed Studio XIAO ESP32S3 Sense开发板进行AI语音视觉项目开发。从硬件连接到Arduino环境搭建,再到摄像头拍照、视频流传输、麦克风录音等实战操作,最后引导读者探索基于TensorFlow Lite Micro的语音唤醒和SenseCraft AI的图像识别等AI应用,为物联网和边缘AI项目提供了完整的入门指南。

xray4的博客 1022

【JavaSE重点知识归纳】第3节:运算符(算术、关系、逻辑、位、移位、优先级)

对操作数进行操作的符号,不同运算符操作的含义不同。运算符(算术、关系、逻辑、位、移位、优先级)由于计算机计算移位效率高于计算乘除,当某个代码正好乘除2的N次方的时候可以用移位运算符代替 a^a=0 a^0=a

m0_74164458的博客 210

MagicDraw-需求图

MagicDraw学习笔记

木头征的博客 4134

JavaSE ~~【运算符】

说到运算符这个概念大家应该不算陌生,我们在学习C语言的时候就已经接触到运算符了,没有学过C语言的朋友也不需要着急,等你看完我接下来的讲解我相信你对运算符肯定会有一个比较清晰的认识和理解,那么话不多说我们直接开始。其运算步骤和按位与,按位或都是一样的,都是先写出a的二进制数然后利用运算规则进行运算,这里就不再给大家演示了,大家可以下来自己动手练习一下。相当于现实生活中的或,比如:买房子交钱时,全款或者按揭都可以,如果全款或者按揭,房子都是你的。1. 都是二元运算符,使用时必须要有左右两个操作数。

2301_80449050的博客 1449

Netapp FAS2750更换磁盘后不同步问题处理

netapp fas2750磁盘更换后不同步问题处理

jetliu05的博客 1256

本地快速部署谷歌开放模型Gemma教程(基于Ollama)

谷歌最近发布了新一代开源AI模型Gemma,此次发布的 Gemma 相比自家的 Gemini 更加轻量级,模型权重也一并开源。不仅可以在笔记本电脑上运行,而且还免费可商用,支持中文。运行速度飞快。

特立独行的博客 6716

JavaSE——运算符、运算符优先级、API、Scanner

++、-- 如果不是单独使用(如在表达式中、或者同时有其它操作),放在变量前后会存在明显区别。 放在变量的前面,先对变量进行+1、-1,再拿变量的值进行运算。 放在变量的后面,先拿变量的值进行运算,再对变量的值进行+1、-1

li13437542099的博客 1775

(三)UPF之Domain Coverage Relationship(Cover、Equivalent、Independent)

整个Soc架构中一般会存在多个Power Domain,不同的Power Domain之间也存在着一定的Coverage关系。在Cadence工具中,这种。不同的Domain Coverage关系中,各个Domain存在着一定的关联()。

Mr.翟的博客 1422

【JavaSE-3】运算符

本节主要熟练掌握Java中各种运算符,对其中逻辑运算符要重点掌握!

阿宾爱干饭 1015

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

深度学习工具包 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&#39;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(&#39;DeepLearnToolbox&#39;));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(&#39;state&#39;,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&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,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 = &#39;sigm&#39;;%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, &#39;Too big error&#39;);```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(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;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)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;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, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% 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&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 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, &#39;Too big error&#39;);```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(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % 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, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);%% 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(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【JavaSE】JavaSE之运算符详解

用最简洁明了的方式带你深入了解JavaSE的运算符的使用,从小白走向大佬!

bit me的博客 1218

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【JavaSE】运算符

什么是操作符 算术运算符 关系运算符 逻辑表达式 短路求值 位运算符 移位运算符 条件运算符 运算符的优先级

C、Java知识分享 1217

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JavaSE核心知识点01基础语法01-02(基本数据类型、运算符、运算符优先级)

JavaSE核心知识点01基础语法01-02(基本数据类型、运算符、运算符优先级)

感谢阅读 1474

【javaSE】 运算符

int a = 10;int b = 20;a + b;a < b;上述 + 和 < 等就是运算符,即:对操作数进行操作时的符号,不同运算符操作的含义不同。作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。Java中运算符可分为以下:算术运算符(+ - */)、关系运算符(< > ==)、逻辑运算符、位运算符、移位运算符以及条件运算符等。t=N6B9。

m0_71731682的博客 1759

【javase】运算符

在上一篇中,主要介绍了数据类型与变量相关知识【Javase】数据类型与变量-优快云博客在此篇章中,将介绍运算符相关知识,理解什么是运算符,学会使用算术运算符,关系运算符,位运算符,重点掌握逻辑运算符,以及了解位移运算符。并学习运算符的优先级。目录一.算术运算符1.基本运算符(+ - * / %)2.增量运算符(+= -= *= /= %=)3.自增/自减运算符(++ --)二.关系运算符三.逻辑运算符(重点)1.逻辑与(&&)2.逻辑或(||)3.逻辑非(!4.短路求值四.位运算符1.按位与(&)

yc_xym的博客 1026

JavaSE:运算符

注意:都是int / int 结果还是int类型,而且会向下取整做除法和取模时,右操作数不能为0在C语言中,不能对浮点数类型取模,只能对整型取模,而在Java中,% 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模的两侧操作数类型不一致时,向类型大的提升。

Zzzzmo_的博客 963

JavaSE扩展1】Java中运算符的优先级

Java中运算符的优先级

look_outs的博客 1214

JavaSE

本文介绍了Java中常用的运算符类型及其用法。主要内容包括:算术运算符(加减乘除、取模运算及不同类型运算时的注意事项)、关系运算符(比较操作)、逻辑运算符(与或非及短路求值特性)、位运算符(二进制位操作)以及条件运算符(三元表达式)。特别强调了运算符的优先级问题,建议通过加括号来明确运算顺序。文章通过具体代码示例演示了各类运算符的典型应用场景,帮助读者理解Java运算符的基本概念和使用方法。

2301_80142936的博客 1642

[JavaSE] 运算符(算数、关系、逻辑、位、位移、条件、优先级)

​ 🍹欢迎各路大佬来到 Nick 主页指点 ☀️本期文章将学习 [JavaSE] 运算符(算数、关系、逻辑、位、位移、条件、优先级),我是博主Nick。✨ ✨我的博客主页:Nick_Bears 🌹꧔ꦿ 🌹꧔ꦿ博文内容如对您有所帮助,还请给个点赞 + 关注 + 收藏✨ ​

Nick 的笔记 502

JavaSE——运算符

运算符详解

xh1605004242的博客 951

JavaSE-part3【运算符】详细讲解

算术运算符、关系运算符、逻辑运算符(重点⭐)、位运算符、移位运算符、条件运算符

m0_75082861的博客 1229

【JavaSE语法】运算符

本文介绍了算术运算符(+ - * /)、关系运算符(< > ==)、逻辑运算符、位运算符、移位运算符以及条件运算符等

qq_73017178的博客 835
上一篇: JavaSE(2)_变量、标识符、保留字、变量、进制转换
下一篇: JavaSE(5)_数组、算法的选择(未掌握)
自律彭于晏
博客等级 码龄5年 946粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值