深度学习-函数讲解

一、Linear函数

nn.Linear 是 PyTorch 中的线性层(也称为全连接层或仿射层)的类,
用于构建神经网络中的线性变换。线性层将输入张量与权重矩阵相乘,
然后添加偏置(偏移量)来产生输出。这是深度学习中最常见的一种层类型之一
,通常用于将输入数据映射到输出数据。
y=xw+b
lunera的作用就是对n行i列的矩阵X进行线性变换

torch.nn.Linear(in_features, # 输入的神经元个数
           out_features, # 输出神经元个数
           bias=True # 是否包含偏置
           )
           

二、relu函数
relu函数就是将大于0的数原数输出,小于或者等于0的数输出0

ReLU的优点:①ReLu具有稀疏性,可以使稀疏后的模型能够更好地挖掘相关特征,拟合训练数据;
②在x>0区域上,不会出现梯度饱和、梯度消失的问题;
③计算复杂度低,不需要进行指数运算,只要一个阈值就可以得到激活值。
RuLU的缺点也同样明显:①输出不是0对称
②由于小于0的时候激活函数值为0,梯度为0,所以存在一部分神经元永远不会得到更新

三、softmax函数

softmax多用于类别识别问题,不会改变类别的值,改变类别的概率
Softmax 可以使数值较大的值获得更大的概率
Softmax 函数在深度学习中被广泛应用,其主要优点包括:

归一化输出:Softmax 函数能够将输入转换为概率分布,确保输出值的范围在 [0, 1] 之间,并且所有输出的总和为 1。这使得 Softmax 输出可以被解释为各个类别的概率。

适用于多分类任务:Softmax 函数通常用于多分类问题,它可以将模型的输出转换为各个类别的概率分布,从而方便进行多分类任务的训练和预测。

导数形式简单:Softmax 函数的导数形式相对简单,计算也相对高效,这使得它在反向传播算法中的使用更加方便和高效。

log_softmax与softmax的区别在于输出的形式不同,softmax输出的是概率分布
,而log_softmax输出的是对数概率分布。
在实际应用中,log_softmax通常用于计算损失函数,而softmax则用于预测。
nllloss函数理解为 - log(softmax(x))
NLLLoss(Negative Log Likelihood Loss)通常用于多分类任务中,特别是在输出层使用了 log_softmax 函数的情况下。
它的主要作用是计算模型输出的对数概率与真实标签之间的差异,并将其作为损失函数进行优化。
torch.nn.NLLLoss(weight=None, size_average=None, ignore_index=- 100, reduce=None, reduction='mean')
weight表示每个类别的权重,当标签不平衡的时候可以使用来防止过拟合。
size_average表示是否将样本的loss进行平均之后输出,默认为true。
ignore_index表示忽略某一类别,不想训练某些类别时可用。
reduce表示是否将输出进行压缩,默认为true。当它为false的时候就会无视size_average。
reduction表示用怎么的方法进行reduce。可以设置为'none','mean','sum'。


全连接层连接每个神经元
在cnn算法中全连接层用于将图片进行降维从多维变为1维,将数据进行提取特和进行分类。

卷积层

卷积层的作用是用来提取特征,卷积层主要涉及的参数包括:滑动窗口步长,卷积核尺寸,填充边缘,卷积核个数
池化层的常见操作包含以下几种:最大值池化,均值池化,随机池化,中值池化,组合池化等。
池化层压缩过程:在通过卷积层后对特征图进行筛选
通过特征提取,实现分类

全部代码:

# import torch
# import torch.nn as nn
#
# # 定义输入特征数量和输出特征数量
# in_features = 10
# out_features = 5
# # 创建一个线性变换层
# linear_layer = nn.Linear(in_features, out_features)
# # 随机生成一个输入张量
#
# input_tensor = torch.randn(1, 12, 32, 10)
# #其中1表示批量大小,12表示通道数,32和10表示高度和宽度。
# # 对输入张量进行线性变换
# output_tensor = linear_layer(input_tensor)
# # 打印输出张量
# print("输出张量的形状:", output_tensor.shape)
#

# import torch
from matplotlib import pyplot


# rectified linear function
# def rectified(x):
#     return max(0.0, x)
#
#
# # define a series of inputs
# series_in = [x for x in range(-10, 11)]
# # calculate outputs for our inputs
# series_out = [rectified(x) for x in series_in]
# # line plot of raw inputs to rectified outputs
# pyplot.plot(series_in, series_out)
# pyplot.show()
# import torch
# import torch.nn.functional as F
#
# # 创建一个输入张量
# input_tensor = torch.tensor([[1.0, 2.0, 3.0]])
#
# # 应用 softmax 函数
# output_tensor = F.softmax(input_tensor, dim=1)
#
# # 打印输出张量
# print("输出张量:", output_tensor)

# import torch
# import torch.nn.functional as F
#
# # 创建一个输入张量
# input_tensor = torch.tensor([[0.5, 0.2, 0.3], [0.1, 0.3, 0.6]])
#
# # 创建一个目标张量
# target = torch.tensor([0, 2])
#
# # 应用 log_softmax 函数
# log_probs = F.log_softmax(input_tensor, dim=1)
#
# # 计算 NLLLoss
# loss = F.nll_loss(log_probs, target)
#
# # 打印损失值
# print("损失值:", loss.item())

import torch
import torch.nn as nn

# 创建一个全连接层实例
fc_layer = nn.Linear(in_features=10, out_features=5)

# 创建一个随机输入张量(batch_size=1,input_features=10)
input_data = torch.randn(1, 10)

# 将输入数据传递给全连接层并获取输出
output = fc_layer(input_data)

# 打印输出的形状
print("输出张量的形状:", output.shape)

  • 29
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 深度学习已成为当今人工智能领域的热门技术,而Matlab作为一种简单易学的编程语言,也被广泛应用于深度学习中。下面是深度学习grumatlab代码的讲解。 首先,需要安装一些必要的工具包,如Deep Learning Toolbox和Neural Network Toolbox。然后,在Matlab代码中引入这些工具包,并读入需要进行深度学习的数据集。 接着,需要设计一个神经网络模型。在Matlab中,可以使用图形用户界面或编程语言来创建神经网络。神经网络的基本组件是层,包括输入层、隐藏层和输出层。每个层都有自己的属性,如神经元数量、输入数据的大小和激活函数等。在深度学习中,通常采用重叠的多层卷积神经网络来进行特征提取和分类。 在创建好神经网络模型后,需要对其进行训练。在Matlab中,可以使用trainNetwork函数来训练神经网络模型。需要设置训练数据、验证数据、训练参数等。在训练过程中,可以监控训练误差和验证误差,以便调整神经网络模型。 训练完成后,可以使用测试数据对神经网络模型进行测试,并计算其准确率等性能指标。Matlab中可以使用classify函数对测试数据进行分类。 最后,在深度学习训练的过程中还应该注意一些常见的问题,如过拟合、欠拟合、学习率等。虽然Matlab提供了很多强大的工具和函数来帮助深度学习,但要设计和训练一个效果好的神经网络模型,还需要结合实际问题进行理解和调整。 总之,深度学习grumatlab代码的讲解,需要理解深度学习的原理、Matlab编程和工具包等相关知识。在实际应用中,还需要不断尝试和调整,才能取得好的效果。 ### 回答2: 深度学习人工智能领域广泛应用,其中神经网络算法是深度学习中常用的技术之一。在MATLAB中,可以使用GRU(门控循环单元)神经网络模型进行文本分类等任务。 GRU神经网络模型是一种递归神经网络,可以处理序列数据。与传统的循环神经网络不同,GRU网络使用门控机制来控制前一时刻的状态是否被记住。这可以缓解网络在处理长序列时的梯度弥散问题,提高模型效果。 代码讲解中,首先要准备好数据,包括文本样本和标签。接着,需要对文本进行预处理,包括将文本转换为数字序列、序列对齐、分批等。然后,通过调用MATLAB内置的GRU网络API进行模型搭建和训练,包括网络层设置、初始化、损失函数定义、优化器选择等。最后,利用已训练好的模型进行预测,可输出每个类别的概率或预测结果。 在GRU神经网络模型的实践中,可以调整网络的参数来优化模型效果,包括隐藏层神经元数、学习率、正则化、dropout等。此外,使用预训练词向量也可以提高文本分类的效果。 总体来说,深度学习中的GRU神经网络模型是一种强大的算法,在MATLAB中也得到了很好的支持。掌握其代码实现,对于深度学习的实践非常有意义。 ### 回答3: 深度学习是一种广泛应用于各种人工智能领域的算法。而Matlab是一种常用的科学计算软件,可以很方便地进行各种数学和工程计算。在深度学习领域,Matlab也提供了许多有用的工具箱和函数,可以帮助开发者进行深度学习模型的设计和实现。下面我来简单讲解一下深度学习在Matlab中的实现方法。 首先,要进行深度学习模型的设计,需要使用Matlab中的深度学习工具箱。这个工具箱提供了各种常见的神经网络层,包括全连接层、卷积层、池化层、循环神经网络层等。我们可以使用这些工具箱中提供的函数来构建我们自己的深度学习模型。例如,使用matlab自带的convolution2dLayer函数创建卷积层。 然后,我们需要将数据导入到Matlab中。Matlab可以很方便地处理各种数据格式,包括图像、音频、文本等。我们可以使用Matlab中的imread函数读入图像数据,然后使用matlab中的preprocessImageData函数对数据进行预处理,例如归一化或数据增强等操作。 接着,我们可以使用Matlab的训练函数来训练我们的深度学习模型。Matlab提供了各种常见的优化器函数,例如Adam、SGD等,可以帮助我们优化模型的权重和偏差。模型训练过程中,我们可以使用Matlab中的GPU加速来提高训练速度。此外,我们也可以使用Matlab的evaluate函数来对模型进行评估,例如计算准确率、精度、召回率等指标。 最后,当我们训练好了深度学习模型后,我们可以使用Matlab中的predict函数来对新数据进行预测。Matlab提供了各种预测函数,可以很方便地对图像、语音、文本等数据进行预测。 总之,Matlab提供了许多强大的函数和工具箱,可以帮助我们轻松实现深度学习模型的设计、训练和预测。使用Matlab进行深度学习开发,是一种非常方便且高效的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值