损失函数在声音分类算法中的作用是什么

人工智能124

损失函数在声音分类算法中的作用是什么


你好,这篇文章咱们讨论一下关于「损失函数在声音分类算法中的作用是什么」的事情...

损失函数在声音分类算法中的作用

1. 引言

声音分类是一种常见的信号处理问题。它涉及将音频信号分成不同类别,例如说话人识别,音乐类型分类等等。声音分类算法通常使用深度学习模型,如卷积神经网络(CNN)和循环神经网络(RNN)。

损失函数是深度学习中重要的组成部分,用于衡量模型预测结果的质量并更新模型参数。在声音分类任务中,损失函数的选择对模型性能至关重要。本文将探讨损失函数在声音分类任务中的作用及其影响。

2. 常见的损失函数

在声音分类的任务中,有一些常用的损失函数。它们分别是:

2.1 交叉熵

交叉熵是一种常见的分类损失函数。它被广泛地应用于深度学习中的分类问题。交叉熵的数学表达式如下:

$$loss=-\frac{1}{N}\sum_{i=1}^{N}\sum_{j=1}^{C}y_{ij}\log p_{ij}$$

其中,$N$ 为样本数,$C$ 是类别数,$y_{ij}$ 是第 $i$ 个样本的真实标签和第 $j$ 个类别之间的关系,$p_{ij}$ 是模型对于第 $i$ 个样本预测为第 $j$ 个类别的概率。

在声音分类任务中,如果我们用 $C$ 个类别来表示 $C$ 种音频类型,交叉熵可以被用来计算模型在所有样本上的预测结果。

2.2 余弦相似度损失函数

余弦距离是一种测量向量相似性的方法。在声音分类的任务中,我们常常使用余弦相似度来度量音频信号之间的相似性。余弦相似度的计算公式如下:

$$similarity = \frac{\sum_{i=1}^{n}x_iy_i}{\sqrt{\sum_{i=1}^{n}x_i^2}\sqrt{\sum_{i=1}^{n}y_i^2}}$$

其中,$x$ 和 $y$ 分别是两个音频信号的特征向量。余弦距离可以被用来度量两个音频信号之间的相似性,因此我们可以用余弦相似度损失函数来衡量模型对于两个音频信号之间相似度的预测结果。

2.3 多标签平均池化损失函数

多标签平均池化(MAP)是一种用于处理多标签分类问题的方法。在声音分类任务中,有时我们需要将一个音频信号分为多个类别,例如某些音乐不仅包含“摇滚”元素,还包含“布鲁斯”元素。在这种情况下,我们可以使用 MAP 损失函数。

MAP 损失函数可以被看作是二元分类交叉熵和的平均值。对于 $N$ 个样本和 $M$ 个标签的二元分类问题,MAP 损失函数的计算公式如下:

$$\frac{1}{NM}\sum_{i=1}^{N}\sum_{j=1}^{M}y_{ij}\log p_{ij}+(1-y_{ij})\log(1-p_{ij})$$

其中,$y_{ij}$ 是第 $i$ 个样本是否属于第 $j$ 个标签,$p_{ij}$ 是模型预测第 $i$ 个样本是否属于第 $j$ 个标签的概率。

3. 损失函数的选择

在声音分类任务中,选择合适的损失函数是非常重要的。不同的损失函数在模型训练和预测时会产生不同的影响。

3.1 交叉熵损失函数

交叉熵是一种常用的损失函数,它对分类问题有良好的效果。对于声音分类任务,交叉熵可以被用来衡量模型在所有样本上的预测结果,因此选择交叉熵作为损失函数可以提高模型的准确率。

3.2 余弦相似度损失函数

余弦相似度是一种度量两个向量相似度的方法。在声音分类任务中,我们可以使用余弦相似度计算不同音频之间的相似度。根据相似度的计算结果,我们可以将不同音频进行分类。使用余弦相似度损失函数可以提高模型的泛化性能。

3.3 多标签平均池化损失函数

多标签平均池化(MAP)损失函数通常用于处理多标签分类问题。在声音分类任务中,有时我们需要将一个音频信号分为多个类别,MAP 损失函数在这种情况下非常有用。使用 MAP 损失函数可以提高模型的多标签分类准确率。

4. 总结

损失函数是深度学习过程中非常重要的一部分,涉及到模型参数的更新和优化。在声音分类问题中,损失函数的选择对于模型的性能至关重要。本文介绍了声音分类领域中常用的损失函数,包括交叉熵、余弦相似度和多标签平均池化损失函数。我们也讨论了不同损失函数在声音分类方面的应用和影响。希望这篇文章能够对声音分类算法的选择和使用提供一些帮助。

大家都在看:

JAVA实训第四天

目录

异常

什么是异常?

为什么要进行异常处理?

方法的调用堆栈

方法调用堆栈中异常对象的传递

Java中的异常类

常见的异常类

常见的异常类及出现此异常的原因

•1、java.lang.NullpointerException(空指针异常)

•2、 java.lang.ClassNotFoundException(指定的类不存在)

•3、java.lang.ClassNotFoundExceptio(指定的类不存在)

•4、java.lang.IndexOutOfBoundsException(数组下标越界异常)

•5、java.lang.IllegalArgumentException(方法的参数错误)

•6、java.lang.IllegalAccessException(没有访问权限)

•7、java.lang.ArithmeticException(数学运算异常)

•8、java.lang.ClassCastException(数据类型转换异常)

•9、 java.lang.FileNotFoundException(文件未找到异常)

•10、java.lang.ArrayStoreException(数组存储异常)

•11、java.lang.NoSuchMethodException(方法不存在异常)

•12、 java.lang.EOFException(文件已结束异常)

•13、java.lang.InstantiationException(实例化异常)

•14、java.lang.InterruptedException(被中止异常)

•15、java.lang.CloneNotSupportedException (不支持克隆异常)

•16、java.lang.OutOfMemoryException (内存不足错误)

•17、java.lang.NoClassDefFoundException (未找到类定义错误)

Error类

常见的错误类

检查异常与非检查异常

异常处理的一般步骤

异常抛出

Throw和Throws的区别

异常捕获

finally

Finally和final以及finalize的区别

创建自己的异常类

异常处理

作业

异常

什么是异常?

损失函数在声音分类算法中的作用是什么

为什么要进行异常处理?

损失函数在声音分类算法中的作用是什么

方法的调用堆栈

损失函数在声音分类算法中的作用是什么

Java 程序在执行的过程中,形成了一个先进后出的调用堆栈,各方法之间依照调用先后的不同,由先至后的进入调用堆栈,堆栈的最上层即是当前被调用执行的方法。该方法执行完毕后,会将处理器控制权交还给调用他的方法,依此类推。

方法调用堆栈中异常对象的传递

损失函数在声音分类算法中的作用是什么

当某一方法中的一个语句抛出一个异常时,如果该方法中没有处理该异常的语句,那么该方法就会中止执行,并将这个异常传递给堆栈中的下一层方法,直到某一方法中含有处理该异常的语句为止。如果该异常被传递至主方法,而主方法中仍然没有处理该异常的语句,则异常将会被抛至JVM ,程序中断。

Java 中的异常类

损失函数在声音分类算法中的作用是什么

在Java 语言中,任何的异常对象都是Throwable 类的直接子类或间接子类的实例。Java 的类库已经提供了一些常见的异常类,如果这些异常类不能够满足要求,用户也可以创建自己的异常类。

常见的异常类

损失函数在声音分类算法中的作用是什么

常见的异常类及出现此异常的原因

1 java.lang.NullpointerException ( 空指针异常 )

• 原因:这个异常经常遇到,异常的原因是程序中有空指针,即程序中调用了未经初始化的对象或者是不存在的对象。经常出现在创建对象,调用数组这些代码中,比如对象未经初始化,或者图片创建时的路径错误等等。对数组代码中出现空指针,是把数组的初始化和数组元素的初始化搞混淆了。数组的初始化是对数组分配空间,而数组元素的初始化,是给数组中的元素赋初始值

2 java.lang.ClassNotFoundException (指定的类不存在)

• 原因:当试图将一个 String 类型数据转换为指定的数字类型,但该字符串不满足数值型数据的要求时,就抛出这个异常。例如将String 类型的数据 "123456" 转换为数值型数据时,是可以转换的的。但是如果 String 类型的数据中包含了非数字型的字符,如123*56 ,此时转换为数值型时就会出现异常。系统就会捕捉到这个异常,并进行处理

3 java.lang.ClassNotFoundExceptio (指定的类不存在)

• 原因:是因为类的名称和路径不正确,通常都是程序试图通过字符串来加载某个类的时候可能会引发异常。例如:
• 调用 Class.forName () 、或者调用 ClassLoad 的 finaSystemClass () 、或者是 LoadClass () 时出现异常

4 java.lang.IndexOutOfBoundsException (数组下标越界异常)

• 原因:查看程序中调用的数组或者字符串的下标值是不是超出了数组的范围,一般来说,显示调用数组不太容易出这样的错,但隐式调用就有可能出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候可以先查看一下数组的length,以免出现这个异常

5 java.lang.IllegalArgumentException (方法的参数错误)

• 例如 g.setColor ( int red,int green,int blue)这个方法中的三个值,如果有超过255的会出现这个异常,如果程序中存在这个异常,就要去检查一下方法调用中的参数传递或参数值是不是有错

6 java.lang.IllegalAccessException (没有访问权限)

• 当程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。如果程序中用了 Package 的情况下有可能出现这个异常

7 java.lang.ArithmeticException (数学运算异常)

• 当数学运算中出现了除以零这样的运算就会出这样的异常。

8 java.lang.ClassCastException (数据类型转换异常)

• 当试图将对某个对象强制执行向下转换,但该对象又不可转换或又不可转换为其子类的实例时将出现该异常

9 java.lang.FileNotFoundException (文件未找到异常)

• 当程序打开一个不存在的文件来进行读写时将会引发该异常。该异常由 FileInputStream,FileOutputStream ,RandomAccessFile的构造器声明抛出,即使被操作的文件存在,但是由于某些原因不可访问,比如打开一个只有只读权限的文件并向其中写入数据,以上构造方法依然会引发异常

10 java.lang.ArrayStoreException (数组存储异常)

• 当试图将类型为不兼容类型的对象存入一个 Object[] 数组时将引发异常

11 java.lang.NoSuchMethodException (方法不存在异常)

• 当程序试图通过反射来创建对象,访问 ( 修改或读取 ) 某个方法,但是该方法不存在就会引发异常。

12 java.lang.EOFException (文件已结束异常)

• 当程序在输入的过程中遇到文件或流的结尾时,引发异常。因此该异常用于检查是否达到文件或流的结尾

13 java.lang.InstantiationException (实例化异常)

• 当试图通过 Class 的 newInstance () 方法创建某个类的实例 , 但程序无法通过该构造器来创建该对象时引发。
• Class 对象表示一个抽象类,接口,数组类,基本类型 。该 Class 表示的类没有对应的构造器。

14 java.lang.InterruptedException (被中止异常)

• 当某个线程处于长时间的等待、休眠或其他暂停状态,
• 而此时其他的线程通过 Thread 的 interrupt 方法终止该线程时抛出该异常。

15 java.lang.CloneNotSupportedException (不支持克隆异常)

• 当没有实现 Cloneable 接口或者不支持克隆方法时 , 调用其 clone() 方法则抛出该异常

16 java.lang.OutOfMemoryException (内存不足错误)

• 当可用内存不足以让 Java 虚拟机分配给一个对象时抛出该错误

17 java.lang.NoClassDefFoundException (未找到类定义错误)

•当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误

package exception;

import org.junit.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

public class JunitDemo {

    @Test
    public void testException1(){

//        空指针异常
       /* String str  = null;
        System.out.println(str.length());*/
        String str  = null;
        if (str!=null) {
            System.out.println(str.length());
        }
    }

    /**
     * 数组下标越界异常:
     * java.lang.ArrayIndexOutOfBoundsException: 4
     */
    @Test
    public void testException2(){
        Integer[] arr = {1,4,5,6};
//        System.out.println(arr[4]);
        int index = 3;
        if(index<arr.length){ system.out.println(arr[index]); } ** * java.lang.numberformatexception: for input string: "abc" @test public void testexception3(){ 数据转换异常 string str="123" ; 通过正则匹配看是否全都是数字 boolean flg="str.matches("\\d{1,}");" if (flg){ int result="Integer.parseInt(str);" system.out.println(result); 类型转换异常: java.lang.classcastexception: java.lang.string cannot be cast to java.lang.integer testexception4(){ *list list="new" arraylist(); list.add("hello"); list.add(10); list.add(20); (object ele:list) { num="(int)ele;" }* *list<integer> list = new ArrayList();
//        list.add("hello");
        list.add(10);
        list.add(20);
        for (Object ele:list) {
            int num = (int)ele;
        }*/

        List list = new ArrayList();
        list.add("hello");
        list.add(10);
        list.add(20);
        for (Object ele:list) {
            if (ele instanceof  Integer){
                int num = (int)ele;
                System.out.println("num:"+num);
            }else{
                System.out.println("&#x4E0D;&#x53EF;&#x8F6C;&#x6362;"+ele);
            }

        }

    }

    /**
     * &#x5E76;&#x53D1;&#x4FEE;&#x6539;&#x5F02;&#x5E38;:java.util.ConcurrentModificationException
     */
    @Test
    public void testException5(){
        List<integer> list = new ArrayList();
        list.add(10);
        list.add(20);
        list.add(5);

        /*Iterator<integer> its = list.iterator();
        while (its.hasNext()) {
            Integer element = its.next();
            if (element==10){
                list.remove(element);
            }
        }*/

        for (int i = 0; i < list.size(); i++) {
            Integer element = list.get(i);
            if (element==10){
                list.remove(element);
            }
        }
    }

    @Test
    public void testException6(){
        List<integer> list = new ArrayList();
        list.add(10);
        list.add(20);
        list.add(5);
//        java.lang.IllegalStateException: stream has already been operated upon or closed
        Stream<integer> stream = list.stream();
        stream.forEach(t-> System.out.println(t));

//        &#x6D41;&#x53EA;&#x80FD;&#x88AB;&#x6D88;&#x8D39;&#x4E00;&#x6B21; &#x518D;&#x7528;&#x65F6;&#x9700;&#x8981;&#x91CD;&#x65B0;&#x83B7;&#x53D6;&#x6D41;&#x5BF9;&#x8C61;
        stream = list.stream();
        long count = stream.distinct().count();
    }
}
</integer></integer></integer></integer></arr.length){>
package exception;

public class StringIndexOutOf {
    public static void main(String args[]) {
        System.out.println("&#x5B57;&#x7B26;&#x4E32;&#x7D22;&#x5F15;&#x8D8A;&#x754C;&#x5F02;&#x5E38;");

        try{
            String str = args[0];
            System.out.println("&#x7B2C;&#x56DB;&#x4E2A;&#x5B57;&#x7B26;&#x4E3A; " + str.charAt(3));
            int aa = Integer.parseInt(args[0]);
            System.out.println("&#x5E73;&#x65B9;&#x4E3A;" + aa * aa);
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println("ArrayIndexOutOfBoundsException&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;");
        }catch (StringIndexOutOfBoundsException e){
            System.out.println("StringIndexOutOfBoundsException.....");
        }catch (NumberFormatException e){
            System.out.println("NumberFormatException");
        }

    }
}

Error 类

Error 类表示Java 运行时产生的系统内部错误或资源耗尽等严重错误

这种错误通常是程序无法控制和解决的,如果发生这种错误,通常的做法是通知用户并中止程序的执行

常见的错误类

• NoClassDefFoundError
• OutOfMemoryError
• VirtualMachineError

检查异常与非检查异常

损失函数在声音分类算法中的作用是什么

异常处理的一般步骤

异常抛出

损失函数在声音分类算法中的作用是什么 损失函数在声音分类算法中的作用是什么

损失函数在声音分类算法中的作用是什么

损失函数在声音分类算法中的作用是什么

package exceptiondemo.part1;

import javax.imageio.IIOException;
import java.io.EOFException;
import java.io.IOException;

/**
 * @date : 2022/11/24 10:30
 */
public class ExceptionDemo3_1 {

//    public static void main(String[] args) throws Exception {
    public static void main(String[] args) throws EOFException, IIOException {

//        &#x8C03;&#x7528;method&#x65B9;&#x6CD5; &#x3001;&#x6B64;&#x65F6;method&#x65B9;&#x6CD5;&#x4E2D;&#x629B;&#x51FA;&#x4E86;&#x5FC5;&#x68C0;&#x5F02;&#x5E38; &#x5F53;&#x524D;&#x8C03;&#x7528;method&#x65B9;&#x6CD5;&#x5730;&#x65B9;&#x5FC5;&#x987B;&#x8FDB;&#x884C;&#x5904;&#x7406;
//        &#x7EE7;&#x7EED;&#x5F80;&#x4E0A;&#x629B;---main -- jvm&#x865A;&#x62DF;&#x673A;
        method();
    }

//    &#x56E0;&#x4E3A;&#x5F53;&#x524D;&#x65B9;&#x6CD5;&#x901A;&#x8FC7;throw&#x629B;&#x51FA;&#x5F02;&#x5E38;   ---&#x300B;&#x5FC5;&#x68C0;&#x5F02;&#x5E38; &#x4E0D;&#x5904;&#x7406;&#x4E0D;&#x80FD;&#x6267;&#x884C;&#xFF1A;&#x5F53;&#x524D;&#x8FD9;&#x4E2A;method&#x65B9;&#x6CD5;&#x4E0D;&#x8FDB;&#x884C;&#x5904;&#x7406; &#x5FC5;&#x987B;&#x7EE7;&#x7EED;&#x8BA9;&#x65B9;&#x6CD5;&#x7F51;&#x4E0A;&#x629B;  &#x65B9;&#x6CD5;&#x58F0;&#x660E;&#x4E0A;&#x901A;&#x8FC7;throws
//   throws:&#x5199;&#x5728;&#x65B9;&#x6CD5;&#x58F0;&#x660E;&#x4E0A; &#x629B;&#x51FA;&#x591A;&#x4E2A;&#x5F02;&#x5E38; &#x4E2D;&#x95F4;&#x7528;&#x9017;&#x53F7;&#x9694;&#x5F00;
    public static void  method() throws EOFException, IIOException {

//        java.lang.NumberFormatException: For input string: "abc"
//        Integer.parseInt("abc");

        String password = "12345";
        if (password.length()<6){ throw:抛出异常----必检异常 throw new eofexception("密码长度至少要为6位..."); } iioexception("test.iioexception"); < code></6){>

Throw 和Throws 的区别

损失函数在声音分类算法中的作用是什么

异常捕获

损失函数在声音分类算法中的作用是什么

损失函数在声音分类算法中的作用是什么

损失函数在声音分类算法中的作用是什么

损失函数在声音分类算法中的作用是什么

package exceptiondemo.part2;

/**
 * @date : 2022/11/24 15:14
 */
public class ExceptionDemo {

    public static void main(String[] args) {

        System.out.println("1111");

//        &#x9488;&#x5BF9;&#x4E8E;&#x53EF;&#x80FD;&#x53D1;&#x751F;&#x5F02;&#x5E38;&#x4EE3;&#x7801;&#x8FDB;&#x884C;&#x6355;&#x83B7;
//        &#x6267;&#x884C;&#x6D41;&#x7A0B;&#xFF1A;&#x4E00;&#x65E6;try&#x5757;&#x4E2D;&#x53D1;&#x751F;&#x5F02;&#x5E38;  &#x5C06;&#x4F1A;&#x5339;&#x914D;&#x5BF9;&#x5E94;catch&#x5757;&#xFF1A;
//                                            1&#xFF09;&#x5982;&#x679C;&#x5339;&#x914D;&#x4E0A;&#x5C31;&#x4F1A;&#x8D70;&#x8FDB;&#x5BF9;&#x5E94;catch&#x5757;
//                                            2)&#x5982;&#x679C;&#x6CA1;&#x6709;&#x5339;&#x914D;&#x4E0A; &#x7B49;&#x4E8E;&#x6CA1;&#x6709;&#x5BF9;&#x8FD9;&#x4E2A;&#x5F02;&#x5E38;&#x8FDB;&#x884C;&#x5904;&#x7406;  &#x76F4;&#x63A5;&#x629B;&#x51FA;

//        &#x6CE8;&#x610F;&#x4E8B;&#x9879;&#xFF1A;
//          1&#xFF09;&#x5982;&#x679C;try&#x4E2D;&#x6CA1;&#x6709;&#x53D1;&#x751F;&#x5F02;&#x5E38; &#x4E0D;&#x5339;&#x914D;&#x4EE3;&#x7801;&#x5757;
//          2&#xFF09;catch&#x8BED;&#x53E5;&#x7684;&#x6392;&#x5217;&#x987A;&#x5E8F;&#x5E94;&#x8BE5;&#x662F;&#x4ECE;&#x5B50;&#x7C7B;&#x5230;&#x7236;&#x7C7B;
        try{
//            Integer.parseInt("abc");
            Integer.parseInt("123");
            System.out.println("-------------");
            System.out.println(5/1);

            String str = null;
            System.out.println(str.length());

        }catch (NumberFormatException e){
//            e.printStackTrace();
            System.out.println("&#x6570;&#x636E;&#x7C7B;&#x578B;&#x8F6C;&#x6362;&#x5F02;&#x5E38;"+e.getMessage());
        }catch (ArithmeticException e){
            System.out.println("&#x9664;&#x6570;&#x4E0D;&#x80FD;&#x4E3A;0");
        }catch (NullPointerException e){
            System.out.println("&#x53D1;&#x751F;&#x7A7A;&#x6307;&#x9488;&#x5F02;&#x5E38;");
        }catch (Exception e){
            System.out.println("&#x53D1;&#x751F;&#x5F02;&#x5E38;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;");
        }

    }
}

finally

当一个方法的某条语句抛出异常后,该方法剩余的语句将无法继续执行。这种情况下,方法往往无法将其 占用的资源进行释放 。
解决方法:
在每个 catch 子句的异常处理代码中也加上资源释放的代码,但这种方法非常麻烦;
Java 语言的异常处理机制中提供了一个更好的方案-程序员可以 使用 finally 子句来统一进行资源释放之类的工作。

损失函数在声音分类算法中的作用是什么

不论 try 块中的代码是否抛出异常及异常是否被捕获, finally 子句 中的代码 一定会被执行 :
如果 try 块中没有抛出任何异常,当 try 块中的代码执行结束后, finally 中的代码将会被执行;
如果 try 块中抛出了一个异常且该异常被 catch 正常捕获,那么 try 块中自抛出异常的代码之后的所有代码将会被跳过,程序接着执行与抛出异常类型匹配的 catch 子句中的代码,最后执行 finally 子句中的代码。
如果try 块中抛出了一个不能被任何catch 子句捕获(匹配)的异常,try 块中剩下的代码将会被跳过,程序接着执行finally

package exceptiondemo.part2;

import java.sql.SQLException;

/**
 * @date : 2022/11/24 15:41
 */
public class FinallyDemo {

    public static void main(String[] args) {

//        &#x8FDE;&#x63A5;&#x6570;&#x636E;&#x5E93;&#x65F6;  &#x6BD4;&#x8F83;&#x8017;&#x8D39;&#x8D44;&#x6E90;   &#x6700;&#x7EC8;&#x60F3;&#x5230;&#x6570;&#x636E;&#x8D44;&#x6E90;&#x91CA;&#x653E;
        try{
            System.out.println("&#x8FDE;&#x63A5;&#x6570;&#x636E;&#x5E93;&#x64CD;&#x4F5C;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;");
            if(1==2){
                throw new SQLException();
            }

        }catch (SQLException e){
            System.out.println("&#x6570;&#x636E;&#x5E93;&#x65AD;&#x5F00;&#x3002;&#x3002;&#x3002;&#x3002;");

//       finally&#x4F5C;&#x7528;&#xFF1A;&#x4E3B;&#x8981;&#x7528;&#x4E8E;&#x91CA;&#x653E;&#x8D44;&#x6E90;&#x3002;
        }finally {
            System.out.println("&#x8D44;&#x6E90;&#x91CA;&#x653E;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;&#x3002;");
        }

    }
}
package exceptiondemo.part2;

/**
 * @date : 2022/11/24 15:48
 */
public class FinallyDemo2 {

    public static void main(String[] args) {
        int result = method(); // 3
        System.out.println(result);
    }

    public static int method() {
        try {
            System.out.println(111111111);
//            &#x5F3A;&#x5236;&#x4E2D;&#x65AD;&#x7A0B;&#x5E8F;
//            System.exit(0);
            return 1;
        } catch (NullPointerException e) {
            return 2;
        } finally {
            return 3;
        }
    }
}

Finally 和final 以及finalize 的区别

损失函数在声音分类算法中的作用是什么

package exceptiondemo.part1;

import javax.imageio.IIOException;
import java.io.EOFException;

/**
 *
 *
 * Throw&#x548C;Throws&#x7684;&#x533A;&#x522B;
 *    throw&#xFF1A;&#x624B;&#x52A8;&#x629B;&#x51FA;&#x5F02;&#x5E38;  &#x5199;&#x5728;&#x65B9;&#x6CD5;&#x5185;&#x90E8;  &#x5982;&#x679C;&#x5F53;&#x524D;&#x65B9;&#x6CD5;&#x4E2D;&#x6CA1;&#x6709;&#x5904;&#x7406; &#x53EF;&#x4EE5;&#x901A;&#x8FC7;throws&#x5F80;&#x4E0A;&#x629B;
 *    throws&#xFF1A;&#x5199;&#x5728;&#x65B9;&#x6CD5;&#x58F0;&#x660E;&#x4E0A; &#x5411;&#x4E0A;&#x629B; &#xFF0C;  throws&#x540E;&#x9762;&#x53EF;&#x4EE5;&#x629B;&#x51FA;&#x591A;&#x4E2A;&#x5F02;&#x5E38;  &#x4E2D;&#x95F4;&#x9700;&#x8981;&#x7528;&#x9017;&#x53F7;&#x9694;&#x5F00;
 *
 *
 * @date : 2022/11/24 10:30
 */
public class ExceptionDemo3_2 {

//    public static void main(String[] args) throws Exception {
    public static void main(String[] args) throws Exception {

//        &#x8C03;&#x7528;method&#x65B9;&#x6CD5; &#x3001;&#x6B64;&#x65F6;method&#x65B9;&#x6CD5;&#x4E2D;&#x629B;&#x51FA;&#x4E86;&#x5FC5;&#x68C0;&#x5F02;&#x5E38; &#x5F53;&#x524D;&#x8C03;&#x7528;method&#x65B9;&#x6CD5;&#x5730;&#x65B9;&#x5FC5;&#x987B;&#x8FDB;&#x884C;&#x5904;&#x7406;
//        &#x7EE7;&#x7EED;&#x5F80;&#x4E0A;&#x629B;---main -- jvm&#x865A;&#x62DF;&#x673A;
        method();
    }

//    &#x56E0;&#x4E3A;&#x5F53;&#x524D;&#x65B9;&#x6CD5;&#x901A;&#x8FC7;throw&#x629B;&#x51FA;&#x5F02;&#x5E38;   ---&#x300B;&#x5FC5;&#x68C0;&#x5F02;&#x5E38; &#x4E0D;&#x5904;&#x7406;&#x4E0D;&#x80FD;&#x6267;&#x884C;&#xFF1A;&#x5F53;&#x524D;&#x8FD9;&#x4E2A;method&#x65B9;&#x6CD5;&#x4E0D;&#x8FDB;&#x884C;&#x5904;&#x7406; &#x5FC5;&#x987B;&#x7EE7;&#x7EED;&#x8BA9;&#x65B9;&#x6CD5;&#x7F51;&#x4E0A;&#x629B;  &#x65B9;&#x6CD5;&#x58F0;&#x660E;&#x4E0A;&#x901A;&#x8FC7;throws
//   throws:&#x5199;&#x5728;&#x65B9;&#x6CD5;&#x58F0;&#x660E;&#x4E0A; &#x629B;&#x51FA;&#x591A;&#x4E2A;&#x5F02;&#x5E38; &#x4E2D;&#x95F4;&#x7528;&#x9017;&#x53F7;&#x9694;&#x5F00;
//          &#x65B9;&#x6CD5;&#x58F0;&#x660E;&#x4E0A;&#x629B;&#x51FA;&#x5F02;&#x5E38;&#x65F6;&#xFF1A;  &#x5982;&#x679C;&#x629B;&#x51FA;&#x7684;&#x5F02;&#x5E38;&#x6709;&#x7236;&#x5B50;&#x5173;&#x7CFB;&#x65F6;  &#x76F4;&#x63A5;&#x5199;&#x6700;&#x5927;&#x5F02;&#x5E38;&#x5C31;&#x53EF;&#x4EE5;&#x4E86;&#x3002;&#xFF08;&#x5B9E;&#x9645;&#x5DE5;&#x4F5C;&#x4E2D;  &#x5F02;&#x5E38;&#x5904;&#x7406;&#x5C3D;&#x53EF;&#x80FD;&#x5177;&#x4F53;&#x5316;&#xFF09;

//    public static void  method() throws EOFException, Exception {
    public static void  method() throws Exception {

//        java.lang.NumberFormatException: For input string: "abc"
//        Integer.parseInt("abc");

        String password = "12345";
        if (password.length()<6){ throw:抛出异常----必检异常 throw new eofexception("密码长度至少要为6位..."); } exception("test.iioexception"); 如果在子类中覆盖了父类的某一方法,那么该子类方法不可以比被其覆盖的父类方法抛出更多检查异常(但可以更少)。所以,如果被覆盖父类的方法没有抛出任何的"检查异常",那么子类方法绝不可能抛出"必检异常" < code></6){>

创建自己的异常类

损失函数在声音分类算法中的作用是什么

损失函数在声音分类算法中的作用是什么

损失函数在声音分类算法中的作用是什么

损失函数在声音分类算法中的作用是什么

异常处理

方法也可以不对异常进行捕获而直接将其抛出,并在方法声明中进行说明,那么对方法产生的异常到底是应该直接进行捕获还是应该将其进行传递呢?
一般来说,对于方法的 最终调用者 而言,他必须捕获并处理该方法抛出的异常。而对于 抛出异常的方法 而言,应该对方法可能产生的异常进行区分,尽量避免一些异常的产生,捕获并处理那些你知道如何处理的异常,而对那些你不知道方法的调用者会如何处理的异常,最好将它们留给方法的调用者进行处理,这样会增加程序的灵活性。

需要特别指出的是,虽然异常处理机制为程序员提供了非常大的方便,但是作为一个好的程序员要尽量避免异常的过度使用。这是因为:异常对象的实例化和其后续处理工作是非常消耗资源的,过度的使用异常会明显影响程序的执行速度。所以,在使用异常处理时应该仔细考虑,只对有必要的异常情况使用异常,而不可以将异常泛化。

package exceptiondemo.part1;

import java.io.IOException;
import java.sql.SQLException;

/**
 * @date : 2022/11/24 10:30
 */
public class ExceptionDemo3 {

//    public static void main(String[] args) throws Exception {
    public static void main(String[] args) throws IOException {

//        &#x8C03;&#x7528;method&#x65B9;&#x6CD5; &#x3001;&#x6B64;&#x65F6;method&#x65B9;&#x6CD5;&#x4E2D;&#x629B;&#x51FA;&#x4E86;&#x5FC5;&#x68C0;&#x5F02;&#x5E38; &#x5F53;&#x524D;&#x8C03;&#x7528;method&#x65B9;&#x6CD5;&#x5730;&#x65B9;&#x5FC5;&#x987B;&#x8FDB;&#x884C;&#x5904;&#x7406;
//        &#x7EE7;&#x7EED;&#x5F80;&#x4E0A;&#x629B;---main -- jvm&#x865A;&#x62DF;&#x673A;
        method();
    }

//    &#x56E0;&#x4E3A;&#x5F53;&#x524D;&#x65B9;&#x6CD5;&#x901A;&#x8FC7;throw&#x629B;&#x51FA;&#x5F02;&#x5E38;   ---&#x300B;&#x5FC5;&#x68C0;&#x5F02;&#x5E38; &#x4E0D;&#x5904;&#x7406;&#x4E0D;&#x80FD;&#x6267;&#x884C;&#xFF1A;&#x5F53;&#x524D;&#x8FD9;&#x4E2A;method&#x65B9;&#x6CD5;&#x4E0D;&#x8FDB;&#x884C;&#x5904;&#x7406; &#x5FC5;&#x987B;&#x7EE7;&#x7EED;&#x8BA9;&#x65B9;&#x6CD5;&#x7F51;&#x4E0A;&#x629B;  &#x65B9;&#x6CD5;&#x58F0;&#x660E;&#x4E0A;&#x901A;&#x8FC7;throws
    public static void  method() throws IOException {

//        java.lang.NumberFormatException: For input string: "abc"
//        Integer.parseInt("abc");

        String password = "12345";
        if (password.length()<6){ throw:抛出异常----必检异常 throw new ioexception("密码长度至少要为6位..."); } < code></6){>

作业

造异常

package housework;

public class test241 {
    public static void main(String[] args) {
//        1&#x3001;&#x7A7A;&#x6307;&#x9488;&#x5F02;&#x5E38;
//        NullPointerException

        try{
            String str = null;
            System.out.println(str.length());
        }catch (NullPointerException e){
            System.out.println("&#x7A7A;&#x6307;&#x9488;&#x5F02;&#x5E38;");
        }

//        2&#x3001;&#x6570;&#x5B66;&#x8FD0;&#x7B97;&#x5F02;&#x5E38;
//        ArithmeticException
        try{
            System.out.println(5/0);
        }catch (ArithmeticException e){
            System.out.println("&#x6570;&#x5B66;&#x8FD0;&#x7B97;&#x5F02;&#x5E38;");
        }

//        3&#x3001;&#x6570;&#x7EC4;&#x4E0B;&#x6807;&#x8D8A;&#x754C;&#x5F02;&#x5E38;
//        ArrayIndexOutOfBoundsException
        try{
            String[] arr = {"1", "hello"};
            System.out.println(arr[arr.length]);
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println("&#x6570;&#x7EC4;&#x4E0B;&#x6807;&#x8D8A;&#x754C;&#x5F02;&#x5E38;");
        }
//        4.&#x5B57;&#x7B26;&#x4E32;&#x8F6C;&#x6362;&#x6570;&#x5B57;&#x5F02;&#x5E38;
//        NumberFormatException
        try {
            String s = "123*";
            int f = Integer.parseInt(s);
            System.out.println(f);
        }catch (NumberFormatException e){
            System.out.println("&#x5B57;&#x7B26;&#x4E32;&#x8F6C;&#x6362;&#x6570;&#x5B57;&#x5F02;&#x5E38;");
        }

//        5.&#x7C7B;&#x5F3A;&#x5236;&#x8F6C;&#x6362;&#x5F02;&#x5E38;
//        ClassCastException
        try{
            Object a = new Integer(0);
            System.out.println((String)a);
        }catch (ClassCastException e){
            System.out.println("&#x7C7B;&#x5F3A;&#x5236;&#x8F6C;&#x6362;&#x5F02;&#x5E38;");
        }

    }
}

Original: https://blog.csdn.net/qq_63202674/article/details/128329107
Author: 空景 Sadnes╰つ677
Title: JAVA实训第四天

相关文章
人工智能

Mel频率倒谱系数-MFCC

MFCC:Mel频率倒谱系数的缩写。 目的:模拟人耳对不同频率语音的感知 Mel频率和Hz频率的关系 人类对不同频率语音有不同的感知能力: 1kHz以下,与频率成线性关系。 1kHz以上,与频率成对数...
人工智能

关系数据库

关系模型由关系数据结构、关系操作和关系完整性三部分组成。 以关系数据模型为基础的数据库系统,称为关系数据库系统。 关系的定义和性质在关系模型中,只包含单一的数据结构——关系,即现实世界的实体以及实体间...
人工智能

人工智能-机器学习-KMeans聚类

一.概述 k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,属于无监督学习的一种,其步骤是,预先将数据分为K组,则随机选取K个对象作为初始的聚类中...
人工智能

python 音频变调不变速方法

变调的方法也可以分为三类: 时域法、频域法、参量法。 1. 时域法 时域法中,Crochiere等人于1983年提出了重采样的方法,该方法是实现变速变调最简单、最常用的方法之一。 实际应用中,libr...