LOADING

加载过慢请开启缓存 浏览器默认开启

2023/11/4

java泛型+深度学习

jvav泛型

package java_learning;

import java_basic.Boy;

import java.util.ArrayList;
import java.util.Arrays;

public class generics {
    public static void main(String[] args) {
        ArrayList<Integer> arr1 =new ArrayList<Integer>(); //ArrayList是泛型的一种,什么是泛型?可以理解成cpp的“模板”,就是在<>中传入一种类型得到一种适配定义
        //注意ArrayList使用Object数组实现存储的,因此必须是!!类!!而不能是基本数据类型(整数得用Integer而不是int)
        arr1.add(2); //自动包装类转化
        arr1.add(Integer.valueOf(2));
        arr1.add(5);
        for (int i:arr1){
            System.out.println(i);
        }
        String[] s1=new String[]{"z","hel,","world!"};
        Arrays.sort(s1); //Arrays工具类中有sort方法,对实现了 comparable<T>接口泛型的类可以自动排序
        System.out.println(Arrays.toString(s1));  //Arrays的toString方法可以 !对每个元素!自动!调用toString()方法
        Boy[] b1=new Boy[]{new Boy("大水桶",21),new Boy("小水桶",12),new Boy("老水桶",30)};
        Arrays.sort(b1);
        System.out.println(Arrays.toString(b1));  //我将Boy类实现了Comparable<Boy>接口,即在内部定义compareTo方法,并把年龄作为比较的关键,成功得到排序后结
        generics g1=new generics();
        //!!!类必须依附于实例,而类中类则必须依附于实例的实例,否则会报错xxx变量是非静态的!不能用于静态上下文
        generics.pair<String,Integer> boy_pair=g1.new pair<String, Integer>("水桶王",21);
        boy_pair.shout();
        //pair<String,Integer> boy_pair=new pair<String, Integer>("水桶王",21);
    }
    public class pair<T,K>{
        public T p_t;
        public K p_k;


        public pair(T p_t, K p_k) {
            this.p_t = p_t;
            this.p_k = p_k;
        }

        public T getP_t() {
            System.out.println(p_t);
            return p_t;
        }

        public K getP_k() {
            System.out.println(p_k);
            return p_k;
        }

        //public static<T,K> pair<T,K> shout(){}  默认是不能将模板类型用于static变量的(因为一般需要在外部实例化模板),但是你可以在static后面加一个<T,K>来强制使用
        public void shout(){
            System.out.println("%s,%d".formatted(this.p_t,this.p_k)); //格式化字符串必须用规定的 %s 占位符,不能用自定义的!泛型编程虽然编译器暂时无法识别泛型类型,但可以只用能够被格式化输出的类型
        }

    }
}

深度学习好久没看了,今天重新回顾了下ResNet

这回终于是看懂了,主要就是两点:1、通过1*1的卷积核来进行降维、升维操作,主要用在通道数很大的图像中,可以有效降低参数量 2、通过前向传递并与之前的矩阵进行相加,来有效避免梯度爆炸和消失的问题,极大的提高模型的深度

还学到了Batch Normalization批量正则化,通过对一批数据的同一通道进行标准化,使得每一层的数据都被标准化,有效降低数据大小、减少训练时间…

但是要注意3个问题

还有迁移学习:即预训练模型,预训练模型要注意数据的预处理方式应与预训练模型相一致