深度学习基本知识

1.分类

        1.二分类:

        使用激活函数sigmoid

        在kears中使用binary_crossentropy计算sigmoid的交叉熵

        2.多分类:

        使用激活函数softmax

        在kears中使用categorical_crossentropy 和 sparse_categorical_crossentropy 计算softmax的交叉熵

        categorical_crossentropy适用于标签采用独立日编码(one-hot),即标签是一个形状为(batch_size, num_classes)的二维数组,其中每个样本的标签是一个长度为num_classes的向量,只有一个元素为1,其他元素为0。

        sparse_categorical_crossentropy适用于标签采用整数编码的情况。即标签是一个形状为(batch_size,)的一维数组,其中每个样本的标签是一个整数,表示类别的索引。

  • 在分类问题中,激活函数的输出可以被解释为对应类别的概率。
  • softmax函数将网络的输出转化为每个类别的概率,使得所有类别的概率之和为1。
  • sigmoid函数将网络的输出转化为二分类问题中每个类别的概率。
  • 这些概率值可以用于判断模型对不同类别的预测置信度,较高的概率值表示模型对该类别的预测置信度较高。
  • 在训练过程中,可以通过交叉熵损失函数来优化模型,使得模型的输出概率更接近真实标签的概率分布。

2.过拟合

        解决方法:添加dropout层

        dropout作用:

                1.取平均的作用

                2.减少神经元之间复杂的共适应关系

                3.Dropout类似于性别在生物进化中的角色

# 创建一个Dropout层,保留率为0.5
dropout_layer = tf.keras.layers.Dropout(0.5)

# 在模型中添加Dropout层
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(64, activation='relu'),
    dropout_layer,
    tf.keras.layers.Dense(64, activation='relu'),
    dropout_layer,
    tf.keras.layers.Dense(10, activation='softmax')
])

        一个过拟合的模型:
                1.添加更多的层。
                2.让每一层变得更大。
                3.训练更多的轮次

        抑制过拟合:
                1.dropout
                2.正则化
                3.图像增强

3.函数api

        1.repeat():将数据集重复多次,使得每个epoch都能遍历整个数据集。如果不指定参数,则会无限重复下去,直到外部程序停止迭代。这个方法通常用于数据集比较小的情况下,可以增加数据的多样性,提高模型的泛化能力

        2.shuffle(1000):(参数表示打乱数据集时使用的缓冲区大小。参数越大,数据的随机性越大):将数据集打乱,使得每个batch的数据都是随机的,防止模型过拟合。参数1000表示打乱数据集时使用的缓冲区大小,即从数据集中随机选择1000个样本进行打乱,然后再选取BATCH_SIZE个样本组成一个batch

        3.batch(BATCH_SIZE):将数据集划分成多个batch,每个batch包含BATCH_SIZE个样本。这个方法通常用于模型无法一次处理整个数据集的情况下,可以分批次进行训练,减少内存的消耗

train_image_ds = train_image_ds.shuffle(1000).repeat().batch(120)

        4.relu

                1.relu函数的定义为:f(x) = max(0, x)。

                2.relu函数将负数置为0,正数保持不变。即当输入小于0时,输出为0;当输入大于等于0时,输出等于输入。

                3.relu函数具有简单的计算方式和快速的收敛速度,适用于大多数情况下。

                4.relu函数可以有效地解决梯度消失问题,因为它在正数区间上具有线性特性,导数恒为1,梯度不会消失。

                5.relu函数在深度神经网络中表现良好,能够提供较好的非线性拟合能力。

        5.softmax

                1.softmax函数的定义为:f(x_i) = exp(x_i) / sum(exp(x_j)),其中i表示第i个元素,j表示所有元素的索引

                2.softmax函数将一组实数转化为概率分布,使得所有元素的概率之和为1。

                3.softmax函数常用于多分类问题中,将网络的输出转化为每个类别的概率。

                4.softmax函数具有归一化的特性,能够将输出映射到0到1之间的概率值,使得模型的输出更易于解释和理解。

                5.softmax函数在训练过程中可以通过交叉熵损失函数来优化,使得模型更好地拟合训练数据。

        6.sigmoid

                1.sigmoid函数的定义为:f(x) = 1 / (1 + exp(-x))。

                2.sigmoid函数将实数映射到一个范围在0到1之间的数值。

                3.sigmoid函数常用于二分类问题中,将网络的输出转化为概率。

                4.sigmoid函数具有平滑的S形曲线,可以将输出限制在0到1之间,使得输出可以被解释为概率。

                5.sigmoid函数在极端值(接近0或1)时,梯度会变得非常小,可能导致梯度消失问题。

        7.tanh       

                1.tanh函数的定义为:f(x) = (exp(x) - exp(-x)) / (exp(x) + exp(-x))。

                2.tanh函数将实数映射到一个范围在-1到1之间的数值。

                3.tanh函数常用于二分类问题和隐藏层的激活函数。

                4.tanh函数相对于Sigmoid函数来说,输出的均值为0,更适合在数据预处理时使用。

                5.tanh函数在极端值(接近-1或1)时,梯度会变得非常小,可能导致梯度消失问题

4.构建神经网络总原则:

保证神经网络容量足够拟合数据

        1.增大网络容量,直到过拟合
        2.采取措施抑制过拟合
        3.继续增大网络容量,直到过拟合

5.卷积神经网络(CNN)

        1.卷积层(conv2d)三个参数:

                1.ksize:卷积核的大小  

                2.strides:卷积核移动的跨度  

                3.padding:边缘填充

        2.非线性层(relu/sigmiod/tanh):激活函数层
        3.池化层(向下采样法)(pooling2d):用于降低特征图尺寸     Pooling2D是一种池化层,用于在二维输入数据上进行下采样操作
        4.全连接层(w*x + b):将输入数据与权重矩阵进行矩阵乘法,并加上偏置向量,得到输出结果。全连接层的作用是将前一层的特征进行组合和转换,输出到下一层

卷积是指将卷积核应用到某个张量的所有点上,通过将卷积核在输入的张量上滑动而生成经过滤波处理的张量

卷积完成的是对图像特征的提取或者说信息匹配
当一个包含某些特征的图像经过一个卷积核的时候,一些卷积核被激活,输出特定信号

        输出:
        1.将最后的输出与全部特征连接,我们要使用全部的特征,为最后的分类的做出决策
        2.最后配合softmax进行分类

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值