由此非常理想化的看法是如果 模型(左) 能够学到 训练数据(中) 的分布 , 那么应该近似的学到了 真实数据(右) 的分布:近似于近似于
简单的交叉熵,你真的懂了吗?
交叉熵损失函数
pytorch 常用函数参数详解1、torch.cat(inputs, dim=0) - Tensor
参考链接:
[Pytorch] 详解 torch.cat()
Pytorch学习笔记(一):torch.cat()模块的详解
函数作用:cat 是 concatnate 的意思:拼接,联系在一起 。在给定维度上对输入的 Tensor 序列进行拼接操作 。torch.cat 可以看作是 torch.split 和 torch.chunk 的反操作
参数:
inputs(sequence of Tensors):可以是任意相同类型的 Tensor 的 python 序列
dim(int, optional):defaults=0
dim=0: 按列进行拼接
dim=1: 按行进行拼接
dim=-1: 如果行和列数都相同则按行进行拼接,否则按照行数或列数相等的维度进行拼接
假设 a 和 b 都是 Tensor , 且 a 的维度为 [2, 3],b 的维度为 [2, 4],则
torch.cat((a, b), dim=1) 的维度为 [2, 7]
2、torch.nn.CrossEntropyLoss()
函数作用:CrossEntropy 是交叉熵的意思,故而 CrossEntropyLoss 的作用是计算交叉熵 。CrossEntropyLoss 函数是将 torch.nn.Softmax 和 torch.nn.NLLLoss 两个函数组合在一起使用 , 故而传入的预测值不需要先进行 torch.nnSoftmax 操作 。
参数:
input(N, C):N 是 batch_size,C 则是类别数 , 即在定义模型输出时 , 输出节点个数要定义为 [N, C] 。其中特别注意的是 target 的数据类型需要是浮点数,即 float32
target(N):N 是 batch_size , 故 target 需要是 1D 张量 。其中特别注意的是 target 的数据类型需要是 long,即 int64
例子:
loss = nn.CrossEntropyLoss()
input = torch.randn(3, 5, requires_grad=True, dtype=torch.float32)
target = torch.empty(3, dtype=torch.long).random_(5)
output = loss(input, target)
output
输出为:
tensor(1.6916, grad_fn=NllLossBackward)
交叉熵损失函数是什么?平滑函数 。
交叉熵损失函数,也称为对数损失或者logistic损失 。当模型产生了预测值之后,将对类别的预测概率与真实值(由0或1组成)进行不比较,计算所产生的损失 , 然后基于此损失设置对数形式的惩罚项 。
在神经网络中,所使用的Softmax函数是连续可导函数,这使得可以计算出损失函数相对于神经网络中每个权重的导数(在《机器学习数学基础》中有对此的完整推导过程和案例,这样就可以相应地调整模型的权重以最小化损失函数 。
扩展资料:
注意事项:
当预测类别为二分类时,交叉熵损失函数的计算公式如下图,其中y是真实类别(值为0或1),p是预测类别的概率(值为0~1之间的小数) 。
计算二分类的交叉熵损失函数的python代码如下图,其中esp是一个极小值,第五行代码clip的目的是保证预测概率的值在0~1之间,输出的损失值数组求和后,就是损失函数最后的返回值 。
参考资料来源:百度百科-交叉熵
参考资料来源:百度百科-损失函数
Tensorflow四种交叉熵函数计算公式转自:
注意 :tensorflow交叉熵计算函数输入中的logits都不是softmax或sigmoid的 输出 , 而是softmax或sigmoid函数的 输入 ,因为它在 函数内部进行sigmoid或softmax操作
tf.nn.sigmoid_cross_entropy_with_logits(_sentinel=None,labels=None, logits=None, name=None)
参数:_sentinel:本质上是不用的参数,不用填
logits:一个数据类型(type)是float32或float64;
shape:[batch_size,num_classes],单样本是[num_classes]
labels:和logits具有相同的type(float)和shape的张量(tensor),
推荐阅读
- 孩子益智类体能游戏,孩子益智类体能游戏教案
- 包含asp.net于海涛的词条
- pdf转ai如何分层,pdf如何转成ai文件
- 微信下载官方,微信下载官方免费下载2020
- 比较大小函数的定义c语言 c语言中比较大小的函数
- 什么手机那个铃声好听,什么手机铃声好听免费下载
- html5文字方向,html5文字倾斜
- 阜阳直播代运营,视频直播代运营
- python线程调用函数 python的线程如何启用和结束